{"_id":"@fluidframework/test-version-utils","_rev":"286-b99b574b383a26835fa70a7e7f3f13e2","name":"@fluidframework/test-version-utils","dist-tags":{"next":"2.0.0-dev.3.1.0.125672","canary":"2.0.0-internal.3.4.5","latest":"1.4.0"},"versions":{"0.37.0-20427":{"name":"@fluidframework/test-version-utils","version":"0.37.0-20427","author":{"name":"Microsoft"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.37.0-20427","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"3daa443ef2854c0f8ec117553b3c4614eb096608","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.37.0-20427.tgz","fileCount":40,"integrity":"sha512-2wc0yM3Fd66PwbuoLCv5yUfdyXy5x/0NTyjGbHuGqhScuVXE3FuKTBZ1B4f6PXQXEiauNpVgUdWFnW/3KTPlYg==","signatures":[{"sig":"MEQCID4XVRCyTdViR9yVSh+6EDX1+bIEi263jLPEUs5q1oVmAiBndEJ38ooxRWTdiA1cc+RdfoZdZCNoawAXt4HeDWnxNg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":126674,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgW5qjCRA9TVsSAnZWagAAWAkP/jFi32d1DhcXLnxFQvI5\n3jnlrBH1/b72iK87zALJjs3QlJLS4WSRuDYYgLEf9rj/48ZPbl3JGL7w/nEp\ncPPr+3wcDaBlu6z0iZ/n3HlOzm7N1CXGFGXaPzRedL5wRmYcWEEv3LnYcBuI\nWdOBjrS8Q+kdvF68gjYRKYDtzqnz68Tt/AOGvogVm4F4JfW454BolPevgdni\nP2qVK45l1aXZDJUV0sYBLX78CLZdw2I2QzGTGaKVQUg6MU2TnLjCBbVc0jav\nFPxC+gLs7uY/s2wA09LUWjYcamHZ079oZyR86fhys45SRU/CWcGaI7tu1D7f\nP16Xm3qx6Rip4bDrlSUloxYxfEHke//N6H0oh7+WSahcc4nAWjVYStuygy8d\n3Xt0PLrBD/KL0B30f4jTMIyoOSmQdUaWIjWluc3boaPDa0XC3IfWFrX90XVY\ntHuL1AMCY8TgMUqBhse9UGxSkA20uKSQJXRtakMUDQ64JfKBPGS810yys5ce\nYywy032WU+A99fJSaYanuXZ09SYWU7MWpAwW9N61XnV/Ca4Ff/hCE6XBWTpO\nrOVjRHF8yqNEWOFJKqxFZY64GqGYs0JU6UgYWqSTVdWQh6i1IpxmIIBwr54J\n2N/VSdN56im8/Xh6AlmRXdPDTRv0lOQ2vSmf7ZFVolHvoJj/yiwUhMnW7w5a\nUIJ5\r\n=DpBH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.37.0-20427.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.11","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.21.0","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.37.0-20427","@fluidframework/map":"0.37.0-20427","@fluidframework/cell":"0.37.0-20427","@fluidframework/matrix":"0.37.0-20427","@fluidframework/counter":"0.37.0-20427","@fluidframework/aqueduct":"0.37.0-20427","@fluidframework/sequence":"0.37.0-20427","@fluidframework/test-utils":"0.37.0-20427","@fluidframework/common-utils":"^0.29.0-0","@fluidframework/test-drivers":"0.37.0-20427","@fluidframework/core-interfaces":"0.37.0-20427","@fluidframework/container-loader":"0.37.0-20427","@fluidframework/container-runtime":"0.37.0-20427","@fluidframework/driver-definitions":"0.37.0-20427","@fluidframework/ordered-collection":"0.37.0-20427","@fluidframework/register-collection":"0.37.0-20427","@fluidframework/runtime-definitions":"0.37.0-20427","@fluidframework/protocol-definitions":"^0.1022.0-0","@fluidframework/container-definitions":"0.37.0-20427","@fluidframework/datastore-definitions":"0.37.0-20427","@fluidframework/test-driver-definitions":"0.37.0-20427"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^10.17.24","@types/uuid":"^8.3.0","tinylicious":"^0.4.18879","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"0.37.0-20427","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.37.0-20427","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.37.0-20427","@fluidframework/build-common":"^0.20.0","@fluidframework/driver-utils":"0.37.0-20427","@fluidframework/local-driver":"0.37.0-20427","@fluidframework/runtime-utils":"0.37.0-20427","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.37.0-20427","@fluidframework/request-handler":"0.37.0-20427","@fluidframework/telemetry-utils":"0.37.0-20427","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.37.0-20427","@fluidframework/test-loader-utils":"0.37.0-20427","@fluidframework/test-runtime-utils":"0.37.0-20427","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.37.0-20427","@fluidframework/container-runtime-definitions":"0.37.0-20427"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.37.0-20427_1616616099025_0.7005256751320355","host":"s3://npm-registry-packages"}},"0.37.0-20517":{"name":"@fluidframework/test-version-utils","version":"0.37.0-20517","author":{"name":"Microsoft"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.37.0-20517","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"8bfa2453888efdeee62ec4b307df6ea2f7a16537","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.37.0-20517.tgz","fileCount":40,"integrity":"sha512-SsQv6SxBxHXf3HOHcaxMNeTHn+BwhoEgj2Jyx4iA5d3E94iKwN0T9bilYc7spH70bcm+grTfLTHN7mMwJiJi6A==","signatures":[{"sig":"MEUCIGLpCh3UR4t7EH6W4x8TJRlqBJ/HGhSG8G2kaEr5jPiDAiEAn3ZbZ4Q512X17FcGvu4WF1Jy8jBz/lpyCze27bhpIng=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":126674,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXPkKCRA9TVsSAnZWagAAUd4QAJopBViMurXdcgyuAQC+\n8NxBKNMhmvaQNue5wKUlAP3yx7fgOrdo0UB7K55mcBGcN1bzdZ3BedMGrRJl\n5jYuVGlJJInBrV7atRPojhzBzARWrWnZLPQ5fVrHb048OKNOEn814jVmsybQ\nhg4b2zlv/bGJhooCTnHuJ8oh3+28tqoIUAiUIOBK97G8twD2CuTzEB3BdC3g\nPc0Byvub7019134pPUEpEvkxZAQX8JzvmEMobQUumnQp7oA65A2xbcY5biWJ\nNGiI4OQucYdhh089o1Qw0zwGlRnvWg52L1Qf+EbD97NYNvkvwZt2lN69Ur+o\nEbwnKmvTtz+qutlWgefrHy6e5YVo32QlJEGNCu4uLErF6w//6V+5ywvJLlmI\nQ/MtH0Zw3W7DcLaJXIO4V3+q2OokLahhBcYKvEVdVKYz6BGOVvay0rBfMwsL\njac2bQPeOSEmUAKOQliP2nQm031zr01iecvAh1aTaLC196XghyBnbMwq/nAr\n9KKeB84NBWX6j5z8i6qgzE0Ir5+MWs852Itt/ukOpcZd3Q8t0pTtJgw9gNwG\nG/iTA+0eJLN9AYh9hp3lui/DUgy82m1018FOZJ+77GIwpbA8mYx/AVAvAmjD\neeyV34tVpw6vb7nx8yRgK+xSRGV9vHNzxGq4ffzh3p12oO9yOo4tW99tdtCF\njxDz\r\n=cWNC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.37.0-20517.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.11","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.21.0","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.37.0-20517","@fluidframework/map":"0.37.0-20517","@fluidframework/cell":"0.37.0-20517","@fluidframework/matrix":"0.37.0-20517","@fluidframework/counter":"0.37.0-20517","@fluidframework/aqueduct":"0.37.0-20517","@fluidframework/sequence":"0.37.0-20517","@fluidframework/test-utils":"0.37.0-20517","@fluidframework/common-utils":"^0.29.0-0","@fluidframework/test-drivers":"0.37.0-20517","@fluidframework/core-interfaces":"0.37.0-20517","@fluidframework/container-loader":"0.37.0-20517","@fluidframework/container-runtime":"0.37.0-20517","@fluidframework/driver-definitions":"0.37.0-20517","@fluidframework/ordered-collection":"0.37.0-20517","@fluidframework/register-collection":"0.37.0-20517","@fluidframework/runtime-definitions":"0.37.0-20517","@fluidframework/protocol-definitions":"^0.1022.0-0","@fluidframework/container-definitions":"0.37.0-20517","@fluidframework/datastore-definitions":"0.37.0-20517","@fluidframework/test-driver-definitions":"0.37.0-20517"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^10.17.24","@types/uuid":"^8.3.0","tinylicious":"^0.4.18879","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"0.37.0-20517","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.37.0-20517","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.37.0-20517","@fluidframework/build-common":"^0.20.0","@fluidframework/driver-utils":"0.37.0-20517","@fluidframework/local-driver":"0.37.0-20517","@fluidframework/runtime-utils":"0.37.0-20517","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.37.0-20517","@fluidframework/request-handler":"0.37.0-20517","@fluidframework/telemetry-utils":"0.37.0-20517","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.37.0-20517","@fluidframework/test-loader-utils":"0.37.0-20517","@fluidframework/test-runtime-utils":"0.37.0-20517","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.37.0-20517","@fluidframework/container-runtime-definitions":"0.37.0-20517"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.37.0-20517_1616705802364_0.6254306586498983","host":"s3://npm-registry-packages"}},"0.37.0":{"name":"@fluidframework/test-version-utils","version":"0.37.0","author":{"name":"Microsoft"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.37.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"f0ca4074b0190a78479aae9a0e0664ef3b308263","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.37.0.tgz","fileCount":40,"integrity":"sha512-cP8m94042JyfO3fRBozCsdAupn7YSflk06WfCwn9OiT98Pza+r47O3bAA9F35ZqwUdn1AhNJ1J36or9sm0sOAA==","signatures":[{"sig":"MEYCIQCck5i7lO98hSnED+h4zdE4B07vL4kXW2CnMmVCfZnXiwIhAJ5NfwkpcbbuoJYayQ5cMt0aYsZ9HqDLLFyLaXzqBQqw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":126473,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXYf7CRA9TVsSAnZWagAAVR4P+gJnIf1TOvoAFhvTIc4U\nY2cW+4dXzM91o4Az5ycDKzUYR6dcoXlPkzENotVGAR8Fv+Loa61HaBo828jV\nRvLdggWyLJffx1fvUyGuyTyFAnfO0TGKXMTrLI27QIGUsw8eLr1iOhKWqhWr\nq95R95AC5rXKjAit69jP/pjW6bADtcYA8WThcsKQRwjq7MSOXRr747rcr5gx\nP9l7jteRfM7uTimtRlJBTEJOwrHWbxAAgsmPFJ32FfrwBbmgRzzwog4alrzJ\nd6UfA/AKr7U5OtQ57jSkcIXZlysMUD9bh0kgZfS0bzY0yJJ9QGy5DRC6US9w\nDEngzpxNgO3/Ds/WHDj0zpjmyxFWgqKUfGgm4JTTsxdR0/I4MWtZcOMH24Fs\nSihQ+dpe0CTHVQYEbCi7XO26cWIb5Y0gJfTO/xLK4qZ3TJUbCVLtdpyLERIz\nkGWHtKiiWELQvlbW77cgqly8izacnisKqAanv+PAPq5RQq7qLhK1vemFoUdX\nDSIegJ+z0Ql2ykyv6KOhdy9wNG7DEo8ZIVQKNMlpxfdq2UlZ6TKD1fybBSlV\nqTJePvHFKhF0/lxCSaO3W7zutVMxrmJLMHd7gT8K2+chVs5ln1GsaeI5GawD\nuYFSVY3WXjKVTIQhdnfwa9t+T8RfDC5M3r4njKkUmuBhNmZia8gr7hcRtv+2\ncl34\r\n=0fva\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.37.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.11","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.21.0","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.37.0","@fluidframework/map":"^0.37.0","@fluidframework/cell":"^0.37.0","@fluidframework/matrix":"^0.37.0","@fluidframework/counter":"^0.37.0","@fluidframework/aqueduct":"^0.37.0","@fluidframework/sequence":"^0.37.0","@fluidframework/test-utils":"^0.37.0","@fluidframework/common-utils":"^0.29.0","@fluidframework/test-drivers":"^0.37.0","@fluidframework/core-interfaces":"^0.37.0","@fluidframework/container-loader":"^0.37.0","@fluidframework/container-runtime":"^0.37.0","@fluidframework/driver-definitions":"^0.37.0","@fluidframework/ordered-collection":"^0.37.0","@fluidframework/register-collection":"^0.37.0","@fluidframework/runtime-definitions":"^0.37.0","@fluidframework/protocol-definitions":"^0.1022.0","@fluidframework/container-definitions":"^0.37.0","@fluidframework/datastore-definitions":"^0.37.0","@fluidframework/test-driver-definitions":"^0.37.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^10.17.24","@types/uuid":"^8.3.0","tinylicious":"^0.4.18879","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.37.0","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.37.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.37.0","@fluidframework/build-common":"^0.20.0","@fluidframework/driver-utils":"^0.37.0","@fluidframework/local-driver":"^0.37.0","@fluidframework/runtime-utils":"^0.37.0","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.37.0","@fluidframework/request-handler":"^0.37.0","@fluidframework/telemetry-utils":"^0.37.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.37.0","@fluidframework/test-loader-utils":"^0.37.0","@fluidframework/test-runtime-utils":"^0.37.0","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.37.0","@fluidframework/container-runtime-definitions":"^0.37.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.37.0_1616742395330_0.8870945376857702","host":"s3://npm-registry-packages"}},"0.37.1":{"name":"@fluidframework/test-version-utils","version":"0.37.1","author":{"name":"Microsoft"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.37.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"9a93caec84fba3179b931582d432ec0a54ca1496","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.37.1.tgz","fileCount":40,"integrity":"sha512-6pPsDyxRdKBNhdLtld5FtCUmSyuSjD+PB28fp3bcVfNZQOotFmHSM92DhyG4nhvkAY03VO3I3jU3lQKNTz7GrQ==","signatures":[{"sig":"MEUCIA4oxGSZNdfEJ6A0wLBfSwHW7hMJtPgYWgsZMBir3vcAAiEAoRaESpsTlYP1vWWwzlK2B5CQh/gt/qI030xus1DKvh4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":126473,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYiHACRA9TVsSAnZWagAAykwP/jyAttpqxW3YKbPhFVXD\nMirkYQq0dVFt1tsowTp2axpr2HHQox+I6MopiysxhhFM2W0cJnFgitPKxQPY\nIeuTH/baWigrPR3cAxogbaiZy98kLmyE8U400auxv6QI1bTd+zAnTEUzSFyK\nX6uixIUvLG7Y7OYJyutAzMOV3InK56q2LtvJq8amuEbd8KthuUpGDvV5NcYi\ni+eeW3dHASx2IoGFhNSb4pxCxQEK86c5W53Ff9YgEMDJE//LrxEMuSqx1oEf\nFUNRgN+4PjgEyRpPL4kIPW+Xgesbfw7TEUtWggNc7ONCqM+XOWQYd/Z2Do2Q\nuPh94SqvHaM+1RKVI8Wqc6NpvyM6V0/N/IY+OpnVFR1VngPZv7F7svQJVDNd\nSMTnRmNCQY3sMIiy5mcnflE1CHwLMtbzBnLCf9DEVy/FEzu7AheXb/mnL4v3\nAzK0rfyuIxbmX+lIqYnRYKvm7pG2H3X+KF42d7g7jgPTVZ5H174vXGE26Pzc\nEaZNheoWlxl9Y331D0RErXv6CMp6BADxHxeR23Spvyb10elUNOXNfnkwtmgQ\n+TPkMG1Y8bQ3Ge2HWNCl8Kzv73tvhQ+91B5a5pkER5B2tAE7FwVXqaKZJTvV\nT2Lm6ySqMc33BUsb3bbB61soCj1j0NndBxte6Z6cJ/+0xqxs1XsUYvsuUmOD\n4H/m\r\n=KwIm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.37.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.11","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.21.0","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.37.1","@fluidframework/map":"^0.37.1","@fluidframework/cell":"^0.37.1","@fluidframework/matrix":"^0.37.1","@fluidframework/counter":"^0.37.1","@fluidframework/aqueduct":"^0.37.1","@fluidframework/sequence":"^0.37.1","@fluidframework/test-utils":"^0.37.1","@fluidframework/common-utils":"^0.29.0","@fluidframework/test-drivers":"^0.37.1","@fluidframework/core-interfaces":"^0.37.1","@fluidframework/container-loader":"^0.37.1","@fluidframework/container-runtime":"^0.37.1","@fluidframework/driver-definitions":"^0.37.1","@fluidframework/ordered-collection":"^0.37.1","@fluidframework/register-collection":"^0.37.1","@fluidframework/runtime-definitions":"^0.37.1","@fluidframework/protocol-definitions":"^0.1022.0","@fluidframework/container-definitions":"^0.37.1","@fluidframework/datastore-definitions":"^0.37.1","@fluidframework/test-driver-definitions":"^0.37.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^10.17.24","@types/uuid":"^8.3.0","tinylicious":"^0.4.18879","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.37.1","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.37.1","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.37.1","@fluidframework/build-common":"^0.20.0","@fluidframework/driver-utils":"^0.37.1","@fluidframework/local-driver":"^0.37.1","@fluidframework/runtime-utils":"^0.37.1","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.37.1","@fluidframework/request-handler":"^0.37.1","@fluidframework/telemetry-utils":"^0.37.1","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.37.1","@fluidframework/test-loader-utils":"^0.37.1","@fluidframework/test-runtime-utils":"^0.37.1","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.37.1","@fluidframework/container-runtime-definitions":"^0.37.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.37.1_1617043903693_0.29381952082647755","host":"s3://npm-registry-packages"}},"0.37.2":{"name":"@fluidframework/test-version-utils","version":"0.37.2","author":{"name":"Microsoft"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.37.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"ddfca9797740274b49855b4a6e9d26d19a2f6cb3","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.37.2.tgz","fileCount":40,"integrity":"sha512-NrNpTsPrIwZWY8eLiRyXfacwAW9nJpbFwL9J9MlB4rK/D5jtyWqjkDXZqPTiEZpr7ZDDCqTU8JS1Ylqgi11ewQ==","signatures":[{"sig":"MEYCIQC60t0+VABd+aqNnl5cMoccCnntmhrs3nvhekp08LJ6TAIhAIZXFHfoS/nDX7p2M6zjIri8KE4zZdyOnZTg3gjlGi79","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":126473,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYmZJCRA9TVsSAnZWagAAlyMP/1nhhun5NH9GQb3ye5Ul\nwdnW81VHLUroKTY+XjE7IAbjrwnliIIeLiUv+f19VwpgGYm7hqI2OsVi/QYd\neufSR0rcxchVhJfHb1BQciLtAHTGT88gRzvwLpxosct5HCB1bTcuBUMeVfAF\nmb2orTOpDwmRCXD4nKaseDnqP9m6R7BBLnpHg83Jv6KUuMiRM/EToAPqHYL7\nioRGgcUvIF6sE8kePEMKPINOH/hVUsIrc2C8VJ4rH7dFmhTndpEWkfRIyRCt\nNECPYgXaiX1xwbjY+uykOLa7JJC95lB0f6GALA91uf76y+OMYIkXjG6Q5nFR\nFTPTHHn+N/DAhzrO4bPW4EyKKp1mXe6vg6PCgr1SkeVhNFWJNjTAzhHH55+Z\ngtJLX+3F4oFoMvS3MZFJDCcFZxXV+frYAxUCvqtWqc4WDhpcGrXmzsuomO9q\nsW0qKHjE4el7C9+LTJiEhww6o4DKAeLEool5/ydt+N3ojcOAE1FZKU4m5+dd\nXJhcJkXapu+oN3UQ3yd1EP+8BzNzmpNnFv8dgbkUjCSAUVn5wwhkvG27TuIu\ntkU3pK7nR7DuYxFpFG9oPsQxVUVBCVt4hiDICsIx6+wx5nqNYp5Hc363AzdX\njbF8eNzFIRp3zoFYz1fXgqT6Bs+eCJRXnzqH/KCRmx0uUCuXfNyU6WYQeFKk\n+rP0\r\n=Zt0x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.37.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.11","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.21.0","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.37.2","@fluidframework/map":"^0.37.2","@fluidframework/cell":"^0.37.2","@fluidframework/matrix":"^0.37.2","@fluidframework/counter":"^0.37.2","@fluidframework/aqueduct":"^0.37.2","@fluidframework/sequence":"^0.37.2","@fluidframework/test-utils":"^0.37.2","@fluidframework/common-utils":"^0.29.0","@fluidframework/test-drivers":"^0.37.2","@fluidframework/core-interfaces":"^0.37.2","@fluidframework/container-loader":"^0.37.2","@fluidframework/container-runtime":"^0.37.2","@fluidframework/driver-definitions":"^0.37.2","@fluidframework/ordered-collection":"^0.37.2","@fluidframework/register-collection":"^0.37.2","@fluidframework/runtime-definitions":"^0.37.2","@fluidframework/protocol-definitions":"^0.1022.0","@fluidframework/container-definitions":"^0.37.2","@fluidframework/datastore-definitions":"^0.37.2","@fluidframework/test-driver-definitions":"^0.37.2"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^10.17.24","@types/uuid":"^8.3.0","tinylicious":"^0.4.18879","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.37.2","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.37.2","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.37.2","@fluidframework/build-common":"^0.20.0","@fluidframework/driver-utils":"^0.37.2","@fluidframework/local-driver":"^0.37.2","@fluidframework/runtime-utils":"^0.37.2","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.37.2","@fluidframework/request-handler":"^0.37.2","@fluidframework/telemetry-utils":"^0.37.2","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.37.2","@fluidframework/test-loader-utils":"^0.37.2","@fluidframework/test-runtime-utils":"^0.37.2","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.37.2","@fluidframework/container-runtime-definitions":"^0.37.2"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.37.2_1617061449302_0.22805339861904805","host":"s3://npm-registry-packages"}},"0.37.3":{"name":"@fluidframework/test-version-utils","version":"0.37.3","author":{"name":"Microsoft"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.37.3","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"3f66f5c81ea59e5a2a8c32981c399a6bfdcc95a3","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.37.3.tgz","fileCount":40,"integrity":"sha512-PuL0qBQE1bMQxc7pLlZhsL3uHyTgKIhaG6+yfIl+fnliRe1eLdAK2Yfi+dV6HOicEecfgd/H3IN3xQxW3VX4/g==","signatures":[{"sig":"MEUCIQD/OsNdh7R2z8YINUpb99tIcD0Z4oCy9uLQrD+QHsZuoAIgOvc/xyVJ4BLBZ7pishplAbGS6sizicCEE7EZgTyBZYs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":126473,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbKdtCRA9TVsSAnZWagAAbowP/3KpQ5eGiDw0uA59yBZW\nyTonxfQvVsQqfJZhq4LniRe0KxwD+KmJxIkjb6avyveBS5xOL6WV4YsJoleA\nY5qlK+L0rBqV4/uNiLFNPS9TYzmM7wPe9ovRac+AvbdlqShCDSu0q+5sg75p\naEZB0wNt4tN9lDdKKQDo8fgRQ6KgFHvkxTN5fjHtDxvmHAjRblZgTID/eFgd\nuEvWkXLnYZpQyUhjLBsIDjO276Erv0iKRfKUuHhHmk6dVG0uE40FtzlsfSSd\nJ1e4pC+2JO/LvB1TQs+iR+ww+aKkBx0KNLMFWCwl13pU4OJdhZKu6eWMMVXL\nVsIggOdcSuRkrv2rZrh+pyhOsUk239i12NTMAzmZnTZKP5shqvB2DUysJkEB\nePAJXBkbw7C83utx0ep6ojFFHahyQAIuwdsVoz7mXpK5uWKOK+KA8ZglvYlY\nus4gabDWbPi0TQvTNR9oji6IGozqcdbHxhKxfxqkxCp4aW1Ez8TKiEIT6ygJ\n1ZxDzPf2eCOh4rwwDjdtUhhR3sKc7mSU1Yt9YDEzBx/W5EUoB/uRWEPFE5G8\n/wUey3DXvLxy/uMXUMDbxV8N16wsEjSSa/tKex4XLpsyjT9RNTXx8I64XGyv\nXpI6TOkhgbpm1vCPNfj2iHKq6nAyhmkDv2Vr/oDqFTHG8PQnE51UxigzTwu9\n0LbP\r\n=IjNT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.37.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.11","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.0","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.37.3","@fluidframework/map":"^0.37.3","@fluidframework/cell":"^0.37.3","@fluidframework/matrix":"^0.37.3","@fluidframework/counter":"^0.37.3","@fluidframework/aqueduct":"^0.37.3","@fluidframework/sequence":"^0.37.3","@fluidframework/test-utils":"^0.37.3","@fluidframework/common-utils":"^0.29.0","@fluidframework/test-drivers":"^0.37.3","@fluidframework/core-interfaces":"^0.37.3","@fluidframework/container-loader":"^0.37.3","@fluidframework/container-runtime":"^0.37.3","@fluidframework/driver-definitions":"^0.37.3","@fluidframework/ordered-collection":"^0.37.3","@fluidframework/register-collection":"^0.37.3","@fluidframework/runtime-definitions":"^0.37.3","@fluidframework/protocol-definitions":"^0.1022.0","@fluidframework/container-definitions":"^0.37.3","@fluidframework/datastore-definitions":"^0.37.3","@fluidframework/test-driver-definitions":"^0.37.3"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^10.17.24","@types/uuid":"^8.3.0","tinylicious":"^0.4.18879","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.37.3","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.37.3","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.37.3","@fluidframework/build-common":"^0.20.0","@fluidframework/driver-utils":"^0.37.3","@fluidframework/local-driver":"^0.37.3","@fluidframework/runtime-utils":"^0.37.3","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.37.3","@fluidframework/request-handler":"^0.37.3","@fluidframework/telemetry-utils":"^0.37.3","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.37.3","@fluidframework/test-loader-utils":"^0.37.3","@fluidframework/test-runtime-utils":"^0.37.3","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.37.3","@fluidframework/container-runtime-definitions":"^0.37.3"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.37.3_1617733485351_0.07389685866642637","host":"s3://npm-registry-packages"}},"0.37.3-21287":{"name":"@fluidframework/test-version-utils","version":"0.37.3-21287","author":{"name":"Microsoft"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.37.3-21287","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"f4e74f86f20f3263913ee7f2accb7affe3136609","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.37.3-21287.tgz","fileCount":40,"integrity":"sha512-F62xixt4S0FQG1VlaQP+Uho9cR47V/ylq1CYqckCNbz8HRfXYtGOTru8tqBru3US242klfayxNkgJwPo+uyoHg==","signatures":[{"sig":"MEUCIQC3rK1CO1ANY6ypX33DRS37yErLb7sLG1X4GH1D3mRChgIgOq54rBwe1h8vANQ/UnE7LazfmKIpD6jU7Y2vRr6fgmM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":126670,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbiy7CRA9TVsSAnZWagAABGQP/2Hv30SDh+1lrHBeRvrm\n3kUyY4v71NhHbC4jFwLRztAFcqS2wJ/lsZC4rgybAYtdqZ3iqhlnZleyPPh7\nE3TE23w9s7kNk+sYSHD66rhutqkwwjQAn69Hess6cLXydZjQQqLRwdSdx2rk\njJJffAkQLngPXZSNveecamEWAvgfOPjYFns3+x/lZy1s60fXFYLHcBuM3AZn\nJAIjVDgK3cXVox9dhZALHrwqR7+uHA8VF7o9kwYvgleN/GkeSXQZ/L3vpW8E\n2EEG6gubTOmToJ/mlETIsl0D5FHPpVvCXbJ8Pq684RLKJZCBoOzhfyeXfEch\nBVAsExuFKk9z1KbUb4+4UaWb1voraRNrYUew4wtFbIeD4zDSd86k+lEcYmxt\nFUYHGGN8kFzYjg+Ey/0fN63pX8klHQKtze+5C50zbBLqgOfvDG+NkiD/LeQT\niAIiROh5WjDO5jKBm9OGyj8C0bpRWA+P246Hsrgcx8JoRLciZuVTtZpCfXB7\nnL8pTBNeSR9AXdr9i8kBZtaZTnyg3JR6OEv4Poz5QrhmGK6bA1TbgBxNJfqW\nSz7qesc2dEaM8sn2w/vh4J9ilKaIqCRwG3k1XtScGd7d7mAksZ0pDYqgPh7x\nXDXh670HxrSYRgrCAvLHxP3SMFeCq6hoQGUQCCyJQDjiaMLJD2ycfllRHpYa\nmTlf\r\n=lYkU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.37.3-21287.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.37.3-21287","@fluidframework/map":"0.37.3-21287","@fluidframework/cell":"0.37.3-21287","@fluidframework/matrix":"0.37.3-21287","@fluidframework/counter":"0.37.3-21287","@fluidframework/aqueduct":"0.37.3-21287","@fluidframework/sequence":"0.37.3-21287","@fluidframework/test-utils":"0.37.3-21287","@fluidframework/common-utils":"^0.29.0","@fluidframework/test-drivers":"0.37.3-21287","@fluidframework/core-interfaces":"0.37.3-21287","@fluidframework/container-loader":"0.37.3-21287","@fluidframework/container-runtime":"0.37.3-21287","@fluidframework/driver-definitions":"0.37.3-21287","@fluidframework/ordered-collection":"0.37.3-21287","@fluidframework/register-collection":"0.37.3-21287","@fluidframework/runtime-definitions":"0.37.3-21287","@fluidframework/protocol-definitions":"^0.1022.0","@fluidframework/container-definitions":"0.37.3-21287","@fluidframework/datastore-definitions":"0.37.3-21287","@fluidframework/test-driver-definitions":"0.37.3-21287"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^10.17.24","@types/uuid":"^8.3.0","tinylicious":"^0.4.18879","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"0.37.3-21287","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.37.3-21287","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.37.3-21287","@fluidframework/build-common":"^0.20.0","@fluidframework/driver-utils":"0.37.3-21287","@fluidframework/local-driver":"0.37.3-21287","@fluidframework/runtime-utils":"0.37.3-21287","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.37.3-21287","@fluidframework/request-handler":"0.37.3-21287","@fluidframework/telemetry-utils":"0.37.3-21287","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.37.3-21287","@fluidframework/test-loader-utils":"0.37.3-21287","@fluidframework/test-runtime-utils":"0.37.3-21287","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.37.3-21287","@fluidframework/container-runtime-definitions":"0.37.3-21287"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.37.3-21287_1617833146650_0.4763092335344892","host":"s3://npm-registry-packages"}},"0.37.4":{"name":"@fluidframework/test-version-utils","version":"0.37.4","author":{"name":"Microsoft"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.37.4","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"fb472033572cd924b0b458d0d82c9c303c30a774","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.37.4.tgz","fileCount":40,"integrity":"sha512-IcrF/hGIfaAK90lcsRpQSmc31wDgdag4avIKqO9Qdn0s6+xET4+esp4UzDay6HwYBf4vZgJpRdKSeI1b8oCnuw==","signatures":[{"sig":"MEUCIFfAiXhlYNIkHPm/+npUr7X6dDvnRwqZP9641pU2tIDzAiEAnWJvIkNDs1unCzAW5QaDE3S79jufCk3z/5ipMVVNw9E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":126473,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgb20ZCRA9TVsSAnZWagAA3zgP/04Ve5ml2Vs4Z5xJU9nJ\ngNVrl6XzWoOcajrJZAULB2BWGUT078jFNe0XhUjSVwAh06JgpZ4iexvPMrtF\nLK8QfF6inivk27x3GHUdZqQVAXReAVfA7x0BKz6fNLZ4FEiz/LiH0jrJ6LCl\n5b+67xm/ZJm/tykfpg3DhI3oq5uLxMYu5uW8k7qurNbS7xP9gJwrZMyekffv\nd77y76JPNQEkET/b0GhFyy3gZTgEXapobDWyW/X18LtmS9Wq6DS0Q24AGKYC\nwH0EvURAJI6HJdQlC2flLg4E+Z+0bUvskyqeBCmoqIMCx3F6hClA78LOrneu\noYLHApVPQf2KaSH0k/kSvSLJr350U9F0TvJwqPcNvXNa1j/s+WYMRGFQfitO\nqPsKX9A+WmUVrpbnqcDb0Vy08RWu/xrt8Abq9abzj9PRvphFTt9PSZYkZZSo\nYWetdiRIWuggLiMcdz54ipflEA/s8tkm30Kno13kkk73ylFQTtLBf6f1DUUy\n6twQDpO7cRiYI0c8yhVUBAFf2NGyIG/8oLbcXRIxt8VH5NFLoJcXJdoz2eDn\n1bdvocOEUyrJeVHcBkMTPPm3v5MPjwMmfv6Xhu9CdGGebOY/W4d987A7nTE2\nJRf5Wiy1Jsi+Yu55DDcNQ765Lxx1cqRLH24wBbUjk2PFmBkKbRIw/O4pTFwV\n1ewy\r\n=johc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.37.4.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.37.4","@fluidframework/map":"^0.37.4","@fluidframework/cell":"^0.37.4","@fluidframework/matrix":"^0.37.4","@fluidframework/counter":"^0.37.4","@fluidframework/aqueduct":"^0.37.4","@fluidframework/sequence":"^0.37.4","@fluidframework/test-utils":"^0.37.4","@fluidframework/common-utils":"^0.29.0","@fluidframework/test-drivers":"^0.37.4","@fluidframework/core-interfaces":"^0.37.4","@fluidframework/container-loader":"^0.37.4","@fluidframework/container-runtime":"^0.37.4","@fluidframework/driver-definitions":"^0.37.4","@fluidframework/ordered-collection":"^0.37.4","@fluidframework/register-collection":"^0.37.4","@fluidframework/runtime-definitions":"^0.37.4","@fluidframework/protocol-definitions":"^0.1022.0","@fluidframework/container-definitions":"^0.37.4","@fluidframework/datastore-definitions":"^0.37.4","@fluidframework/test-driver-definitions":"^0.37.4"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^10.17.24","@types/uuid":"^8.3.0","tinylicious":"^0.4.18879","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.37.4","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.37.4","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.37.4","@fluidframework/build-common":"^0.20.0","@fluidframework/driver-utils":"^0.37.4","@fluidframework/local-driver":"^0.37.4","@fluidframework/runtime-utils":"^0.37.4","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.37.4","@fluidframework/request-handler":"^0.37.4","@fluidframework/telemetry-utils":"^0.37.4","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.37.4","@fluidframework/test-loader-utils":"^0.37.4","@fluidframework/test-runtime-utils":"^0.37.4","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.37.4","@fluidframework/container-runtime-definitions":"^0.37.4"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.37.4_1617915160586_0.4182677393949663","host":"s3://npm-registry-packages"}},"0.38.0-21934":{"name":"@fluidframework/test-version-utils","version":"0.38.0-21934","author":{"name":"Microsoft"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.38.0-21934","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"a0f2de4bfde71842ac64bd7383fdedee6c0fb20b","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.38.0-21934.tgz","fileCount":40,"integrity":"sha512-EyTi8Yqn4uPGwl6K4IgTQ2TyV2pw0KWG57r0emYiWVDDX7bre8PxV3oXf3aST4Fxgy8rypYck0WjGxwxoGVR6Q==","signatures":[{"sig":"MEUCIHa5JIdHD1OoVqvN9nB5pcr206lYr2rCh+OoJzmbJXxpAiEA29+aZrE4PUA757V/VgdM8ILB3uYiK1p1jXruN9Y5tcg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127395,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdzQjCRA9TVsSAnZWagAAGKYP+wZlBpAY9WI0Mn2GZ+3t\nvmRfeB/h2+PVo8p8FDZcVT8UDFpDd8PmPpd4Feb2ooN/oZnBIe4K96xW6w2n\n+kr1DV/yIClzO7XVbg6GNYbgoOE4jZtInqMsLZORn5al60e4pbKFMURC0Cdw\nWlCxqvqQrElXMgTu+qFoobtdcxBdSSaF3Cn9H+KHk3yLm6VeUzcA2JA8hqeb\nzJsJaXyNijiu17KPR2Nsb7fcNQp4r+dvXLzXZ5l6yuE+IxAWXELBoAeggm3+\neWpHXDyvN3MU8wMw/fPXnH+8AlChphOfPehJBqkDvs6xsjSjlA3Mp2TtNZYG\nQzElCmqlQzBa/Q/paqQF1ZUBPfcgONMWkblzpvskw7FnBzIAH3IMvD9bW0H4\nw8FNqKNT1qzYRknwr1ZXJga9lM6lZSTZUrWHzbYgMybfDdIkH9o/aqZ3lj12\nscJhIiCaO2XTf2mZ8pEa6cBdu3YBwx1yn4rOkr6baq6TQ/IeyjPsOEsufoRP\nii84zHwv+0Ln2wpn097uFr17cyvBu48ke5lRxB+znmYRZJm4T8Rf70y1UQGl\nQs1G2FzrzlqVMo+7GqByxncZmXW8hbSnuwuYztHIkRyg4oVAMub6YDca5iWd\nBshVJthmxBgIroZ2vPKCgdJS2uXeuZI7To1fnfcCtCX9zkjulUVSRkICDaBc\n+gUf\r\n=NQgY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.38.0-21934.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.38.0-21934","@fluidframework/map":"0.38.0-21934","@fluidframework/cell":"0.38.0-21934","@fluidframework/matrix":"0.38.0-21934","@fluidframework/counter":"0.38.0-21934","@fluidframework/aqueduct":"0.38.0-21934","@fluidframework/sequence":"0.38.0-21934","@fluidframework/test-utils":"0.38.0-21934","@fluidframework/common-utils":"^0.29.0-0","@fluidframework/test-drivers":"0.38.0-21934","@fluidframework/core-interfaces":"0.38.0-21934","@fluidframework/container-loader":"0.38.0-21934","@fluidframework/container-runtime":"0.38.0-21934","@fluidframework/driver-definitions":"0.38.0-21934","@fluidframework/ordered-collection":"0.38.0-21934","@fluidframework/register-collection":"0.38.0-21934","@fluidframework/runtime-definitions":"0.38.0-21934","@fluidframework/protocol-definitions":"^0.1022.0-0","@fluidframework/container-definitions":"0.38.0-21934","@fluidframework/datastore-definitions":"0.38.0-21934","@fluidframework/test-driver-definitions":"0.38.0-21934"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"0.38.0-21934","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.38.0-21934","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.38.0-21934","@fluidframework/build-common":"^0.21.0-0","@fluidframework/driver-utils":"0.38.0-21934","@fluidframework/local-driver":"0.38.0-21934","@fluidframework/runtime-utils":"0.38.0-21934","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.38.0-21934","@fluidframework/request-handler":"0.38.0-21934","@fluidframework/telemetry-utils":"0.38.0-21934","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.38.0-21934","@fluidframework/test-loader-utils":"0.38.0-21934","@fluidframework/test-runtime-utils":"0.38.0-21934","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.38.0-21934","@fluidframework/container-runtime-definitions":"0.38.0-21934"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.38.0-21934_1618424866994_0.528302152863841","host":"s3://npm-registry-packages"}},"0.38.0-22000":{"name":"@fluidframework/test-version-utils","version":"0.38.0-22000","author":{"name":"Microsoft"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.38.0-22000","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"232f9a5ed0f95f43a3591e8a3f0f660720edcae5","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.38.0-22000.tgz","fileCount":40,"integrity":"sha512-G9Pq3FFzgD519ipKwcV/UmW2G6izRjhCxmPkZA5MWSwfyFnWVDBiOh6zPtsh+K0t7dwOxEgCscxDgDYQ5rvERA==","signatures":[{"sig":"MEQCIEFbcjRJTgZKf7mCbRbOP+GPX8rhHznFBBOJwgmTT0O3AiAVpqMePs3thw96vo0XgV1InTRtnUf6C6o78dwmyNm1rg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127395,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgd4jNCRA9TVsSAnZWagAAxEoP/iNjiPWwrFxYuTZC4Ly0\nS04nLp6DsY+EQiYBQykQI53ZrevnX/kSYHLnD/smsLOssLpybWRjgckm7LiO\n9izz+ahdObA27s7KsR14zL84zmUieQrCMqY677IgrDITTZEo/zWTUa/ehZbK\n6nD7mrO4Ksex1c4iMsdOPaJL+5qDflPJ1jf/owMhc8Mo2c9BC8szt/oWoYbk\nG83VP9iKZOViyXb4GWMzibs/Lysu3G8tr7t9p6OscTG3Nax2B+8jr0N8vL2z\nwVCYsIvmAt/pWS23FvIUIImS51gxpIr1RrpHPXDLKnLAZR3N1acL1hw4epN2\nUnAWvKRcmUorgFl9dwouSlnOKteC9Sgj87CoxUFAUZtTxqYIa22gQ+0U8Fwu\nS5lFTU2WqtH7shjv1MboFsbbSVANMMdxmYPTRcVvZvpboYOSy9UEkfx0USNs\nBUbR59XipdILgUtjLFjklgtjrKtoXa/5SPKlrkYuvwqPWxvnIo5y3tydtkFz\nD5R+MIZGcJSKMrK3JTyuqQIJGtOotoCd0TrqoDX/nY6z5oRp/IhhmykdHQsl\nDjwjjk1jD0JkxOzZQltDlQTG+XLZOO4ktYuQRSuj46e9FdQnr35biWQuGMfy\nleyWqUpcRRWTddlmVbtBeYcON8+/sBDinRknNIZkVDLlxpoL5whNqj8Wmq1r\nD2kK\r\n=4DWB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.38.0-22000.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.38.0-22000","@fluidframework/map":"0.38.0-22000","@fluidframework/cell":"0.38.0-22000","@fluidframework/matrix":"0.38.0-22000","@fluidframework/counter":"0.38.0-22000","@fluidframework/aqueduct":"0.38.0-22000","@fluidframework/sequence":"0.38.0-22000","@fluidframework/test-utils":"0.38.0-22000","@fluidframework/common-utils":"^0.29.0-0","@fluidframework/test-drivers":"0.38.0-22000","@fluidframework/core-interfaces":"0.38.0-22000","@fluidframework/container-loader":"0.38.0-22000","@fluidframework/container-runtime":"0.38.0-22000","@fluidframework/driver-definitions":"0.38.0-22000","@fluidframework/ordered-collection":"0.38.0-22000","@fluidframework/register-collection":"0.38.0-22000","@fluidframework/runtime-definitions":"0.38.0-22000","@fluidframework/protocol-definitions":"^0.1022.0-0","@fluidframework/container-definitions":"0.38.0-22000","@fluidframework/datastore-definitions":"0.38.0-22000","@fluidframework/test-driver-definitions":"0.38.0-22000"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"0.38.0-22000","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.38.0-22000","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.38.0-22000","@fluidframework/build-common":"^0.21.0-0","@fluidframework/driver-utils":"0.38.0-22000","@fluidframework/local-driver":"0.38.0-22000","@fluidframework/runtime-utils":"0.38.0-22000","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.38.0-22000","@fluidframework/request-handler":"0.38.0-22000","@fluidframework/telemetry-utils":"0.38.0-22000","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.38.0-22000","@fluidframework/test-loader-utils":"0.38.0-22000","@fluidframework/test-runtime-utils":"0.38.0-22000","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.38.0-22000","@fluidframework/container-runtime-definitions":"0.38.0-22000"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.38.0-22000_1618446541304_0.7526194341878678","host":"s3://npm-registry-packages"}},"0.38.0-22040":{"name":"@fluidframework/test-version-utils","version":"0.38.0-22040","author":{"name":"Microsoft"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.38.0-22040","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"45b9bfec6e765deebbb279dbaf93711b3fecd50b","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.38.0-22040.tgz","fileCount":40,"integrity":"sha512-Iqkw+jhDEMUpqeYJpUfUrhurseaqCIoUYWFciYKFmCnr15859+9Z0GFCqKITBsY+SFD0IuZk0lfJeyN/QlSalA==","signatures":[{"sig":"MEUCIDp2mc6iRZtOg+r93yxgaM1yHfkmVIAh5f+EjRRbm9xiAiEAwJxGxn3LBrihZ6fqM7fhS0jIE1+Qs3CYmfPbHhL/v3A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127395,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeHEwCRA9TVsSAnZWagAA+WgP/22JIJMpLY9pKB6KEneH\naQcP4R+6wwXS7YXHzZuX9ol+6z15TN8bkNm+rCGO+liUe/iLbxgwf+lbauKX\nHKAqwZlVUuHa1Nxop9tbmEdnpVpuVe0ZEHUErfQpBX8mhEQWTzUuAtfoA6q/\nv9mPzK/hjncuCPvrWy/KbfB+qHzT+pIURwacX3Qf2dj0JwY4qAfCLYg3CWJ9\ne/Js7KXshPkWOCwivwMOLtg6wRdjliUb5AucxkvEtlmrtc5VGmT3wibtHQ9V\nHoMMEt8A8HRcx+E6h+3o2j6MLKIKEJOGoscBzbJ3GFLqVap9RJAr8FlIyIqs\nPg/TVCcJ38Jrv4v/i+17rQMTbIA/JezY4E3KqSZe64l7mwLjjpTxcvRICfTR\nCIi56EJ3+4o0zfig2mfEdgvTFuO1NdFE7J7mYwyMWswPWZrezoWw0f5v0EdH\nosesfMssbmFUmhxFIRn1mLaarRwrJsIamCQetJ9XljXiZSKBFeewECb9xpTO\nulS8QOrP2eQ4240nTgtphhzvF36Bq9k3ozpUvfOJXUNTuyHb/JaEdU+lTrnO\nuTOD45zcEhtfa52s3UhTo7VSFyn83gzfPeem9NoiP4ACcRcy0/KuAOQGKJyV\nduopM+93ins/Ue+bIRWAjtRXXEhDE3KtkzRft2KiJOyl9RUp7NspS65AdgqY\nkOVP\r\n=shtH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.38.0-22040.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.38.0-22040","@fluidframework/map":"0.38.0-22040","@fluidframework/cell":"0.38.0-22040","@fluidframework/matrix":"0.38.0-22040","@fluidframework/counter":"0.38.0-22040","@fluidframework/aqueduct":"0.38.0-22040","@fluidframework/sequence":"0.38.0-22040","@fluidframework/test-utils":"0.38.0-22040","@fluidframework/common-utils":"^0.29.0-0","@fluidframework/test-drivers":"0.38.0-22040","@fluidframework/core-interfaces":"0.38.0-22040","@fluidframework/container-loader":"0.38.0-22040","@fluidframework/container-runtime":"0.38.0-22040","@fluidframework/driver-definitions":"0.38.0-22040","@fluidframework/ordered-collection":"0.38.0-22040","@fluidframework/register-collection":"0.38.0-22040","@fluidframework/runtime-definitions":"0.38.0-22040","@fluidframework/protocol-definitions":"^0.1022.0-0","@fluidframework/container-definitions":"0.38.0-22040","@fluidframework/datastore-definitions":"0.38.0-22040","@fluidframework/test-driver-definitions":"0.38.0-22040"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"0.38.0-22040","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.38.0-22040","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.38.0-22040","@fluidframework/build-common":"^0.21.0-0","@fluidframework/driver-utils":"0.38.0-22040","@fluidframework/local-driver":"0.38.0-22040","@fluidframework/runtime-utils":"0.38.0-22040","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.38.0-22040","@fluidframework/request-handler":"0.38.0-22040","@fluidframework/telemetry-utils":"0.38.0-22040","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.38.0-22040","@fluidframework/test-loader-utils":"0.38.0-22040","@fluidframework/test-runtime-utils":"0.38.0-22040","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.38.0-22040","@fluidframework/container-runtime-definitions":"0.38.0-22040"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.38.0-22040_1618506032277_0.617305266465743","host":"s3://npm-registry-packages"}},"0.38.0":{"name":"@fluidframework/test-version-utils","version":"0.38.0","author":{"name":"Microsoft"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.38.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"970bf3dd95c5df6f15e74dccdbc53dc15e0fdd27","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.38.0.tgz","fileCount":40,"integrity":"sha512-NPzzghnkQk2H3KdV11aKACfpqcS4MIneTTKinAUS+XFEdbisMudVCBNft+JfenXk8PiDE5MrjUvvL80+ByQiFw==","signatures":[{"sig":"MEUCIQDOLnRnMfpuJGOdcDE2qAYYmbWIFXV8pkMWhFKxfSh6RgIgH+/AhN1s0ABc5h4Knf0uWyTewAulofLl98Z12UZn+Ho=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127192,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeND7CRA9TVsSAnZWagAAE+AP/0n+MRYNLz/0eZFXNfe5\nbmmmIbaywV84bajQdgrPFJzZ4IYNKxtOKaqmCqxpQC7ZIMq3P5ldJD562ypG\nTPAylSb5dPoCKJVBZbyI52vYiGumHiL6QVt7LhPGtfrfewQei3JQM/ltF3U4\nCJK+LKp/M+rc+L/9IWlq4c9GGw9W7ncyZC371YB6QXJdFaBY5xzWPL/YdC5e\nr5kgZ0XOJlRCmsKTTBszO+YweqUWk8bmTn33LvGgJd0rSS7F2JO22o+RHTw8\naBAdPMwbRPyQrvUEzXhsD2SRLkAyJF55D5/Ws6E3oTtNgQ1EKp8hOgHSvVbk\niWYwo6pAr32kPus7aDDk4HZmvHdd3FjI9oC9Tn3ZZeIWnw/W7JB6eGVxEKrz\nGWTTpWGxQREQJXUJIYgrf214G/OHag7gpN4un8I8h4D9mGugUUbmV0HHI4xs\noDn1Sxc430kCQsrIlYk/8R7vrDYgeP54kBs2uOAPPHQ2+xAIOu+6gFJT8Cxy\nn98am9iCfCu9+v24uJNzo5AXJCgEzUL5nJkpZFdHbbTWML7FteZ8eMlFOoiz\nOVjKAjc40G2Y6YYF5cS84VHdWenKg9DHRa/2RmHeFy4pMwy02gd1vjHDMqx5\nseBZzWHKbYmTwzfJBinAqaOSw6BNJu+mfGpmd6X/1Ml9jcUOKe4DcrKwX0fG\nJESo\r\n=2nam\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.38.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.38.0","@fluidframework/map":"^0.38.0","@fluidframework/cell":"^0.38.0","@fluidframework/matrix":"^0.38.0","@fluidframework/counter":"^0.38.0","@fluidframework/aqueduct":"^0.38.0","@fluidframework/sequence":"^0.38.0","@fluidframework/test-utils":"^0.38.0","@fluidframework/common-utils":"^0.29.0","@fluidframework/test-drivers":"^0.38.0","@fluidframework/core-interfaces":"^0.38.0","@fluidframework/container-loader":"^0.38.0","@fluidframework/container-runtime":"^0.38.0","@fluidframework/driver-definitions":"^0.38.0","@fluidframework/ordered-collection":"^0.38.0","@fluidframework/register-collection":"^0.38.0","@fluidframework/runtime-definitions":"^0.38.0","@fluidframework/protocol-definitions":"^0.1022.0","@fluidframework/container-definitions":"^0.38.0","@fluidframework/datastore-definitions":"^0.38.0","@fluidframework/test-driver-definitions":"^0.38.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.38.0","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.38.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.38.0","@fluidframework/build-common":"^0.21.0","@fluidframework/driver-utils":"^0.38.0","@fluidframework/local-driver":"^0.38.0","@fluidframework/runtime-utils":"^0.38.0","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.38.0","@fluidframework/request-handler":"^0.38.0","@fluidframework/telemetry-utils":"^0.38.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.38.0","@fluidframework/test-loader-utils":"^0.38.0","@fluidframework/test-runtime-utils":"^0.38.0","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.38.0","@fluidframework/container-runtime-definitions":"^0.38.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.38.0_1618530555114_0.8623293958034282","host":"s3://npm-registry-packages"}},"0.38.1":{"name":"@fluidframework/test-version-utils","version":"0.38.1","author":{"name":"Microsoft"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.38.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"8169c53ae37f56abea846f3653ae7e9c5a7a6c27","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.38.1.tgz","fileCount":40,"integrity":"sha512-NpfvKfmMqjaSIF02kKwfWHMNuGq8C84DRWppA/Bc3vmwEw84DZgJTse9QbThVNczR7c+KuwjEzDFJnePcHQX3A==","signatures":[{"sig":"MEYCIQDrbP9AtXMAvev6Yc8ODa4f69fU5xJSeOYl++sQaQwZkwIhANbJQDpSYL907hygLIcm7uyQCRQ0bEt9WhSH/CpnkPqm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127192,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgf3B+CRA9TVsSAnZWagAAZpsP/0F+oWzBpiotxpqINT7f\no5i1KuI1NdazSuREnoHkRFJBkdUNbAHQLuyskziaO7gbqoca8CWHKyUUe/s5\n8FP3HK7pxHyfnteenuF39e9ko+sLqz2GhtSEbC1dyvmxxsL9iOh6haeFMyKL\ndtlHiUnWHfQpokolpN/L0Zp+RrivH67m4/JLwH3e4p0TL7dGx/bEhsUnVE50\nV0WZA7+MXIgzbMZHMK4B4qQAee7yodzT0MqQHnHLmZJz/PxtL8eZlD9kbeyM\nUSL7BrPy0XxYL4nBb3ce70NBPMoxZ3VbYZzra+GvSMAKxufRmAiB8E8jhFns\nZfg4cNJsJv9ZmNZ51XzEJ0n6mVSUQ+DkjTrcEq4sJcmypl3rKixAXyU7fB7K\n5u2XnNBMsr/3KLr3fxUNyMT2Aa2kTvm6cw3MHTfZV0IDt3wpdn/0piIyEWwU\nGomdxtH4TUrVCYjYA/QbUXApBNMBoRcOjLTIdg+agLaZ1/yJLwRN7Mc8jqtc\nlnKmriAOa7pfWPV7sqKJZKntlEuD6/x6eDOVKxM00XTOoApe6krZQ4JpKCxh\niS2tayGGF4VNtVMobkG8IV60omffbpS4Sv4VMDtMdr7v64Q49l8IjB+yP88o\nuYmITD3k+4YbantZxMtyUTYiIpRt7Qkya28SBrBLiNHoA/f5Cy+L5vSrU8sY\nL3uG\r\n=3XhG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.38.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.38.1","@fluidframework/map":"^0.38.1","@fluidframework/cell":"^0.38.1","@fluidframework/matrix":"^0.38.1","@fluidframework/counter":"^0.38.1","@fluidframework/aqueduct":"^0.38.1","@fluidframework/sequence":"^0.38.1","@fluidframework/test-utils":"^0.38.1","@fluidframework/common-utils":"^0.29.0","@fluidframework/test-drivers":"^0.38.1","@fluidframework/core-interfaces":"^0.38.1","@fluidframework/container-loader":"^0.38.1","@fluidframework/container-runtime":"^0.38.1","@fluidframework/driver-definitions":"^0.38.1","@fluidframework/ordered-collection":"^0.38.1","@fluidframework/register-collection":"^0.38.1","@fluidframework/runtime-definitions":"^0.38.1","@fluidframework/protocol-definitions":"^0.1022.0","@fluidframework/container-definitions":"^0.38.1","@fluidframework/datastore-definitions":"^0.38.1","@fluidframework/test-driver-definitions":"^0.38.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.38.1","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.38.1","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.38.1","@fluidframework/build-common":"^0.21.0","@fluidframework/driver-utils":"^0.38.1","@fluidframework/local-driver":"^0.38.1","@fluidframework/runtime-utils":"^0.38.1","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.38.1","@fluidframework/request-handler":"^0.38.1","@fluidframework/telemetry-utils":"^0.38.1","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.38.1","@fluidframework/test-loader-utils":"^0.38.1","@fluidframework/test-runtime-utils":"^0.38.1","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.38.1","@fluidframework/container-runtime-definitions":"^0.38.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.38.1_1618964605694_0.5363035392409534","host":"s3://npm-registry-packages"}},"0.38.2":{"name":"@fluidframework/test-version-utils","version":"0.38.2","author":{"name":"Microsoft"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.38.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"0b98539960bc3f3176511b9d56f833c57cd883ce","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.38.2.tgz","fileCount":40,"integrity":"sha512-WuIabnkHYuzWIVaFHxZu1emaiDPNdjIkhRN1bnhkdveJoz16NXAj5/OOrWyQrT++P8wEhZ/xARJmFniH2iRsAg==","signatures":[{"sig":"MEUCICZguiXBej9rkiGnWlArwxnRnJrjwUU6X44hxM1medwiAiEAqP7s8NJV7+0aVK4c1xxpE+CAVDg9c9JovNm8rTB4Bdw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127192,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggKB0CRA9TVsSAnZWagAAsdwP/0X+hwuTJSNsOyl+Zgxs\nCvckGGbYcOgKZq+WhBnvp2AEvwKmq+yCcN+Pf8v1cBodmYX40Nz1PBUxjMuT\n9N/wRgNGqGGuuF0WW1MClcBjPOl0dlLrwCwDKsXSkWG1vo9uMc2wUtziC+/Z\ni1Y/XBe0VmgbAaz60uMhgrqKecmbnZ38fGZ3X8QgPL0a/1G6DlYBmheEmK5R\nEdXZw1bkyhbW8J6Djw0AgibvEvIHkOXY06VTvI+yh6myXC7q+mf3GI3kyFAb\nJjoiwAbOZgRVSBryEnugC0MW65Tuqj6dgVatOGCXSqSrNQaKqH7SfPbvMxtr\nYyQupJcFF/pmjbPcSZKsIvWt1FE9q+XOuBXM5WE6gz3cIep3N9qHXmX2TKmu\nR8afYovL+C3qVAXqNiYDSRQ6lojWdIPTWhmVlSZO/As0+rXseR+Zgx1AJyYl\n2pFKoEqtpQFixZTj23kfpkdA5RvdDUbf/b2PzvRgZRBxi1MQ42gQM4hGQTVX\nnfSRZACXkpA7I+EoUM12AgkkEHGCFFX0Bakz4LvDwTn0aqbRT8YSivEWqEP/\nHDfMfM9dyCv6/HAAxxx3Pj+S51zYsQmu3+uNfAqSvX/A65UIkbf/gLTfaugd\nf3q1JAgHdeNzO9UedqT2GBMhpgLMBsEov9phcDPy7krDKhiEFXw4dJvVBkKb\nCQB9\r\n=dmcs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.38.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.38.2","@fluidframework/map":"^0.38.2","@fluidframework/cell":"^0.38.2","@fluidframework/matrix":"^0.38.2","@fluidframework/counter":"^0.38.2","@fluidframework/aqueduct":"^0.38.2","@fluidframework/sequence":"^0.38.2","@fluidframework/test-utils":"^0.38.2","@fluidframework/common-utils":"^0.29.0","@fluidframework/test-drivers":"^0.38.2","@fluidframework/core-interfaces":"^0.38.2","@fluidframework/container-loader":"^0.38.2","@fluidframework/container-runtime":"^0.38.2","@fluidframework/driver-definitions":"^0.38.2","@fluidframework/ordered-collection":"^0.38.2","@fluidframework/register-collection":"^0.38.2","@fluidframework/runtime-definitions":"^0.38.2","@fluidframework/protocol-definitions":"^0.1022.0","@fluidframework/container-definitions":"^0.38.2","@fluidframework/datastore-definitions":"^0.38.2","@fluidframework/test-driver-definitions":"^0.38.2"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.38.2","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.38.2","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.38.2","@fluidframework/build-common":"^0.21.0","@fluidframework/driver-utils":"^0.38.2","@fluidframework/local-driver":"^0.38.2","@fluidframework/runtime-utils":"^0.38.2","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.38.2","@fluidframework/request-handler":"^0.38.2","@fluidframework/telemetry-utils":"^0.38.2","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.38.2","@fluidframework/test-loader-utils":"^0.38.2","@fluidframework/test-runtime-utils":"^0.38.2","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.38.2","@fluidframework/container-runtime-definitions":"^0.38.2"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.38.2_1619042419687_0.2999388662601665","host":"s3://npm-registry-packages"}},"0.38.3":{"name":"@fluidframework/test-version-utils","version":"0.38.3","author":{"name":"Microsoft"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.38.3","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"d656a1f4c32dd27ee82b7cd53c79d7d6e8c16bf0","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.38.3.tgz","fileCount":40,"integrity":"sha512-tWF6oL7f3iqY88hMVeRA2I/FUtaA5VMh/71VREYyhT9DxbtoGp1foAsI5MrGUv2RyOCHZND9ghiMxv1CiUGl7w==","signatures":[{"sig":"MEYCIQDVx9Qmyonf8Phq7aW04qzztxLXma6pOwoGWF4nH6vNWgIhAJQIpnRzV+Q9V6h+vOqSTWWPpMH70qeIYWRg6a449awu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127192,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggxtCCRA9TVsSAnZWagAA9pwQAI3+AsyUe48wY36Qa2qg\nKI2+Asgo+mr7KMTXzs2A9nqfzO0Op3P54V3AsaGEzCkEFFX3tar2Aa5PrVGo\nuacvyRPorbnB/Qwdabh+woWbL8TkMxI5+IWgihBSggdqj7CUycnxCbp0+gt8\nN5a573oY8FGPGIylXv0SfpX1Rj/eQohShU2aU/0xpiB8EoY7922WvDyY/Ofm\nT7SbuWlJUiSswfmOi78b9oLNUndPSqOWhZMrMxkcd+BJlbnovUy08uh2x36c\n9EAbCP24h+uwnTuPSspKeA9/N94yaSAjqNkEIAwwJroptPy1NBgrNCuU/4t7\ntTBctjX5EqV0ijHA8JJhfrC8Z7PTAjKxK1DnFT7GjzY1oCBIo22N3XeWMZd5\nXwSSqMx6KNWSkYdp7P2AhyjHCJBYmb3oR7/SHYvRZbh6gZDIVYU2f44GTPef\nI7yUf9qrjmLgJLZYSACilVMVLuZ0ahW3cA3xx0m8G/DMti//JM+Z5bPeTVG+\nwGIeh+Y/hlhXe4YSB8O70Ue5uk1YZ5g0czExt6amFmMwsZNP/nX1SaPdF6tG\nDi7pnrRpn1iwdr6pgtbU4cCk/6h2r7J2C7EBnMydbfWve9ZZBTf36NkFgbs5\nM0I4vW5376DETNkvG35jAVw6Za+JSdTHQWVIQKi0b1XhC8KgBsQSs44Z0V6X\nvONN\r\n=Ypni\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.38.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.38.3","@fluidframework/map":"^0.38.3","@fluidframework/cell":"^0.38.3","@fluidframework/matrix":"^0.38.3","@fluidframework/counter":"^0.38.3","@fluidframework/aqueduct":"^0.38.3","@fluidframework/sequence":"^0.38.3","@fluidframework/test-utils":"^0.38.3","@fluidframework/common-utils":"^0.29.0","@fluidframework/test-drivers":"^0.38.3","@fluidframework/core-interfaces":"^0.38.3","@fluidframework/container-loader":"^0.38.3","@fluidframework/container-runtime":"^0.38.3","@fluidframework/driver-definitions":"^0.38.3","@fluidframework/ordered-collection":"^0.38.3","@fluidframework/register-collection":"^0.38.3","@fluidframework/runtime-definitions":"^0.38.3","@fluidframework/protocol-definitions":"^0.1022.0","@fluidframework/container-definitions":"^0.38.3","@fluidframework/datastore-definitions":"^0.38.3","@fluidframework/test-driver-definitions":"^0.38.3"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.38.3","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.38.3","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.38.3","@fluidframework/build-common":"^0.21.0","@fluidframework/driver-utils":"^0.38.3","@fluidframework/local-driver":"^0.38.3","@fluidframework/runtime-utils":"^0.38.3","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.38.3","@fluidframework/request-handler":"^0.38.3","@fluidframework/telemetry-utils":"^0.38.3","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.38.3","@fluidframework/test-loader-utils":"^0.38.3","@fluidframework/test-runtime-utils":"^0.38.3","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.38.3","@fluidframework/container-runtime-definitions":"^0.38.3"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.38.3_1619204930534_0.14589238561479867","host":"s3://npm-registry-packages"}},"0.38.4":{"name":"@fluidframework/test-version-utils","version":"0.38.4","author":{"name":"Microsoft"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.38.4","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"c3454023d7b812b753029070d976192e85a41bd9","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.38.4.tgz","fileCount":40,"integrity":"sha512-DMB3yqRwg0khu/wRI+3SaUScpEfSxpB0qqDL6SdEU4GwHmj0g5OwB3sSluZ6D0IzwDRzoGVZl1UOWbRzBdjfXQ==","signatures":[{"sig":"MEUCIF7rThxgJjuZiIDVqslOUU6zUXi33/n5giT6qu8YsMbLAiEA5kULchFR8K9jdzICiXFyPT+TTM184sI4fxavli4rvL8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127192,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgg1XSCRA9TVsSAnZWagAAKkUP/0vy+Zps2HJaadj6RQel\nydgbscW1Cl80KtVkzGQaAmQK93SMK7dKF1c04LEnyCbYNhHFAk5Z9V76Z8Y8\nuHYV9nygPCX5xWREWajy74e/3eHOiYMACYDpKcRonQj/3jO0F/CXXE5vwD5h\nBLPMA+BAt30DmqIFclN0A51sj/EeaQSw/bA3820Ad2qGTKkeX+Ay+62MVN+w\neY0N+r9WXV7uyn0KnRrmbsaFHslYzhVVcr4Dn4eirzTuK7tGEyYAQjEhE518\nmVMHyWhJy8hm80ek+VukeNnXfcnnWB+jhG3vXFxCbQ5wzKs+nOMH7BZEKnt8\nMJCRTHlrmvBqFqtt5TimiCGvgB1DYfJkBmG3Czuw7/OUbqLTYfB/q+gRki1T\nH7R8AYVzC/DWe+H7GPGrdNlz6w3mrWqzQblwNwhfyrU80sbNY8MSCmyg88mH\n6bMF1C81VsuTROhG5x1tHPnke2daTmzUnJ27KKi+MucQ3uuv1eoWlmVOC5Oo\n8Y4v1MKJxo1rY3KX3xlpNx8U1ibRTsnzT0VNWGhjw0p0Bo5QQ7uBIytT9VK9\ni0JNJQqef9gFg5JaKuaPSDuKYedKBBbmd8ae1dBhMpkyzr4lDvplSfD7mMWl\nLje17k/5icG4gM/YaSM9OFd9is5I85Xc4C//kxzk53pOSqP8xG2aWC5OXia5\n4G/Z\r\n=TrRc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.38.4.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.38.4","@fluidframework/map":"^0.38.4","@fluidframework/cell":"^0.38.4","@fluidframework/matrix":"^0.38.4","@fluidframework/counter":"^0.38.4","@fluidframework/aqueduct":"^0.38.4","@fluidframework/sequence":"^0.38.4","@fluidframework/test-utils":"^0.38.4","@fluidframework/common-utils":"^0.29.0","@fluidframework/test-drivers":"^0.38.4","@fluidframework/core-interfaces":"^0.38.4","@fluidframework/container-loader":"^0.38.4","@fluidframework/container-runtime":"^0.38.4","@fluidframework/driver-definitions":"^0.38.4","@fluidframework/ordered-collection":"^0.38.4","@fluidframework/register-collection":"^0.38.4","@fluidframework/runtime-definitions":"^0.38.4","@fluidframework/protocol-definitions":"^0.1022.0","@fluidframework/container-definitions":"^0.38.4","@fluidframework/datastore-definitions":"^0.38.4","@fluidframework/test-driver-definitions":"^0.38.4"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.38.4","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.38.4","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.38.4","@fluidframework/build-common":"^0.21.0","@fluidframework/driver-utils":"^0.38.4","@fluidframework/local-driver":"^0.38.4","@fluidframework/runtime-utils":"^0.38.4","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.38.4","@fluidframework/request-handler":"^0.38.4","@fluidframework/telemetry-utils":"^0.38.4","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.38.4","@fluidframework/test-loader-utils":"^0.38.4","@fluidframework/test-runtime-utils":"^0.38.4","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.38.4","@fluidframework/container-runtime-definitions":"^0.38.4"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.38.4_1619219922057_0.7372178962104052","host":"s3://npm-registry-packages"}},"0.39.0-23254":{"name":"@fluidframework/test-version-utils","version":"0.39.0-23254","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.39.0-23254","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"dba3ce1b4f350e5681981d0fe462c3370a990820","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.39.0-23254.tgz","fileCount":40,"integrity":"sha512-jPSYw2Mm0b7mJ+4oCpI0laChkqAtr3mOjsemm0vWAqcIlWZaHqER3y+xz/uReyyZ+qSbFoVbdpmBJGTCblkvIQ==","signatures":[{"sig":"MEUCIH8qAlSl79TJaZTENBSPnffi5FiqdQWWoNv1q3NV4lM2AiEA8Tpqpwva0JWrW1vJ1Z7sT+ZqluL58876iBSg7QFNmjI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127922,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiEcoCRA9TVsSAnZWagAA/y0P/3EetWv14dOq/E7Olnj1\naK6iHFE+OxwgQAlqeh9/+9WL75CQjkhKKmuvG5s+e9Z1WzYieTVZbzRuFlwq\nXjF2ps75lJ9u3aHSsUAedCcjy+Kn2MMqqtKARuTiFxq+gIAAE3uJy0D4tMCz\n64THmo97dpI9cXQImNrtpLtUWZwxaNmPeaUh5nusNw/RWXdFw6VAYCYDVZ8r\ncYdJ2nO0hvhNbpF+GaJj2j4f2DjTTAG3GWRfbUMa8jXBW1TzFenz1VDC1l+h\n8gSpEu2xBWu44dziQb1fEvaRDwgeMRRA1KQ0DqSf87QpK8MDaKwDoSVddGpi\nvNcW1KMAciCGJNShnxF4XOy+YHGhQdhw7DKet621tjwk0obLQPiY7RDBkDLb\nnxTq31+U68+8/HcAOFvgyzrkg528qlr11UDLkQIatmuZCfbJoIZ5BMWFLgqu\nyMwp0n6OcT1q0WNiUXeNavMh6cURPb6r7dMk1KsZllfn/rtrQbdrBo4hr7Vh\nklex5y3wxthM0dTAtf2lAg1jAVQrHOa0l3A4TO9Ih9Bc08T+myGgen1RIYH8\nL9Fs7yNc2ckL2zSQwMo/10VchqpD49MJsrlxEUFtmScYWcwRTK5nmWsjK3X1\nOvAtxaALH9Mdanh+bzmilX83s8RpTp6Z2HOy24zmL/SuT4d0QhRT+UyNJK/M\neUuG\r\n=jOvj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.39.0-23254.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.39.0-23254","@fluidframework/map":"0.39.0-23254","@fluidframework/cell":"0.39.0-23254","@fluidframework/matrix":"0.39.0-23254","@fluidframework/counter":"0.39.0-23254","@fluidframework/aqueduct":"0.39.0-23254","@fluidframework/sequence":"0.39.0-23254","@fluidframework/test-utils":"0.39.0-23254","@fluidframework/common-utils":"^0.30.0-0","@fluidframework/test-drivers":"0.39.0-23254","@fluidframework/core-interfaces":"0.39.0-23254","@fluidframework/container-loader":"0.39.0-23254","@fluidframework/container-runtime":"0.39.0-23254","@fluidframework/driver-definitions":"0.39.0-23254","@fluidframework/ordered-collection":"0.39.0-23254","@fluidframework/register-collection":"0.39.0-23254","@fluidframework/runtime-definitions":"0.39.0-23254","@fluidframework/protocol-definitions":"^0.1024.0-0","@fluidframework/container-definitions":"0.39.0-23254","@fluidframework/datastore-definitions":"0.39.0-23254","@fluidframework/test-driver-definitions":"0.39.0-23254"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"0.39.0-23254","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.39.0-23254","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.39.0-23254","@fluidframework/build-common":"^0.22.0-0","@fluidframework/driver-utils":"0.39.0-23254","@fluidframework/local-driver":"0.39.0-23254","@fluidframework/runtime-utils":"0.39.0-23254","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.39.0-23254","@fluidframework/request-handler":"0.39.0-23254","@fluidframework/telemetry-utils":"0.39.0-23254","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.39.0-23254","@fluidframework/test-loader-utils":"0.39.0-23254","@fluidframework/test-runtime-utils":"0.39.0-23254","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.39.0-23254","@fluidframework/container-runtime-definitions":"0.39.0-23254"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.39.0-23254_1619543847669_0.6075602611613296","host":"s3://npm-registry-packages"}},"0.39.0-23272":{"name":"@fluidframework/test-version-utils","version":"0.39.0-23272","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.39.0-23272","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"56d7631886c7d1589486b4fa0fa1d1bd72953196","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.39.0-23272.tgz","fileCount":40,"integrity":"sha512-+cSDm5V86XHdXDZG01t1Oou3NQFk2JP9TKbUdAcTBfOyNbzurCFsbcL+Kv1828BiHp3S8PcqCF5dELhS2BxlQg==","signatures":[{"sig":"MEYCIQDbyRfDouuxQkrq0A2BvtTKleEDgKfV+eKYyqyv03cNzAIhAJ4Do8GMjm6PUa3qsTJ0ERtG7U3vnUV87K+yn6T6vSfT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127922,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiFXeCRA9TVsSAnZWagAAVp8P/jCS4SZPAauSmWSytW4d\nprIHkJWUYB09ifc3EqoC0G+aQxxSJGnwA3i0wMcykOVeFVM/XD5U2P4Nl7Wc\nW9pIHCuH9/V40+NpGtTcoSAY61Wsfg8efmUi7c3XtEN5ySZWpQE0scHKK7Ic\npmrnlhzWxS5Ki51w2UpptJ88vMATQp0y+vo18GvVTX5GwS6HUsM2NhZ4eILX\n3Lt26acUSQ6apCwxDE09Y2qv29KlI9HJGcryGXkWFiLxrR/brtYATqHyskHZ\nWFlYx4qYKWQn73tJ33olyVaE8ndiK2DyHRNCSktno380cxJ2yZzB99cQd11u\nJVbXRcdphHw4md7KQ7WFU6kXWnB14xdXU1D91qWuRM0GBHPAIGGok9xrMKha\nDkSaeff4e/ViS6YJiMOOFRpjeuO3Yb0BEb/V7XQh9Ec3mxmq/3tRwhEUWU9h\n0ogebCkti+wc4LqBQ3NsUXPE2fDYdxYqy9UWha71gmS2izzGgkCiwDOQ+TRR\n3apAisbp2zGu7IF7r3Fe8EGrFMGC6U+TbF2oIeG2z1glNtUgpWccENsWPvwV\nlowYocOcIOapQ2faloQpFPbdumTsG3OX+EzxQHpe69ybrh2HNschLrzX+D9I\nYQq4y+oxt6O+VDawxva+VjEiqlpT8arwKQBZLArRpK35EvOauOWpsQNZ8Gww\nkdmh\r\n=zGLg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.39.0-23272.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.39.0-23272","@fluidframework/map":"0.39.0-23272","@fluidframework/cell":"0.39.0-23272","@fluidframework/matrix":"0.39.0-23272","@fluidframework/counter":"0.39.0-23272","@fluidframework/aqueduct":"0.39.0-23272","@fluidframework/sequence":"0.39.0-23272","@fluidframework/test-utils":"0.39.0-23272","@fluidframework/common-utils":"^0.30.0-0","@fluidframework/test-drivers":"0.39.0-23272","@fluidframework/core-interfaces":"0.39.0-23272","@fluidframework/container-loader":"0.39.0-23272","@fluidframework/container-runtime":"0.39.0-23272","@fluidframework/driver-definitions":"0.39.0-23272","@fluidframework/ordered-collection":"0.39.0-23272","@fluidframework/register-collection":"0.39.0-23272","@fluidframework/runtime-definitions":"0.39.0-23272","@fluidframework/protocol-definitions":"^0.1024.0-0","@fluidframework/container-definitions":"0.39.0-23272","@fluidframework/datastore-definitions":"0.39.0-23272","@fluidframework/test-driver-definitions":"0.39.0-23272"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"0.39.0-23272","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.39.0-23272","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.39.0-23272","@fluidframework/build-common":"^0.22.0-0","@fluidframework/driver-utils":"0.39.0-23272","@fluidframework/local-driver":"0.39.0-23272","@fluidframework/runtime-utils":"0.39.0-23272","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.39.0-23272","@fluidframework/request-handler":"0.39.0-23272","@fluidframework/telemetry-utils":"0.39.0-23272","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.39.0-23272","@fluidframework/test-loader-utils":"0.39.0-23272","@fluidframework/test-runtime-utils":"0.39.0-23272","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.39.0-23272","@fluidframework/container-runtime-definitions":"0.39.0-23272"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.39.0-23272_1619547613613_0.9910069993399595","host":"s3://npm-registry-packages"}},"0.39.0":{"name":"@fluidframework/test-version-utils","version":"0.39.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.39.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"4e727e6bb87fa45fc97860d6b7543dd2c8e9b28d","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.39.0.tgz","fileCount":40,"integrity":"sha512-A2U/f2bfHS/hm0a/1Mp/6XAUvjJl4dZVjW145O51yidH/o7SDHyonjhqSdxIY16HismHMeWEwAZmYRqocmETdg==","signatures":[{"sig":"MEUCICLvIcReH8cVqQ2aJmOX8aCA5YVO2EuHVcT2/Vx47U+jAiEAnexZ/7/Niladkh1y5QBiEbzVBA1goB8yBDxAomJemck=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127719,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiKhgCRA9TVsSAnZWagAAWyMP/jkvGeNrxCtVDyuHMJtk\nTNiR6nKFZWFvLjlXDtrMY7AndshCx0GI3NISQRL5qZJL2E/iA8J0pzzsL8Di\ni31bxDhWQpqAZL2p27qBazh1FF/owoHGJYocWlaa4X7mV8oDiW8IpdCG4oWr\nbyz38l1mE7szLrfif4wNY+7T31VsLszAvitxS5MZ91pAqCpnWH6ZPby3jRW3\nXr4EzIzePA9XPIYABQ2WcXF+3bV5dK8/obDEZWxNyNmC8EwzPemHWSwKXY2m\nK0NUflJ1FY+BTyZCaNyk9Lyx7KyOrn2qn29H2Nr8Ut0aA7WcpCm+Qs/vp4oY\na5Qy5naEewfWMUj99FOy5xda6l5IryzhYgXQzyCtegfNKEljfCYn+rh4ugAi\n3uZ1iy3+bthKVP3zpH4M6X/IXTlkWPuUgyvA8a+9gYIIHPZgQXvfC606+4cP\nP/E1VwVNdDhCAuJjNeX56BDzSJVu0g+1bVFXb5CoGjS1hRJ2f9EunL4JhPvR\nbHw5CHzUZC4MjoSyKULGHU/D9gV6V1Zsv49kiMhyrhSe7NExQ/FeRSQfZYzs\nX7b5PMBijS4lGz4CT1+CFPN8tznuPeuOkrxsirGbSF9nF/UgiOu0BjOBx9JK\nXJBWRnIO2uIedmmv+cZ/1DJQNjngcFPbpdsikI/BqFtLXBWKYnFmEb9e0nW/\nqIrW\r\n=PCER\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.39.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.39.0","@fluidframework/map":"^0.39.0","@fluidframework/cell":"^0.39.0","@fluidframework/matrix":"^0.39.0","@fluidframework/counter":"^0.39.0","@fluidframework/aqueduct":"^0.39.0","@fluidframework/sequence":"^0.39.0","@fluidframework/test-utils":"^0.39.0","@fluidframework/common-utils":"^0.30.0","@fluidframework/test-drivers":"^0.39.0","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"^0.39.0","@fluidframework/container-runtime":"^0.39.0","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"^0.39.0","@fluidframework/register-collection":"^0.39.0","@fluidframework/runtime-definitions":"^0.39.0","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"^0.39.0","@fluidframework/test-driver-definitions":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.39.0","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.39.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.39.0","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.39.0","@fluidframework/local-driver":"^0.39.0","@fluidframework/runtime-utils":"^0.39.0","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.39.0","@fluidframework/request-handler":"^0.39.0","@fluidframework/telemetry-utils":"^0.39.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.39.0","@fluidframework/test-loader-utils":"^0.39.0","@fluidframework/test-runtime-utils":"^0.39.0","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.39.0","@fluidframework/container-runtime-definitions":"^0.39.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.39.0_1619568735710_0.7290003229539916","host":"s3://npm-registry-packages"}},"0.39.1":{"name":"@fluidframework/test-version-utils","version":"0.39.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.39.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"edef4bbd1176417d509d82a8e2c865de614d369b","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.39.1.tgz","fileCount":40,"integrity":"sha512-CUcBS2FOyAgoPxauU65mWH52QW7LnewXYM3Yhnkl6IB8Cxo88ftJ5lPR/qf8IQo72mYrgU78Sxj44zwJAN9+Ww==","signatures":[{"sig":"MEQCIAXte0WAvqR6+9fNrxk8q7vdi0aXpLJPh+3e0eATmWUEAiBxR+DInE0g04B3GCEhFSzSr2s9RivcgkTqrUP0Xr88pw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127719,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgk0aLCRA9TVsSAnZWagAAXIQP/34nz4ISk1fRhkSz5QHM\ntnK4H5+hivhYQrzi9wqWlq6AqI0sq8K9SUEy42fqcB3qDlKBKRpfpXZ7ipJ1\nJoS1rUC0Pm9et0VWP8WAbJKr5u629b6Blc+0yivY+Xzscs3dahD30GpkVfmw\n0seL9nVD7akIUFQsyANXlx2UpxBh3RA5af6L7JDECU1DpLRgOdOiYdSApMXx\n46Epz50bsJeTTEVs6Gm+39YmsYItkffBUHqF4dlFdaC7tGi/vY2m0IE0u+qA\nwREEaYv3eq9/X2QNJuRQifDRMjagSF3hi5uN/OjVFDpwIJz2fJDZ36m56UKd\n1jlAcgSMizk6gGernutaVgfRd5pVsh+CnJmdI+jeIxWPll6Fu1YaIVdS3pI2\nx2QOM1kVONi2y+K5tILV9CdC6/cyecSAAcHYm+QwvOXP0tQeqeMJPzMUbAnL\nDOhosb5f8hv52pUqqvPhHOqMvgBtKY9QwZo2AveP7Ivihyhz3tGSZr0Dedb4\ntqmSjjN+jiszra82gl/lU6PhnJL7bPAMuxElCmek6d8Lj5FI/knHFUz4nowa\nQ7ZNRWiA5bd8Qx8CGJYaF0BnJjVsKOpAMLiJCs0DnbXjwV+vAhXDRsLwN3dA\n6Hd4f02NpVLjCHEpOpe7eUAE19+RHDnAExj0nRNkM7x3Ku9fVIpdwmO6bUVp\nuYvq\r\n=3mZm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.39.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.39.1","@fluidframework/map":"^0.39.1","@fluidframework/cell":"^0.39.1","@fluidframework/matrix":"^0.39.1","@fluidframework/counter":"^0.39.1","@fluidframework/aqueduct":"^0.39.1","@fluidframework/sequence":"^0.39.1","@fluidframework/test-utils":"^0.39.1","@fluidframework/common-utils":"^0.30.0","@fluidframework/test-drivers":"^0.39.1","@fluidframework/core-interfaces":"^0.39.1","@fluidframework/container-loader":"^0.39.1","@fluidframework/container-runtime":"^0.39.1","@fluidframework/driver-definitions":"^0.39.1","@fluidframework/ordered-collection":"^0.39.1","@fluidframework/register-collection":"^0.39.1","@fluidframework/runtime-definitions":"^0.39.1","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.1","@fluidframework/datastore-definitions":"^0.39.1","@fluidframework/test-driver-definitions":"^0.39.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.39.1","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.39.1","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.39.1","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.39.1","@fluidframework/local-driver":"^0.39.1","@fluidframework/runtime-utils":"^0.39.1","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.39.1","@fluidframework/request-handler":"^0.39.1","@fluidframework/telemetry-utils":"^0.39.1","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.39.1","@fluidframework/test-loader-utils":"^0.39.1","@fluidframework/test-runtime-utils":"^0.39.1","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.39.1","@fluidframework/container-runtime-definitions":"^0.39.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.39.1_1620264586919_0.9089228830077591","host":"s3://npm-registry-packages"}},"0.39.2":{"name":"@fluidframework/test-version-utils","version":"0.39.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.39.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"b670d892f5a639f0863f6da4c7c80aec7a98562b","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.39.2.tgz","fileCount":40,"integrity":"sha512-6Kvn9e4zpH3XUR5Xx9ZclTkKboIf516B6zP8lDTFZBC4mH2rEuN51xM+jFXXzrljrn5Utys985vWNMfC181Dtw==","signatures":[{"sig":"MEUCIQDNxmmIniDuB/VoTD3HpYUcE80dfV8P4xqj/LepkB6R6AIgO4FTVpCKU8BSt6akhmles0Ne/xYU276Ra0scGIzvCAs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127719,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmwbxCRA9TVsSAnZWagAAPOkP/iOKwRNSUNQUtNQxug2J\npX7SKYTuj8aBBmLVLTnCGDh6yz8W4xfplO3ldLCy8PXT2Ux0nD5tw1u9ayBL\n9wuF+nAZpshuOyRlOBetxb1/GoV17k6xOz0NQt86zSs0PPT0k5K48+IOmNJr\nTo+X7OGXSjeTrELEenNL0paP6LkvyFuWE/AJzJoSJrvMoPTmuAwA9vbG5iQ4\nSPLuG0G6r7aRfvXqgYP4ppQtdOyBzwitqA2pScjGpA9x6MLpeeDLjJvaffUf\nHwrIn1y35IKcxy3hGamWiYsB1kggqJxOeoVa7fkF0sHE6VrLr4BLF53imlHV\nXLQ8Igd1TzVJFbWAQhrSAiOtPkIXlaHZesnA3U0sAVhU/O2EIUtb8kNbDa9+\npDIVGQYpuNhsEww/HehBKnd8fsUXMGK0NG90YD2ha2ooM0XNVqQsICGU6gZA\ns56VOhJQJtjbbVqxQWGEwHrL1QI6aTa5VNhTxBNvd2EuZYuFUsFmonTwbhFG\nHHnYpo9esNL8bijYGf71BiVv8TL04TSlzfYy5wuHah1caZMaUmZ2UVta+SkA\nDrD76b7VDoTy7i/KuI0agdixgIgyRR9Fnf1diSy9ZzESMPZNbDQL3keJ8tiW\nupOjUvlx5uhYUlxkFuGoW0n8l5fAH6BgBiVLkjsXQuwCavb8P0KWoboJ+V3Q\ninGg\r\n=SlZ7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.39.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.39.2","@fluidframework/map":"^0.39.2","@fluidframework/cell":"^0.39.2","@fluidframework/matrix":"^0.39.2","@fluidframework/counter":"^0.39.2","@fluidframework/aqueduct":"^0.39.2","@fluidframework/sequence":"^0.39.2","@fluidframework/test-utils":"^0.39.2","@fluidframework/common-utils":"^0.30.0","@fluidframework/test-drivers":"^0.39.2","@fluidframework/core-interfaces":"^0.39.2","@fluidframework/container-loader":"^0.39.2","@fluidframework/container-runtime":"^0.39.2","@fluidframework/driver-definitions":"^0.39.2","@fluidframework/ordered-collection":"^0.39.2","@fluidframework/register-collection":"^0.39.2","@fluidframework/runtime-definitions":"^0.39.2","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.2","@fluidframework/datastore-definitions":"^0.39.2","@fluidframework/test-driver-definitions":"^0.39.2"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.39.2","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.39.2","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.39.2","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.39.2","@fluidframework/local-driver":"^0.39.2","@fluidframework/runtime-utils":"^0.39.2","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.39.2","@fluidframework/request-handler":"^0.39.2","@fluidframework/telemetry-utils":"^0.39.2","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.39.2","@fluidframework/test-loader-utils":"^0.39.2","@fluidframework/test-runtime-utils":"^0.39.2","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.39.2","@fluidframework/container-runtime-definitions":"^0.39.2"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.39.2_1620772593021_0.7504820488967425","host":"s3://npm-registry-packages"}},"0.39.3":{"name":"@fluidframework/test-version-utils","version":"0.39.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.39.3","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"209f6f932f6986e071c7775527e4503e8e55f177","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.39.3.tgz","fileCount":40,"integrity":"sha512-y7ogVW65vVcVhN+gPoVEUp6EJXVshhnRJ3F8UJi4DT1xJ6noIwqtTKXr/0zKOMGX7OuQ+6nw2IE+aoO4cunlUA==","signatures":[{"sig":"MEUCICdNIWpT8fQan7WzYYJ+0pvs8UEyq2AXnAE26v7jqH0bAiEA88g1PdDkuX/bN02lPG6KEI16ptpsdk9cBJQDsb+SziA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127719,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnWHyCRA9TVsSAnZWagAApqAP/jluixyqDHKtHAzKbZP7\nVOyolpVn6xtMtlfaTZvZ3IBCLtmYY8Ru9pqMR8h2VQNkc8yNPutlXc18MZs/\nr3IrhwnTR9RxjUYMTm/wGTblC4km0ukxhn1h6zYqIBb0uIKE9pgJj6PEVT/i\nauLnd3osluDva2yHMXHY+oV9+GvFVGtvwxrxXhpBYvsAf5fKjKdFbKbGusDb\nTGwR/UsLDtkDCJ5S442rcKN3cwl8Rvr2lrSwOtVkgYhaAAbrHK48ZajH52hs\nrBErb4w3+bqj+v2BxUOahLPqgnnseYkQV1ILiCA+yzG5gpYsfToyGSL3/TnO\nmL9srDDypPsnINCyXotQWX/wUYokzhaVmD5suVvBWZWjMMq6SQUdedHcxO+p\nngiQFEO+4+bPsimiJXnWDQC7eEWZEG1Ta4wmy7AKyDgHEaDM0ddvOKXFVVIB\nQXMwYM09XWm8ed6Ky6j0ecoamk4BbbrZIzGMYiTI++Lviav3/ba5pCbzzFu6\nkDmvknBWnpit0Ynjng0aw5El+bztj21aKpXovY81VApWFZDkvp4IeoaAREbk\nFL2lCBEHuMoD83nJD6ZnwSmFD3vJeN3/LN3sj5HHGsK+QrzCr1OAApOgL1Yw\nNvVpO7OqTS1isxcD22HjBNPJuAofHAV+FWiJqHMQveprO6A8P7DJcsFHtT5S\niYvd\r\n=gWzo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.39.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.39.3","@fluidframework/map":"^0.39.3","@fluidframework/cell":"^0.39.3","@fluidframework/matrix":"^0.39.3","@fluidframework/counter":"^0.39.3","@fluidframework/aqueduct":"^0.39.3","@fluidframework/sequence":"^0.39.3","@fluidframework/test-utils":"^0.39.3","@fluidframework/common-utils":"^0.30.0","@fluidframework/test-drivers":"^0.39.3","@fluidframework/core-interfaces":"^0.39.3","@fluidframework/container-loader":"^0.39.3","@fluidframework/container-runtime":"^0.39.3","@fluidframework/driver-definitions":"^0.39.3","@fluidframework/ordered-collection":"^0.39.3","@fluidframework/register-collection":"^0.39.3","@fluidframework/runtime-definitions":"^0.39.3","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.3","@fluidframework/datastore-definitions":"^0.39.3","@fluidframework/test-driver-definitions":"^0.39.3"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.39.3","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.39.3","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.39.3","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.39.3","@fluidframework/local-driver":"^0.39.3","@fluidframework/runtime-utils":"^0.39.3","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.39.3","@fluidframework/request-handler":"^0.39.3","@fluidframework/telemetry-utils":"^0.39.3","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.39.3","@fluidframework/test-loader-utils":"^0.39.3","@fluidframework/test-runtime-utils":"^0.39.3","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.39.3","@fluidframework/container-runtime-definitions":"^0.39.3"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.39.3_1620926962297_0.9297594489671273","host":"s3://npm-registry-packages"}},"0.40.0-25719":{"name":"@fluidframework/test-version-utils","version":"0.40.0-25719","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.40.0-25719","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"94dedef0849fe0c816fac89621d0bfc465b4dd30","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.40.0-25719.tgz","fileCount":40,"integrity":"sha512-sJwEN0oMvKkPoGQLCV27AHMFPYVbLVEttsqmfvh0sXo5r3oW2pJgBg4T59pJWksqX1uAed1wYVe0HMYe2Wrxgw==","signatures":[{"sig":"MEYCIQCnswjhkx2E6vgXBAK68YBIBt65olCvAt82ZvUAL402qAIhAK5TgEHCHIEjeoXenjFbZ3zJnzFufWBJ+mrO13bOvLTg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130697,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgq/hMCRA9TVsSAnZWagAAq8QP/iEBzIgjr/Dtq6o4qNeY\nXbrCJ7y61SilrZ1yYs+79djPHksf1UUcYsjy6Th0kr0uYF8kFY2x0Y4DpY2y\nx3O6wJOmAEapfDYVjUx0J+zEjxKQ7AEhCoTWCegEdlXYFZeJ+BM3JfiEZZla\nIXswP3lF0kkybflrW8Z+G368csP/E+J84hLl9nPSJln/Px/Y/2ciJddCyfw5\n5YxC5YaxRvpCdE0apbU5X/MD4anYnDzFr1xyVZoPclO/bwGZk7P6Atmb/2q0\n6IgEzLBelfyCHB4r1gmGp9K98DUyoifxLFZ9zRoF0GSAyQBVNnBY1CGuYPhc\nfZXAMXIG3zKL8tnJQTZs+JM5IqU21Skxe7lymjHSeJ15n/9O3xK93sw3TSzU\nsVhPORqCXtTqm6uzTm2zfJq7VFTpYIh+vlHDUT5J/yZi8dMk2rxc0zzP08bJ\ni3jOS9kMD9q0dKLeFLshMkXPa1X5WzlemY/omTzH6AQ8ZE1u7PMFdhg535DF\ng3s5IXUmg0v0zloM7AAVKdGluvAQq+MSE278Z6q0NvKmDtJ36piDi5KY+3dV\nRdsTQfGAXzaWo2AjhwcKfPqwnLNNNogCTRCgm0bWrLn4Io91VQvm7wxyxnJb\nfHc+IK7cwp0iesybZE25aR7UK4oI8t0h2IHEddbh4bB/I1xNnN8fNuhVAwtZ\nlQ7a\r\n=tVHE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.40.0-25719.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.40.0-25719","@fluidframework/map":"0.40.0-25719","@fluidframework/cell":"0.40.0-25719","@fluidframework/matrix":"0.40.0-25719","@fluidframework/counter":"0.40.0-25719","@fluidframework/aqueduct":"0.40.0-25719","@fluidframework/sequence":"0.40.0-25719","@fluidframework/test-utils":"0.40.0-25719","@fluidframework/common-utils":"^0.30.0-0","@fluidframework/test-drivers":"0.40.0-25719","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"0.40.0-25719","@fluidframework/container-runtime":"0.40.0-25719","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"0.40.0-25719","@fluidframework/register-collection":"0.40.0-25719","@fluidframework/runtime-definitions":"0.40.0-25719","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"0.40.0-25719","@fluidframework/test-driver-definitions":"0.40.0-25719"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"0.40.0-25719","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.40.0-25719","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.40.0-25719","@fluidframework/build-common":"^0.22.0-0","@fluidframework/driver-utils":"0.40.0-25719","@fluidframework/local-driver":"0.40.0-25719","@fluidframework/runtime-utils":"0.40.0-25719","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.40.0-25719","@fluidframework/request-handler":"0.40.0-25719","@fluidframework/telemetry-utils":"0.40.0-25719","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.40.0-25719","@fluidframework/test-loader-utils":"0.40.0-25719","@fluidframework/test-runtime-utils":"0.40.0-25719","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.40.0-25719","@fluidframework/container-runtime-definitions":"0.40.0-25719"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.40.0-25719_1621882956127_0.7129527895207126","host":"s3://npm-registry-packages"}},"0.40.0-25851":{"name":"@fluidframework/test-version-utils","version":"0.40.0-25851","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.40.0-25851","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"7eab06979bd9ff6e3f825446ba20eabc0b260e8c","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.40.0-25851.tgz","fileCount":40,"integrity":"sha512-5vPsQwb05t5p0Toji/IDIvU4elVML/L3Xoy8Ytp/Ikyo9htpbNMOpISS+2J8Ne0CChNkIGRX4dQF18XDZaFyNQ==","signatures":[{"sig":"MEUCIQCb1sJWhTD/Z0QduaPxrxBM2rDjcdtMek3z/Xxv2sPQGwIgcdx8d57YXMF2PuY8kdISuKoOGKBOrdz5lTmzOzZSBQ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130697,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrXypCRA9TVsSAnZWagAAVsUP/1/R/lHxLzhmZ8Fw4bFx\nLtAjJhYLXL1mI1aYr6MXt9sDy5vDhjoaGzJsCDPPwyVwADuw4guDwWL2uudn\npPYgKs3wv6vwQFhX8kkHGgOYwsezZrMWk/n7tc4Dpc2c/K3H3m3FIhmLPvj4\nqeMpHrWAFjm1llaT3o6Ez0OcE9JUdpw3xxCwTkfl7E3CAnrn5Y+J8CjT4MNQ\nVMdgi+CkLg4OWgmx27aI4xG+gy0HUv2MSBV5T2/OILL4DMdEMjiAljCIrc+l\nX4EyO5WTPJc5YzQVWcxVnReR9rs9g4OEtVNitf3BqAiNUKuiyigH10fUz+SY\nWCJ1iQnZ+swM7HzZB1t8tto/ksBi6Of7NBkhhou8omwAh+73grDGA31Lbw3B\n8jIXmIAa1qOvYs93jbfXggzmIM1WVSVbCl7H5nxoXHIbwuB7M8TLMAYquHNW\njaxnWyoU9Y72fEDxFXYXG4AOTGCKHerXp++H8TVx2+7Q8+3MWMMrns85z9rZ\nPIRNvXlJ+pJs0+4c+mxTHDuklKXN3DcRIHa3mG0sfCKH7LSZNEOgNovQ1J7E\nJPV7OOg8r/q/I9+RJ3xTf6h/fEE2lSIH2ue3XSkpojyZBCet3pK+3KXGUeP9\n9zNWuZY2OZxlxCXgGNjJGkMCMNu1xLmk7W5iT/Nlxi712iU97HokEciiSU2i\ngdjI\r\n=a+tI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.40.0-25851.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.40.0-25851","@fluidframework/map":"0.40.0-25851","@fluidframework/cell":"0.40.0-25851","@fluidframework/matrix":"0.40.0-25851","@fluidframework/counter":"0.40.0-25851","@fluidframework/aqueduct":"0.40.0-25851","@fluidframework/sequence":"0.40.0-25851","@fluidframework/test-utils":"0.40.0-25851","@fluidframework/common-utils":"^0.30.0-0","@fluidframework/test-drivers":"0.40.0-25851","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"0.40.0-25851","@fluidframework/container-runtime":"0.40.0-25851","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"0.40.0-25851","@fluidframework/register-collection":"0.40.0-25851","@fluidframework/runtime-definitions":"0.40.0-25851","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"0.40.0-25851","@fluidframework/test-driver-definitions":"0.40.0-25851"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"0.40.0-25851","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.40.0-25851","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.40.0-25851","@fluidframework/build-common":"^0.22.0-0","@fluidframework/driver-utils":"0.40.0-25851","@fluidframework/local-driver":"0.40.0-25851","@fluidframework/runtime-utils":"0.40.0-25851","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.40.0-25851","@fluidframework/request-handler":"0.40.0-25851","@fluidframework/telemetry-utils":"0.40.0-25851","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.40.0-25851","@fluidframework/test-loader-utils":"0.40.0-25851","@fluidframework/test-runtime-utils":"0.40.0-25851","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.40.0-25851","@fluidframework/container-runtime-definitions":"0.40.0-25851"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.40.0-25851_1621982377557_0.30513239844863693","host":"s3://npm-registry-packages"}},"0.41.0-25957":{"name":"@fluidframework/test-version-utils","version":"0.41.0-25957","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.41.0-25957","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"0bf6990cab708d8da2358f44c6ff0902c69bf4ca","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.41.0-25957.tgz","fileCount":40,"integrity":"sha512-4ZkhF1NY8vWZPJSageS9/+tjfqBG0IXmdr7l6RmD20voVvXzOBJOD5fulABm/wjseBNuKpCSLRhHOAEYlwlEVA==","signatures":[{"sig":"MEQCIB1bOZlpjKyQNQhlzq69tkBe2ZUlQoTocgO9dxEX4KLHAiBqJu/CVZ/Mcka0p1eCELlkpOZG/YTfTQtKYvKpN/0G8Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130693,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrrLJCRA9TVsSAnZWagAAocIP/AwP8Mob4UHSknt8MS5y\nyuf0eIeD1OT1cpsDsRpO7QRUOS5At+4nkg3f4THUkmAi2Bs+k4CAiPpf+1Xp\nBrPWa1LaYiNfTxWxqQl3249Tngc9ts4wvj/AhwRvEoceaxib6O07WDmriZGz\nVznZTJ2L5Z07uaUMoTn4YGNTPB8sjIBAUCOnxsGyYqi51WwSSOB+MSIlaXHW\nz4+9rKNIUJ+I5GBUgcwPtij6w0u5VxZhFARqGS6nQwzqnvYh6ej8hHap84iP\nvTFm238lJ9nJV+pObGzZL8Tmveo5fsPjCtyaGcVCf9wZ8Wppz3tspS2DI+/C\npPrZJL8gt2G2N1fePhCKOuBzojGjxTQ+P/PnmwqxwsFOVMfag1YR//Vh3RCH\nGTyCw93myggyzyNnId9vjRrL92una8oWdlRI96iWrJDtIiSmt6I2Os3JUXDl\nUQJnketwHSnp2TAGDjXtEvDLyiAaN2TPks8t3kP0hSBpvWyQTs8T/yyM5OVD\nL3gp5SYsx5v8GC6SOpdt+VYQLmoVbSVkJUfioNQFHl6S+CxcHAou8lTUYzec\nTOdBophZjD0SgOjMrIT72l7MAMbmsmVs9Qcra1fjWjp86wuhaJRFjitP/L+5\nNEdfaiWOzVJcVLJ+NNrSSm2adSlGOutkEXYCzukJlyTyh/UMv5796qV/JRpT\nHwVq\r\n=HRlm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.41.0-25957.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.41.0-25957","@fluidframework/map":"0.41.0-25957","@fluidframework/cell":"0.41.0-25957","@fluidframework/matrix":"0.41.0-25957","@fluidframework/counter":"0.41.0-25957","@fluidframework/aqueduct":"0.41.0-25957","@fluidframework/sequence":"0.41.0-25957","@fluidframework/test-utils":"0.41.0-25957","@fluidframework/common-utils":"^0.30.0","@fluidframework/test-drivers":"0.41.0-25957","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"0.41.0-25957","@fluidframework/container-runtime":"0.41.0-25957","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"0.41.0-25957","@fluidframework/register-collection":"0.41.0-25957","@fluidframework/runtime-definitions":"0.41.0-25957","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"0.41.0-25957","@fluidframework/test-driver-definitions":"0.41.0-25957"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"0.41.0-25957","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.41.0-25957","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.41.0-25957","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"0.41.0-25957","@fluidframework/local-driver":"0.41.0-25957","@fluidframework/runtime-utils":"0.41.0-25957","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.41.0-25957","@fluidframework/request-handler":"0.41.0-25957","@fluidframework/telemetry-utils":"0.41.0-25957","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.41.0-25957","@fluidframework/test-loader-utils":"0.41.0-25957","@fluidframework/test-runtime-utils":"0.41.0-25957","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.41.0-25957","@fluidframework/container-runtime-definitions":"0.41.0-25957"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.41.0-25957_1622061769082_0.5365794512435478","host":"s3://npm-registry-packages"}},"0.39.4":{"name":"@fluidframework/test-version-utils","version":"0.39.4","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.39.4","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"0232a452b01d85fd7e6f77ab4d37b78d5655a7e0","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.39.4.tgz","fileCount":40,"integrity":"sha512-WT+fDJBBdY2uiVrCcpQFXqVHTzhePoXO/lqHEbOv4B5QbsYhr7uhRM2aZpyxzRD9MYUEMZy1Ks8cp0TpAqZIsQ==","signatures":[{"sig":"MEYCIQCJzIE3Y6Iw/Rl7ODU1De7K/cwhSEzQ2oGWceS/21P6HQIhANSJu48Jx1Vh0uAEqX0/Vnesydqyjn48F17mapdVCXUp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127719,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgr8znCRA9TVsSAnZWagAAKpYP/33+r+qLPMAhpa9jVV0D\nrn1/K/3NPaPjnjc+6sbJkeEj8zQYOSIMwVlFSmDWoBD7YTqAxf+jfjPskVYg\nZjtLWR/DDhemZAKqOVI99IKC4aVqSm/hVEy5AdeaSRf8fEI+67CM+8XJF2io\nWqU/1L231cHO6lImKjCkkRRmlEiiMCbDU8zi0BTvcCkP32yruUlnLgjjYF4n\nMTNEUJDojXK1xvNvf8Whl8b+vFkr6RbWN94qAJb5hdRNqQ5lWhwhHED0G/wu\nDhpUXEmgC4yQQn/iYBOLz3nhsTUsV/4r3P1Ks1yHGijF6XAIgrCku7CzU4tY\nInHfL0PFZzzPu3cE2T8EXVZwlh39LktaNTGLku3lfo/Ls20AOq0HGQhaoCao\nEaRr0OjfWP6uROVkRLe8Hl7buklT/o387gh1fgjoEHUDiu2h+i0zOBsAewO/\nW4JWQfRteMb1rPplFPbkjGN7FCKETHfjmbw3IYccMkwUMrA0dgpv+ch3Y4v1\nPHWiQjSCQ4oUDXYckQ1Ki5q4gfczeHwyPqpr0XNjGlJRs0WCtWHc7KrEA8CB\ni91CgcLEXMbyP43PCSCEq6VU92GV4ScipHrPJVC2qRi/EoFygaUMosPhT8J3\nwZfvZ0qQDMGz2wVSY93Ne0W0G3Q/Jtzwjv1LBMmHmGon1/Jmx0reKeUBrA59\nR0kn\r\n=BGoi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.39.4.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.39.4","@fluidframework/map":"^0.39.4","@fluidframework/cell":"^0.39.4","@fluidframework/matrix":"^0.39.4","@fluidframework/counter":"^0.39.4","@fluidframework/aqueduct":"^0.39.4","@fluidframework/sequence":"^0.39.4","@fluidframework/test-utils":"^0.39.4","@fluidframework/common-utils":"^0.30.0","@fluidframework/test-drivers":"^0.39.4","@fluidframework/core-interfaces":"^0.39.4","@fluidframework/container-loader":"^0.39.4","@fluidframework/container-runtime":"^0.39.4","@fluidframework/driver-definitions":"^0.39.4","@fluidframework/ordered-collection":"^0.39.4","@fluidframework/register-collection":"^0.39.4","@fluidframework/runtime-definitions":"^0.39.4","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.4","@fluidframework/datastore-definitions":"^0.39.4","@fluidframework/test-driver-definitions":"^0.39.4"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.39.4","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.39.4","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.39.4","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.39.4","@fluidframework/local-driver":"^0.39.4","@fluidframework/runtime-utils":"^0.39.4","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.39.4","@fluidframework/request-handler":"^0.39.4","@fluidframework/telemetry-utils":"^0.39.4","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.39.4","@fluidframework/test-loader-utils":"^0.39.4","@fluidframework/test-runtime-utils":"^0.39.4","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.39.4","@fluidframework/container-runtime-definitions":"^0.39.4"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.39.4_1622133990561_0.7167603121883397","host":"s3://npm-registry-packages"}},"0.40.0":{"name":"@fluidframework/test-version-utils","version":"0.40.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.40.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"75b8ed01a48f5486325b273e92180d8d2c9cbc51","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.40.0.tgz","fileCount":40,"integrity":"sha512-/SswlwN+No9A2euRxfjsAKF8n8Ii/fOZUgMxClUHSr3Afs2O0Rj1ky/JZstG2l95b4Q5DTXrKINoxeOO7uhB+A==","signatures":[{"sig":"MEUCIGJJmerErrywpHSOGTwZcRvMPNV6PjQqtcepv+ntMikYAiEAq88CwPO5Qs/xreACvfAUKBB6bA9JRKs866gkgrreDbQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130511,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgr+AFCRA9TVsSAnZWagAAVncP/jDp3TV9njSugf/IFiGO\nHinEyhoyfC482xTZDQTISFevZGKqCD4rO1RbwlxQzv7FdRQ/d6IQ9KibMhg7\nEOsQ7XknTKzIAuVPMYxFUtyTWsqp1hUx6rhCeFoohhVl5aPunblxm0TlDzQr\nikzPwAi6xxZt+dTyYmcla3FTSIcuGPF9NzULfel6R6U/kcpLXbQZUwz6WNrV\nUB+AmdpjRJuOUYkVAlIiCzhAfA05MzGKRZYr4JhwCgbmdV4EpvUTSEkobnCR\nn0oqEoYi6AVOTsCV1/e9CrI3hLuwfrDr7pLqRVFr4pyhrUABcHMOTw0M4U1n\nHLjK9NfzJE/yrSvLWnToYzmz0q9sHH/WZyQsEyivbz7WpfqZ+jQ4xmnEXEYK\nFl1t1LsmAQLtdnMxYOm6r1p+ajOJfHOgP7z8F7vxmqOhM0t0w7k78UiSnP+y\nS4patXEcZ/pKEVsdarE0NKWxB9tD5Dza9XSzz689qZmkHPT2ZXxx3wXXoKvj\n7ncr0uDf6fDhX0wr76k8kMr3veOhfZcR3ana3U0aKOv/bIeHRt4Shj5A97ng\nEtd6yeWrQ2lO6f3Wjl/bHKU2MrRgArMPerm67bBVmsxutUMC9ofCccS0IaGe\nsnc0Q7Q/XbID04J+sKmrSJrV9yRT66rGxQFKTwGTJD13EIDJViMfw6NVPDyz\nepZL\r\n=mOZv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.40.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.40.0","@fluidframework/map":"^0.40.0","@fluidframework/cell":"^0.40.0","@fluidframework/matrix":"^0.40.0","@fluidframework/counter":"^0.40.0","@fluidframework/aqueduct":"^0.40.0","@fluidframework/sequence":"^0.40.0","@fluidframework/test-utils":"^0.40.0","@fluidframework/common-utils":"^0.30.0","@fluidframework/test-drivers":"^0.40.0","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"^0.40.0","@fluidframework/container-runtime":"^0.40.0","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"^0.40.0","@fluidframework/register-collection":"^0.40.0","@fluidframework/runtime-definitions":"^0.40.0","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"^0.40.0","@fluidframework/test-driver-definitions":"^0.40.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.40.0","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.40.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.40.0","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.40.0","@fluidframework/local-driver":"^0.40.0","@fluidframework/runtime-utils":"^0.40.0","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.40.0","@fluidframework/request-handler":"^0.40.0","@fluidframework/telemetry-utils":"^0.40.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.40.0","@fluidframework/test-loader-utils":"^0.40.0","@fluidframework/test-runtime-utils":"^0.40.0","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.40.0","@fluidframework/container-runtime-definitions":"^0.40.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.40.0_1622138884850_0.21550431053118757","host":"s3://npm-registry-packages"}},"0.40.1":{"name":"@fluidframework/test-version-utils","version":"0.40.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.40.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"6ba3c291ac58062c3e103ace5e066d48dda2217b","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.40.1.tgz","fileCount":40,"integrity":"sha512-2ERzugFVmR5Ax4MZ++YsZ8zXSsQ7clxbzkXvsBpn7nfGgFjMpj5T2JUT5wpGEoV4m1v2MI3i3qEUSSplaJNCwA==","signatures":[{"sig":"MEUCIQDjgPQzbkz8SSPG+KsWRs5I5EUnvRa+h4p9Y6mBTOftkQIgV67TwmHKdfWA48obk9dWmnWVJ2jhmOO8UW+ZOV+UWJ8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130511,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJguXVUCRA9TVsSAnZWagAAYGAP/jggG3GmrQR+PGMAtbek\nicPzKgB5WQElwAE4+a0JoUJBKU6I60nViJCJ6CSpta6bx71F99hI0xjzcOoT\nUcT9yJK1DP2XOR7xI6QLzIc2aIs76ONzEGMCTFWSxrKgzDaTmrhI3Fs1plZw\njePD1Sj68rMqwo4w6i+xzL8HGjFfBvugsvYUjMUp98BUG6u4iAcw8Pq/JmYX\nU5+nNDoDh62Y+W7BeaJc5ydpOB41KJTqtNQ4ZDyJ5K5jqzLn2HmhX/SesslX\nfhTVvg2ZJ/NB6H+vQO1CskDen0WZ7JzQjgbTX8CQxinMrtx0OgUuekyZy8xd\n6IRgFPYuB5NmEEYbiytBgBIcMdP5LR5xF9QLq/x6N1oYUb4beJz5UuR4o8vx\n2SzyHAZQYSxra5Pvc4bzhufgcqS1Rr5BCCjhVsHKqXS/pOJwmQjTRIwxr14Q\nIXQBubjd57G0ouSFEja/rcj4TCXBx825iKmsp4kNhlLAz2zyedkWJodkzT/0\nRiPeGHLrwOS9D3C/W3+BEdpd9rsP20e3dOTNFxoFzAzvCTAXeptjvEkdtu7o\nVkWzdk0XO1K6LVEM6T6E+mW1lEd7a4N+k6qSGRPo1owPaYP/02LgG3ockovj\nnLSI9aZjGiyWTRuWi9iQx6gRutT/GkAQiN3jOZOUPwVITx8Br95pccA5ZlaH\nJ++V\r\n=kmNg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.40.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.40.1","@fluidframework/map":"^0.40.1","@fluidframework/cell":"^0.40.1","@fluidframework/matrix":"^0.40.1","@fluidframework/counter":"^0.40.1","@fluidframework/aqueduct":"^0.40.1","@fluidframework/sequence":"^0.40.1","@fluidframework/test-utils":"^0.40.1","@fluidframework/common-utils":"^0.30.0","@fluidframework/test-drivers":"^0.40.1","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"^0.40.1","@fluidframework/container-runtime":"^0.40.1","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"^0.40.1","@fluidframework/register-collection":"^0.40.1","@fluidframework/runtime-definitions":"^0.40.1","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"^0.40.1","@fluidframework/test-driver-definitions":"^0.40.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.40.1","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.40.1","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.40.1","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.40.1","@fluidframework/local-driver":"^0.40.1","@fluidframework/runtime-utils":"^0.40.1","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.40.1","@fluidframework/request-handler":"^0.40.1","@fluidframework/telemetry-utils":"^0.40.1","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.40.1","@fluidframework/test-loader-utils":"^0.40.1","@fluidframework/test-runtime-utils":"^0.40.1","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.40.1","@fluidframework/container-runtime-definitions":"^0.40.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.40.1_1622766931933_0.1064158607400929","host":"s3://npm-registry-packages"}},"0.40.2":{"name":"@fluidframework/test-version-utils","version":"0.40.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.40.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"5b5aca49c0133eab8fa8db5b2dc717f4b5761c72","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.40.2.tgz","fileCount":40,"integrity":"sha512-4nc3AS5KaCJeSNXzL1SKjcS9JbFrTezQWZsp+ySJvaz65EY6afkDh45DyMWrAD5MuNlheGcBlnHXOJi7xfp3BA==","signatures":[{"sig":"MEYCIQDC0MSKIFOMY5lmCZa5Y2izsFgNWcEhu1qibHWzU5NOvgIhAM6RVRhskQaUbsx2232ZCmIUyrdPO0lC/Rw+ZCVt3zUA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130511,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvngpCRA9TVsSAnZWagAAYnoP/jZImmpSArgLBlxuL4Gv\nY734Efsb15nuhgBsHhhRwRy4NtOQvPNL+/2mn40rwBFw+HvABgSIO6hZl/7y\njsPrNsbG4OMV1GUy9IkQGrd6i+ohx1zOos4wo6Z/WKuuDsjKlTIu2eV9ajj/\nQY3DZkI7wtRccBI/tMBNfNZPxJn+vltOzJ5XQCkCFDw6UxFq5a30geoIDYqh\nOTUmDP2ysuEI1HcZ819iWX0VsYLuAgDl3hX0QqWNLhRk59ejAO1SEgWhmust\n9QL/dqZop5xFog6piAsZmUupB0o9BJRKG9tsde9RbK9RoRjniFpZRLMiHqBh\nz4tFGwM8MAD1IM/an5kBeZ69IZa1mUNkB+HLYWgcYBGOCCKLIhk0sT+ZAWBr\n9ijUXx3ugURs2gTqvz8cBL/Zq1I/7oxZtobhXCR8ANTRs60Vu6OPD8X6aNTM\nuLsKtlOnx+4BF05j+5iHOnzWfPyrgP8ad6GaqTC0qztH3hlBCE7TYFLYviKP\nP0AEga4yT6l0Yz6/+c5+N/dYaxqPmo6fsp2+FXRwJiQ8uZrNIVXaNLHjY1kq\nVtOQbfXzvetFokZa8ozVnj1yJMMSdQbb7bT3CMfLGx2pGQW4E5yOY8LKaeD6\n3yCgxBOQeI2xHhWEqOdmBfJB2N3z35kJo5aHmqGxJqLJjN89Emxd8J1rjryB\nuvLO\r\n=oUPI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.40.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.40.2","@fluidframework/map":"^0.40.2","@fluidframework/cell":"^0.40.2","@fluidframework/matrix":"^0.40.2","@fluidframework/counter":"^0.40.2","@fluidframework/aqueduct":"^0.40.2","@fluidframework/sequence":"^0.40.2","@fluidframework/test-utils":"^0.40.2","@fluidframework/common-utils":"^0.30.0","@fluidframework/test-drivers":"^0.40.2","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"^0.40.2","@fluidframework/container-runtime":"^0.40.2","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"^0.40.2","@fluidframework/register-collection":"^0.40.2","@fluidframework/runtime-definitions":"^0.40.2","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"^0.40.2","@fluidframework/test-driver-definitions":"^0.40.2"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.40.2","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.40.2","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.40.2","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.40.2","@fluidframework/local-driver":"^0.40.2","@fluidframework/runtime-utils":"^0.40.2","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.40.2","@fluidframework/request-handler":"^0.40.2","@fluidframework/telemetry-utils":"^0.40.2","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.40.2","@fluidframework/test-loader-utils":"^0.40.2","@fluidframework/test-runtime-utils":"^0.40.2","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.40.2","@fluidframework/container-runtime-definitions":"^0.40.2"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.40.2_1623095337053_0.20798705673484785","host":"s3://npm-registry-packages"}},"0.41.0-27154":{"name":"@fluidframework/test-version-utils","version":"0.41.0-27154","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.41.0-27154","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"d836ca881a41fc2efe3961cd15c0a184164b4d40","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.41.0-27154.tgz","fileCount":40,"integrity":"sha512-OX0y55qRBVtuESF+XHatdzm7WEna5h3d6l0fqKkZ8kZe4ELgUPusWXqk0KjkDW4m9HPyGe3iBMeupL0p549vmw==","signatures":[{"sig":"MEUCIDuAuig5CpYq6qUjiExIFSxy3A6o0LVB9JVPcGZlIz4MAiEApWkTmZd3P2JqkUQlua2DcKm1DjdFGZEl88Y3H/bgoys=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":134045,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgw7LzCRA9TVsSAnZWagAAjbMP/i31IKJLDgr4fkS7dztX\nlQh418SvdH0FMWKjuOKcqT0D1jgQJbHFBsDN0T+LqRiQylazBVBDGinJzJy8\nyy/QaPSmskUSm/wDwIdYdkJ3SixhFAagSJq0OD0gBWM3oE05hupjDLmdo+cK\np+JhtkCF7RisCHDzktefqLlSFHRwe/aLjWmBUnFpS0TndENazQgR4Ocuc3gY\nVmqGPgB9CfyGvkacKE0CX7UREuPSQlrvs32In2+uLt4S6ecfsfsvDyHpwxQS\n3u2v21rGS42RJVHw+AJobBNDv9FZSBqS5cuntFbU1SwvoM/hsrIqrDe5eETO\nOWWdO12vT1fjLxUqkOuv4QF1fS50GT7YGBdKtamA86YWI2nJ16Oc68+oIr29\ntDFdeBDgzDAFNKB0KS6VT4ti0bdX76juoG+ctmR01bOQ67vGL4OMLw3LQNmR\n8ksTN5NXaHNiMRodF118Yo74+BLo5MUVccf2nqglKZSr44KMr83DOo28vmSs\nas8nSdsCvoib7RgK0AHanPKJLAwN44xnLuUgHqxfMHvTmUpGOxwx2sKfJ8GR\n9hvh64RQqEWNiTpq1cXkGD1SdViRzD/AFprCwTgJHC7vYe3IdCxrS23cBj0N\nS1Ip4KuQIAq+aWwMTR9NQU3DO3i70sC9K78idtFAARDCHSOWSRDoHgBxzCWG\nI8Fv\r\n=eIf5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.41.0-27154.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.41.0-27154","@fluidframework/map":"0.41.0-27154","@fluidframework/cell":"0.41.0-27154","@fluidframework/matrix":"0.41.0-27154","@fluidframework/counter":"0.41.0-27154","@fluidframework/aqueduct":"0.41.0-27154","@fluidframework/sequence":"0.41.0-27154","@fluidframework/test-utils":"0.41.0-27154","@fluidframework/common-utils":"^0.31.0-0","@fluidframework/test-drivers":"0.41.0-27154","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"0.41.0-27154","@fluidframework/container-runtime":"0.41.0-27154","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"0.41.0-27154","@fluidframework/register-collection":"0.41.0-27154","@fluidframework/runtime-definitions":"0.41.0-27154","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"0.41.0-27154","@fluidframework/test-driver-definitions":"0.41.0-27154"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"0.41.0-27154","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.41.0-27154","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.41.0-27154","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"0.41.0-27154","@fluidframework/local-driver":"0.41.0-27154","@fluidframework/runtime-utils":"0.41.0-27154","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.41.0-27154","@fluidframework/request-handler":"0.41.0-27154","@fluidframework/telemetry-utils":"0.41.0-27154","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.41.0-27154","@fluidframework/test-loader-utils":"0.41.0-27154","@fluidframework/test-runtime-utils":"0.41.0-27154","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.41.0-27154","@fluidframework/container-runtime-definitions":"0.41.0-27154"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.41.0-27154_1623438067157_0.3876554141341617","host":"s3://npm-registry-packages"}},"0.41.0":{"name":"@fluidframework/test-version-utils","version":"0.41.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.41.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"29713b35503a66b86d0eadd9093b8c8d349337d5","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.41.0.tgz","fileCount":40,"integrity":"sha512-hf3LqfPxsiZ86J1mrnVgX3SmpSqNOrL2YGc+6IcNZHZCZROrhirojHMIoITMoYdkMi/TDieNqhp49NVJHFTl2A==","signatures":[{"sig":"MEUCIFsFKXUKUyNp8mCI6lVgPnoTSTXeIo01T6zGEPmNJPpPAiEArc5osBxtgehfDlFZ6xkphINv/C1EUCY6oKOmQ+uiPaQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgw/KYCRA9TVsSAnZWagAAYB8P/0xgfuYE0znFz9J5lby1\nx+JnBf3u/cz5GMfFGYTRyeFaswS2IGsax0aXI477syIN1gkt2kFWole0yBLh\necju/n9ig51UuXYqKz/t6RSBbwGzuFlMb1aOgRbR4XWlV3fnD8Ah9qEHg/8w\n9ITDUhUagDXKJ9ISHI0v5tIruWW1dWyUSLPkmVJb4q6ckf2EGoXcqE9dO7Wx\ngSqoDS1QzvMp8J6F9Vj2+gQRXnkjE8cJq3P7SozTno+NiU96wt7BVZMLQK04\n8X+WVDLNATDl45Sc53+eAtwrRbnUNN1r9lHoZbBaQasytE46i9TAW2Lr8/cA\nFNsT76Vge6AltGX12A16WrSq6ZZWIVl/1gAcRX9LpdrW9tvHVu/mgOKvyjQk\nHOKFo0cCxRrx31eiiK0x+OItyu4GaWn6VMK8hsRqxhOdb/SyUFUM6jr3Okcf\nBlCZFmrTHAEHGnmvbrtSCJ9gxuM4C93a/ue3DLjpdQSLU2ZNcIkywEFaVo8o\n6szC6wCp2pTupe7SSrjIaC7eqVH3ehM2QsuYUKXG27dQW9xaKEXf7GSbyVIM\n2NCeaStHs7oMj8OTD8J3IPuUyqfm4hLoWfJR1NPMmYffEg9USjm5rtFFYG8W\nFOJheKdpqfl600+KIbTQ8RpBZ1uQoRPKBbsC9jw/tWUDszZg+51j/0CbIjJ8\nbsoX\r\n=qtsu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.41.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.41.0","@fluidframework/map":"^0.41.0","@fluidframework/cell":"^0.41.0","@fluidframework/matrix":"^0.41.0","@fluidframework/counter":"^0.41.0","@fluidframework/aqueduct":"^0.41.0","@fluidframework/sequence":"^0.41.0","@fluidframework/test-utils":"^0.41.0","@fluidframework/common-utils":"^0.31.0","@fluidframework/test-drivers":"^0.41.0","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"^0.41.0","@fluidframework/container-runtime":"^0.41.0","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"^0.41.0","@fluidframework/register-collection":"^0.41.0","@fluidframework/runtime-definitions":"^0.41.0","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"^0.41.0","@fluidframework/test-driver-definitions":"^0.41.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.41.0","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.41.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.41.0","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.41.0","@fluidframework/local-driver":"^0.41.0","@fluidframework/runtime-utils":"^0.41.0","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.41.0","@fluidframework/request-handler":"^0.41.0","@fluidframework/telemetry-utils":"^0.41.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.41.0","@fluidframework/test-loader-utils":"^0.41.0","@fluidframework/test-runtime-utils":"^0.41.0","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.41.0","@fluidframework/container-runtime-definitions":"^0.41.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.41.0_1623454360108_0.3670721574402893","host":"s3://npm-registry-packages"}},"0.40.3":{"name":"@fluidframework/test-version-utils","version":"0.40.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.40.3","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"d387cbd68cd3e063361f4e3e87ca71edf1972baa","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.40.3.tgz","fileCount":40,"integrity":"sha512-3fD2mZXi9s40c3fWn+SMhZhyxXBY2JAHKh8HSBp0wl9/9iVxlG/j6nihtoWJTY0Qm+xCvKjPKya+ysJ3yE3iLQ==","signatures":[{"sig":"MEYCIQClmw90A46uE6lblls/uhTTEQSmtbJS9+sMdv97nIC4MAIhAM0/HgnqNFh6omBPTP3N4PYlywL646wxHYNA3gqilpYM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130511,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyQBOCRA9TVsSAnZWagAApVUP/2QWxjU2RdCUxa/TzIQ9\nuATDY3fVU5lvPPenVQNpgnEXus4FxJgGNqUrM3m/+l+MpeTOQ++L/H23bUVJ\nvABU9ZNgi/lhzzxufCdxlj2HrdYVFspuzvn+LY3gqgLoVFXP4/mfNCVOro0T\nkWo/ShrBnfVqEvmltcw/6jEteXs+gCc4X2CVWRREN1DAzDgU5SxuXP/Eqrjz\n6HT6J9P7da2HKm1YCnX6XvEMJ7YYxfb3QAG6sZjMUPnELUBLl2v/yn+UjjvU\n2Aoots1Z0se96OwBvzNPUDWO2fJrFE0YEkhqd5UvuQRQcjuOl1C1gnROA8fM\nJhs+KvYRAFhYSuxDGStvjsclsQiKk/A0Kc8pz7DNRznvzBnhz8ZhE3Mnd25o\nQwVNzXOCWvavbF+/bAoTyYSsUhi0RaguFzyyLDEL6/4ugm++yLtUgMDHfCod\na6QXrmUI5PErDHCFpZB96fIbz0P843k3J6A40fKStstZ7MxQRuLV2rEjYbN1\nfKQoKa+BnztiCvt2MWGbN9DRChkw2LiPZbS987bTyYPGmuGiWoIdmOWQegtr\nnT/mEIV5ZLV08dnfEwm3ffoPkPp8CJdPLNB5h33ObloTNr1z1ftjGrzk5CVm\nxXtNtcqD7spyh7L7xuaPycBjMKIpHnw8Piv3kztdmiTr+GHiKHDxGz5gEIU+\nhdJO\r\n=ShMh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.40.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.40.3","@fluidframework/map":"^0.40.3","@fluidframework/cell":"^0.40.3","@fluidframework/matrix":"^0.40.3","@fluidframework/counter":"^0.40.3","@fluidframework/aqueduct":"^0.40.3","@fluidframework/sequence":"^0.40.3","@fluidframework/test-utils":"^0.40.3","@fluidframework/common-utils":"^0.30.0","@fluidframework/test-drivers":"^0.40.3","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"^0.40.3","@fluidframework/container-runtime":"^0.40.3","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"^0.40.3","@fluidframework/register-collection":"^0.40.3","@fluidframework/runtime-definitions":"^0.40.3","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"^0.40.3","@fluidframework/test-driver-definitions":"^0.40.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.40.3","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.40.3","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.40.3","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.40.3","@fluidframework/local-driver":"^0.40.3","@fluidframework/runtime-utils":"^0.40.3","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.40.3","@fluidframework/request-handler":"^0.40.3","@fluidframework/telemetry-utils":"^0.40.3","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.40.3","@fluidframework/test-loader-utils":"^0.40.3","@fluidframework/test-runtime-utils":"^0.40.3","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.40.3","@fluidframework/container-runtime-definitions":"^0.40.3"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.40.3_1623785550722_0.7419191103662084","host":"s3://npm-registry-packages"}},"0.41.1":{"name":"@fluidframework/test-version-utils","version":"0.41.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.41.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"7a1c73d9cdf05b3be3086ac915cd092615739d5e","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.41.1.tgz","fileCount":40,"integrity":"sha512-DyDOZ7PR/QvAv53IOSo59VE3mepP3axf5okqExz+JqIFVw4gdh4SR0vO+T6gJjegwDrGEzyFcaKpR3SsyO3rJA==","signatures":[{"sig":"MEUCIB4ZL87FxY6d6Dgo+YoqY8e+BTNLdwcK88ezHAq96a6+AiEAtQ+/GrN3Gh28KRGtAo1XBaNQG6Q8eM1JbD6Z7vu61r4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyVlVCRA9TVsSAnZWagAAyywQAId/QOtC0yBtsm3MrpaY\n4vaSgs4DhPPLc1eqLj6S68adavtTrDmbWB1SiZAS3xv9H4G1uZFmzHQs/pJa\nYRclTXgL5ZvS3CW8UseD9N8LDPisMrEOg+9qCQrY497W0NFY8lKe/u0JLRgA\noI2za92VVMB2/0al4+/9G+Bwfmpdf4MvHvZnB50n9jgygqIXaVXAL2MFppAU\n0Ul+FW4ePs6YN0KavEFExyvvDyf5Itvb//vifnIAMkf+nzyJQyTQKRn5ZjTh\nLyfmSUHo9/77Ktz6mGospl7aN2fCE+WsFwhSkXwddr4vGUklIKD90GGKp9aq\nD8GIOv3bNGQT3nqzkAzNG0ZyPHP5QrtmFGTGdkEc7/K1P1ZgQ4MRS98IBtXx\nEAfT65zC4kjA3/4b/2/AIB+mAIJO6+YcOFzOzJM4a8H8g50oLlKl7uiQd1RN\ni9ZhfTYSVcnpfwx9+GUE/K2pPqDXvpE7kaBNkGZ0wnXEBxlJeYcHxv6CicKf\ncjEPeLMQeZBpRhVUn3vpV+nq3Q6B80fBr1boUdgwimYZ0v3aNaG7FEqygsK8\nDvqH9gCcJgSDOs6dKaG8eQaC7JqCxjpXYqm/q3JJuAcV72DFGWrPyyF6ibBE\nIpPf1aVV8RotkTt2J7UEONk7jSrKNCyZDVYX9AnaDoj3xzBqFZiG4ZAFC3P8\nCM11\r\n=mPUW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.41.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.41.1","@fluidframework/map":"^0.41.1","@fluidframework/cell":"^0.41.1","@fluidframework/matrix":"^0.41.1","@fluidframework/counter":"^0.41.1","@fluidframework/aqueduct":"^0.41.1","@fluidframework/sequence":"^0.41.1","@fluidframework/test-utils":"^0.41.1","@fluidframework/common-utils":"^0.31.0","@fluidframework/test-drivers":"^0.41.1","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"^0.41.1","@fluidframework/container-runtime":"^0.41.1","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"^0.41.1","@fluidframework/register-collection":"^0.41.1","@fluidframework/runtime-definitions":"^0.41.1","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"^0.41.1","@fluidframework/test-driver-definitions":"^0.41.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.41.1","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.41.1","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.41.1","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.41.1","@fluidframework/local-driver":"^0.41.1","@fluidframework/runtime-utils":"^0.41.1","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.41.1","@fluidframework/request-handler":"^0.41.1","@fluidframework/telemetry-utils":"^0.41.1","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.41.1","@fluidframework/test-loader-utils":"^0.41.1","@fluidframework/test-runtime-utils":"^0.41.1","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.41.1","@fluidframework/container-runtime-definitions":"^0.41.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.41.1_1623808341552_0.4356061295660838","host":"s3://npm-registry-packages"}},"0.42.0-27549":{"name":"@fluidframework/test-version-utils","version":"0.42.0-27549","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.42.0-27549","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"660424a45a30e8394c7d0e69dd3e062d60af1e2b","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.42.0-27549.tgz","fileCount":40,"integrity":"sha512-weocV8gu8QD5jUdvgPZCOIu11lTfXbXnf75582gfQAAVrCpn+yOGPA9L7nX/q/FvDGAlfQTB8ZoBKpJ01aR6JQ==","signatures":[{"sig":"MEMCIG+pbsdPUyMczlbmROz/ays1UbVdgjaYSJRUbn8Xq7BwAh8xeGPdpx5TEfpPTiiMJZBHnTG1IzM2w17TyCigULz8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":134043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyhnfCRA9TVsSAnZWagAA3A0P/jNSIpNPvVCn9PB1rf4I\nhHie4QGUb40V+LylRf5ja1UDXmRHQghdbBrqvvhLWyjE2Mj+GpIpamYLSUhA\nxtLsL08LcMt1OJv19MANN3HfnGVygv9/VtOsO2wt5uL/p5LOKuBlha8TGg79\nD4KFuMYD3Fq95IZL3IxQHtpmGq16ZF02s5XAZWeGDX8DuvDteQZju+niby3G\n0UlJDDe4RwDm9pEA0CWy/gOFACC+k6l2JvrBC75xLsUsXgoTje4xfkZCMOJ8\nDm0nCJnwtcR7uBBBFAi7Rv+npD3/t9dofqnGXDFo/lIdopzubN9zI48kyb+6\nBRozqZ6ZNZ7aRS3gLpLC/wLkRXXW1UgXoVBiuRBGgOKqiqhSmLk1NxKVfrAw\nmccpzlqZwOmTbRJ9stP1/00pl0zLnTU74mOdj1a93k9pksBfPpKVrymd/Ibz\nF+JMFrfYtIiiLSkzCwwBVtnJfqSW6N19x7ZJVLNTZswHVfBnUuZd1JngHr8S\nte+rVVqXxxhlD6doiLYIr+yVWj5wo9rIMuZMXib840zD/GwLdM3mjTV1u5/u\n0zV9Ay9WI4HwdryrR/APqvcfweN2LooEg2RyTMKfzf86Ca4K4Jy3TKULwRo9\n4GMfTv503mUFA1YcFTehowj86cgW+5jUweBbs6slwvtCkOWlNKkiF/vG1Jjo\nlsJW\r\n=5gXj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.42.0-27549.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.42.0-27549","@fluidframework/map":"0.42.0-27549","@fluidframework/cell":"0.42.0-27549","@fluidframework/matrix":"0.42.0-27549","@fluidframework/counter":"0.42.0-27549","@fluidframework/aqueduct":"0.42.0-27549","@fluidframework/sequence":"0.42.0-27549","@fluidframework/test-utils":"0.42.0-27549","@fluidframework/common-utils":"^0.31.0","@fluidframework/test-drivers":"0.42.0-27549","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"0.42.0-27549","@fluidframework/container-runtime":"0.42.0-27549","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"0.42.0-27549","@fluidframework/register-collection":"0.42.0-27549","@fluidframework/runtime-definitions":"0.42.0-27549","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"0.42.0-27549","@fluidframework/test-driver-definitions":"0.42.0-27549"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"0.42.0-27549","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.42.0-27549","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.42.0-27549","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"0.42.0-27549","@fluidframework/local-driver":"0.42.0-27549","@fluidframework/runtime-utils":"0.42.0-27549","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.42.0-27549","@fluidframework/request-handler":"0.42.0-27549","@fluidframework/telemetry-utils":"0.42.0-27549","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.42.0-27549","@fluidframework/test-loader-utils":"0.42.0-27549","@fluidframework/test-runtime-utils":"0.42.0-27549","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.42.0-27549","@fluidframework/container-runtime-definitions":"0.42.0-27549"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.42.0-27549_1623857631127_0.8079808737000993","host":"s3://npm-registry-packages"}},"0.42.0-27644":{"name":"@fluidframework/test-version-utils","version":"0.42.0-27644","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.42.0-27644","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"dba3031d70b025c1b7d65cff25a6adabcec53f04","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.42.0-27644.tgz","fileCount":40,"integrity":"sha512-TzjewYvnpXjqCS2FixUUgwHU08olD+D+e1BMbOFcucfoYqK7Aj6p4f577l/cYbo+tZYAGe6Gm4hu7Dy42+jx7A==","signatures":[{"sig":"MEYCIQCFXryg1F8kYTHM/q7Xsw2hztyaeT9cH9hd+MmXZkSm0QIhALZ8JWKUL16bRvyFoQ5wGBHRL6BmoeztfN0J67KTbd8H","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":134043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgynNlCRA9TVsSAnZWagAA/EwP/3NvviMYxrckRLJYphVf\nQuL442l7RoWU50y0taNGaXGVmV0UipU0yFKkOWDJ1PHmQ8/8DyEJ9PMDwJtG\nnDyctP3/VAtiqNPcyUZRFXwFs9spqYS6q5JWEHAvWhUccMX8/pBc38THgO+g\nJ53VlQxJ7hlpgVBzK3S7m/7Yv43R5lD9V/U8RtSiBvC/5u5wF05yhJ5dji9C\ngxCMd7SGJP8dlAJqtybUBR+7OTYfuXjKrDatxgUCXJ6wkLfh1q0pmJ57Hm5H\nTILu5iKS0trg6u39JFF4vtLo7OVsFj2dEF4ZJns8ekXa2/HV3cjkKSo8eIL1\nwClGTm2kSGBMLpYwUNzbjRrB1AwW8kk1Q8fLEuBXbzAmqjKzWttka3guKIxq\nyRVsHl21U4uRyTlS1Hi5//f33IbuEdx/5I9CR2jzCz7NHZpiMTmATEZWJ3Vu\nGBMmkrahhr4GaVVvTKfZLIXve4ZDdyTweiDzl/nwQ1+uEW6nsW0Ys9cVB6H8\nDPeRRjDIsaooDiqh8oOKssXsmv8xGCVCYZ29hcgFQKyKoL2qvUZHnfbe11Nt\nr5OpVywY1QtNWbHGodsdQkINKLFx259kfa8q3c3v2zZZnY/sGX2+pr0qDMKs\n3Tblsyt4A2rwXhyc5zUKNUiqPiIqIW4GVCPV6LKUYab8KElBRarW4ZIHk1Ja\n0yKX\r\n=WvSB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.42.0-27644.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.42.0-27644","@fluidframework/map":"0.42.0-27644","@fluidframework/cell":"0.42.0-27644","@fluidframework/matrix":"0.42.0-27644","@fluidframework/counter":"0.42.0-27644","@fluidframework/aqueduct":"0.42.0-27644","@fluidframework/sequence":"0.42.0-27644","@fluidframework/test-utils":"0.42.0-27644","@fluidframework/common-utils":"^0.31.0","@fluidframework/test-drivers":"0.42.0-27644","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"0.42.0-27644","@fluidframework/container-runtime":"0.42.0-27644","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"0.42.0-27644","@fluidframework/register-collection":"0.42.0-27644","@fluidframework/runtime-definitions":"0.42.0-27644","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"0.42.0-27644","@fluidframework/test-driver-definitions":"0.42.0-27644"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"0.42.0-27644","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.42.0-27644","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.42.0-27644","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"0.42.0-27644","@fluidframework/local-driver":"0.42.0-27644","@fluidframework/runtime-utils":"0.42.0-27644","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.42.0-27644","@fluidframework/request-handler":"0.42.0-27644","@fluidframework/telemetry-utils":"0.42.0-27644","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.42.0-27644","@fluidframework/test-loader-utils":"0.42.0-27644","@fluidframework/test-runtime-utils":"0.42.0-27644","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.42.0-27644","@fluidframework/container-runtime-definitions":"0.42.0-27644"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.42.0-27644_1623880549483_0.007889531688875628","host":"s3://npm-registry-packages"}},"0.42.0-27677":{"name":"@fluidframework/test-version-utils","version":"0.42.0-27677","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.42.0-27677","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"125e8072e90adee03d7e48a0f3d77b0dbd33a6f9","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.42.0-27677.tgz","fileCount":40,"integrity":"sha512-hr61/WZ3QjZEFdguIOxcTDpwju7FE74ewIknnkxMtZixuCB2OSjPB+8OCizQ9STqNedt0H6McPsMV+ZRZ6yhyA==","signatures":[{"sig":"MEQCIH1YyMkEFIUqVBXKjbsxSnlAMAzjI5LDqzM3uMKdq0WnAiB3bL/jb0mHzdFnfMTIWN4oCascCAauY8e6SI82hCkfhQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":134043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgy2R4CRA9TVsSAnZWagAA66YP/3j3nn7GJUh3q3kzeGyU\n2eB6Sq/qxk4PsnrMmI/wBzF9Y6Li76Yy6IQYgrHtvC/5k0/40nJiH7yV6Cl0\nFalmfwphNzfwga1hg/0Q0gv4+lGWmoXtuQKIFF+obrtnvsMCHd9XAN/5plog\nb2fXgRs+vTmpEVnr4TkJqS1HFabg/IdTE2G4wiO0em1FQ85M6vvR8X+buZSm\nSALMmkvgqlOfX+RtWFKs3U3ZW1sUiE1pXk7olx2azS+8Ik87nVTWeWShAYyV\nC1yxoK6LhMm5vSBMEB8FvXAggEPCgq+UTN77JQ/l90VB/3kioglOZiN4s/2r\n83NEbu9i9mI/O/QV/ZIDNGo+q0cr0kP0OCgfIx03N6lWrv0mHRb603vJvQYQ\nmynplT8WL3igtSVlsc1JX3+M1o04kKBd/VSRIRTUTNTgLTEPQw1AqZnGr6rW\n5C0iPPsrm124q2gzAeGYYXsSTchscTrH52oxIG+xX6HALpgVjSGe/Vz1MBL9\nrkMepjKg+6EsBMRRdkH7whZ9SwQOtuRQrG3pou1qZRhP/GKVGtfyol7Wy52K\nNdS6YbMw+9ZVEFsYZVGvNxEMNU3tBtZyoWRi3gPCpic1lXz+fJpoPddBU94d\nlc/hIDQMhwK7v6QbffaT0Ct2c5I4DUhuu2DIaLwDBh4JAJyGqrZBCNet1Wi0\nMI0m\r\n=8len\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.42.0-27677.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.42.0-27677","@fluidframework/map":"0.42.0-27677","@fluidframework/cell":"0.42.0-27677","@fluidframework/matrix":"0.42.0-27677","@fluidframework/counter":"0.42.0-27677","@fluidframework/aqueduct":"0.42.0-27677","@fluidframework/sequence":"0.42.0-27677","@fluidframework/test-utils":"0.42.0-27677","@fluidframework/common-utils":"^0.31.0","@fluidframework/test-drivers":"0.42.0-27677","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"0.42.0-27677","@fluidframework/container-runtime":"0.42.0-27677","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"0.42.0-27677","@fluidframework/register-collection":"0.42.0-27677","@fluidframework/runtime-definitions":"0.42.0-27677","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"0.42.0-27677","@fluidframework/test-driver-definitions":"0.42.0-27677"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"0.42.0-27677","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.42.0-27677","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.42.0-27677","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"0.42.0-27677","@fluidframework/local-driver":"0.42.0-27677","@fluidframework/runtime-utils":"0.42.0-27677","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.42.0-27677","@fluidframework/request-handler":"0.42.0-27677","@fluidframework/telemetry-utils":"0.42.0-27677","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.42.0-27677","@fluidframework/test-loader-utils":"0.42.0-27677","@fluidframework/test-runtime-utils":"0.42.0-27677","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.42.0-27677","@fluidframework/container-runtime-definitions":"0.42.0-27677"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.42.0-27677_1623942264274_0.9487875916800668","host":"s3://npm-registry-packages"}},"0.42.0-27683":{"name":"@fluidframework/test-version-utils","version":"0.42.0-27683","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.42.0-27683","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"2396377628c1947ce023eca670b482a196c40461","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.42.0-27683.tgz","fileCount":40,"integrity":"sha512-IJimmz/Al0a89hrbWJ8wNsaRLI3WC9KGvP3EJyAiYc3ZqPXJ6uHZ51lR3NW0F7koScjq9I4jJuAf5SMAXgTUJg==","signatures":[{"sig":"MEQCIE42xSq/qnpyV1zey2JbT2SPQyG6WDJ/yDrA22b4OwuSAiBi9pNcEGj1Ft0ynwc/e69exr5K3BMXz/A6hGurQkOGsQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":134043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgy3lGCRA9TVsSAnZWagAAtzQP/2MVkog7V+kbFEpSc3ZI\nO6dwIkSDp2GlWNkMKaL1CM0p3ZTcDubkuJ8N8Ug8/WHnMxtn7oQAniJ9tVJU\nOW1ogZi/3DqGNsZG4Jiu5cT+mQzERZvibSHVWVwFjIeF53d/CNfwzFLJd0cH\n+7roSzk3YcHgu3drlrlA9tgEanqCHFnt0MixJ6Mdh/5NwIxoCyRg/RBRCOB/\nsPkjclevrRc4TvMj9GUTvmiS6wUx397CgXbUNsagNTpY++coELKqFnDX2ial\nkJYm6iSUAm6RvyCpn34vPwxxs2mOqnikcvuHvEJIIo0O1LiAPBMEFcpT655/\ndPmm25po1V6K6ydNTNj9oBYL7C0q9oDnJCZFwvsZe5ONE5YF48o77G9FUF+A\nn0G6Kq9qR+QRGT/4MAhMDhoB9SmxxLJYS/bwakAuQOK/C1eYCc32jeZfiDhn\nDfGUcrkrJr2BfIwHBoNBtAULfHOkYXWYZlsvC2yaDvVJ81Q2hE8r7XE99JS0\naNafXqvZ4Rz4xVfF37xmGr7wyfTWLAuBYieGZSpY0qdvc4m5PFwhSAS77C10\nHXzafug3PdT7OWv04UNYPKap9iC2zdoBK2BzTKrvHFPvoLCgLd9LC6ddoVS0\nPulNneV9cxL1KXeBh4NUoRi+zka3bCsklprVOTdZTseoOlnGJWEtlG5jmb1s\nbhwH\r\n=ZwOF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.42.0-27683.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.42.0-27683","@fluidframework/map":"0.42.0-27683","@fluidframework/cell":"0.42.0-27683","@fluidframework/matrix":"0.42.0-27683","@fluidframework/counter":"0.42.0-27683","@fluidframework/aqueduct":"0.42.0-27683","@fluidframework/sequence":"0.42.0-27683","@fluidframework/test-utils":"0.42.0-27683","@fluidframework/common-utils":"^0.31.0","@fluidframework/test-drivers":"0.42.0-27683","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"0.42.0-27683","@fluidframework/container-runtime":"0.42.0-27683","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"0.42.0-27683","@fluidframework/register-collection":"0.42.0-27683","@fluidframework/runtime-definitions":"0.42.0-27683","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"0.42.0-27683","@fluidframework/test-driver-definitions":"0.42.0-27683"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"0.42.0-27683","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.42.0-27683","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.42.0-27683","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"0.42.0-27683","@fluidframework/local-driver":"0.42.0-27683","@fluidframework/runtime-utils":"0.42.0-27683","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.42.0-27683","@fluidframework/request-handler":"0.42.0-27683","@fluidframework/telemetry-utils":"0.42.0-27683","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.42.0-27683","@fluidframework/test-loader-utils":"0.42.0-27683","@fluidframework/test-runtime-utils":"0.42.0-27683","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.42.0-27683","@fluidframework/container-runtime-definitions":"0.42.0-27683"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.42.0-27683_1623947590260_0.03213526442500125","host":"s3://npm-registry-packages"}},"0.41.2":{"name":"@fluidframework/test-version-utils","version":"0.41.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.41.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"cb09132b3733a41156646938f3f8266491e12459","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.41.2.tgz","fileCount":40,"integrity":"sha512-2ACaOwmFe+86xqNayWDT2kK1yyIrCRk4ol17Xq/U6sBhsjgdBIIXht2OYM45Lb2EWkU40eJSC1967yJ9XAtCzQ==","signatures":[{"sig":"MEUCIGJTB8X1dIxySrIOgH5KaqNNnvbkWUSq+uPRV2oEaGQpAiEAyCueCF3nMvhRhVV7ckn/uLjkJ9bZXahb1Djn9hsy/70=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0TF/CRA9TVsSAnZWagAACKkP/jY0wzRVfT913Zf3rb5C\nSue++l38XFZWEtzUDOgSKo5ByRR2BB2GR+LXCKkScxfc5PZbeYBi98yCnH9M\nL6NXq1ep1280ABg3TxzBfsWUxbmoYSEZ9N1BeAP8k+idjbU0wmz9/R1/LJIm\nxSR5b0Rma3Pz3//q7Q2znVIR7EIrFmXR2+scRQXBv2Eme9QQdPFYUY3xvOY6\n3PoH+SKkaeNHfzQFmZt2Trvsle6SFh0nN6xTKZ7pxtyPEpaiSMblHYFr+qQQ\nYscperBVP8yTXJo5UMxSnBO8t3huqWcv6tUtVpw+1HAG3vWbCsyAaLQlF1uX\nHz6+a+6bDLuLAkHZnhf/z5IDClDwRgBEusQwwh4oPWmFQB8OkmC9gJWddVaS\ncudSp1vU/ElYtLFabvLa5clpbzvyjgAAuLbI/ImqZnW3ifVzjFwArLtWMCJM\n0F8wI4rVtk6Gxn2h7QgvimPoYpRBF/lREfJsoH6lPpK/tAZcbKUCjWxvjCzk\nKnlnaDRTJx2jX3Gas0RVWSe93pkY/veC4NekHEOxy6Q3RHnbimKBR/J/Py+/\n7J/LcIGzmfqP5HS9GuqXGw2MlBZ9RuLl2WN4N0E+8D06jjKDs0wYcMk1oNxn\nXVpZ0C5TPFcVrFJCJmrR/d816QVreXJjZ4KZlh2dF/vkK7ALlOHkjsEvXa4h\nhIV6\r\n=7E6E\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.41.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.41.2","@fluidframework/map":"^0.41.2","@fluidframework/cell":"^0.41.2","@fluidframework/matrix":"^0.41.2","@fluidframework/counter":"^0.41.2","@fluidframework/aqueduct":"^0.41.2","@fluidframework/sequence":"^0.41.2","@fluidframework/test-utils":"^0.41.2","@fluidframework/common-utils":"^0.31.0","@fluidframework/test-drivers":"^0.41.2","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"^0.41.2","@fluidframework/container-runtime":"^0.41.2","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"^0.41.2","@fluidframework/register-collection":"^0.41.2","@fluidframework/runtime-definitions":"^0.41.2","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"^0.41.2","@fluidframework/test-driver-definitions":"^0.41.2"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.41.2","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.41.2","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.41.2","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.41.2","@fluidframework/local-driver":"^0.41.2","@fluidframework/runtime-utils":"^0.41.2","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.41.2","@fluidframework/request-handler":"^0.41.2","@fluidframework/telemetry-utils":"^0.41.2","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.41.2","@fluidframework/test-loader-utils":"^0.41.2","@fluidframework/test-runtime-utils":"^0.41.2","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.41.2","@fluidframework/container-runtime-definitions":"^0.41.2"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.41.2_1624322431020_0.6578223601543647","host":"s3://npm-registry-packages"}},"0.41.3":{"name":"@fluidframework/test-version-utils","version":"0.41.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.41.3","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"d3b9dbedfe9d61fc33693ce0473c2e636f9742e1","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.41.3.tgz","fileCount":40,"integrity":"sha512-/QSGvIhYUYqtzbjrbnOe00TYPuP/uTOn8F3P3SuWLwM2CXM0dO29f9KNusJriYYSwJwgZejluhuDwwTZE4Xv3Q==","signatures":[{"sig":"MEUCIQCTG3N/akyU0NltUr+rN9FGk0VPfppY8b2FEbtiqSp+HAIgRs2RXdUz1Y3s/3hzo8+YeXBz5JgSCICI+uI+fpPfNFU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0m3NCRA9TVsSAnZWagAA42cP/R9jzE/tHsx9Z+OeH2MC\nfbAkTjhxYZNe4G6a8dDOfRk47ZoUO3RKA0tMtyZ36PU5qPL4MmlR5eu3mqHE\nbDvPFtK9rlUiBPA8fIS1mH6v+/vciFSijqdXebTWKzuZ3rBYHNJx/SB83Xvs\nYsZ2+Gw1zvAgFcK3cbATZ/d/51jWi5x8m03rk4vbaWRW0+nuNWwDkhkXsQaI\nSVhIAK81HRthbWG1FgswEsSAFG5G1cp2Pf7Us6a3XP8zFWd1iAb3r0JAPQd3\nINSL0hnbACDGv3DSgyFZG34mdlvvto3ZYBsu3NE6rInXBF4am4OXGo/qX/Lu\nWXEcNLPQ09uHnMfB+DJivfHCnIDRAuRfcEA3Bgx0IIsRPtw5evhh5qiAY95h\nrx5nlnbXRQOu5QtG6Ustvq2ybro3KxB1Ageg6J9VXUMYIXJxV9Elcb1ew4kw\n/TfcMrHCkJWhDdg9RSmBIiqmBZpM5HHorutOKpM24IJ0Mex3PVbFvJiUDvyp\nPhPDlViNOd9EKbR9x0fzKGxltd5VSpIdmgogvgi9jY2vYzWda4QOK+5Aj/nf\nlB/JdM8e6/K6F+WKmsvabFzTQAZxDgbRExfUVpm8Dd0d6jgHRvOoBVtQjWSR\nJNY6Bj7/vLfHBGBKYXqSKuJc8Wc5dW/fmhx9c2Z9GcoE3DE/mFW6UR0K9+B8\ndxfb\r\n=nN44\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.41.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.41.3","@fluidframework/map":"^0.41.3","@fluidframework/cell":"^0.41.3","@fluidframework/matrix":"^0.41.3","@fluidframework/counter":"^0.41.3","@fluidframework/aqueduct":"^0.41.3","@fluidframework/sequence":"^0.41.3","@fluidframework/test-utils":"^0.41.3","@fluidframework/common-utils":"^0.31.0","@fluidframework/test-drivers":"^0.41.3","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"^0.41.3","@fluidframework/container-runtime":"^0.41.3","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"^0.41.3","@fluidframework/register-collection":"^0.41.3","@fluidframework/runtime-definitions":"^0.41.3","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"^0.41.3","@fluidframework/test-driver-definitions":"^0.41.3"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.41.3","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.41.3","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.41.3","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.41.3","@fluidframework/local-driver":"^0.41.3","@fluidframework/runtime-utils":"^0.41.3","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.41.3","@fluidframework/request-handler":"^0.41.3","@fluidframework/telemetry-utils":"^0.41.3","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.41.3","@fluidframework/test-loader-utils":"^0.41.3","@fluidframework/test-runtime-utils":"^0.41.3","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.41.3","@fluidframework/container-runtime-definitions":"^0.41.3"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.41.3_1624403405274_0.7648799766631509","host":"s3://npm-registry-packages"}},"0.41.4":{"name":"@fluidframework/test-version-utils","version":"0.41.4","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.41.4","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"7c7609ab349744571381445562116691f05ffdef","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.41.4.tgz","fileCount":40,"integrity":"sha512-CFudAmyXtRTpmXpOib7a7bVgFFspNcUnmWV3NJOjTL/cRjGGEtTEPoinStj/Im5WBYh2PHFOwysSo/Si7cEP8A==","signatures":[{"sig":"MEUCIQCCTYxxjKqZffTx/ljWS1Tcea/Zv+sTTeV7thvgAtQbYQIgBjQE5SCMOoe1mPjAIQyuV2CcGWGNNxsw9L8eG3Bt5UU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg07mCCRA9TVsSAnZWagAAbJsP/jUEFDUN/b7RlyZM1uyS\nVGVxyeqZBFP1W8YsDLpTyjbC77CUsyLYAlP+HZl/gn90vVuV8rXG5mKd/Bie\ndw+xUDNCrfO2gYTVL7CkVop7DLa7xAJc0R5rhzyy/rxrY58+0ncZtivyYk87\ni2k8Ne1qpf6u/k5KnbOtGXcQKBpypJFhH7KrvB6LfEtUZk+kX/YQ4bSci8E9\nvQNixyU4E2+vREO8OiM9/ieNVyi6Kmz0T8PZ619DBlMDJKwSQU+1F2tSkX4v\nB5fXdRkJTNkMYsJqJIHQMbOQ4q2MR/vQUYRXBkaGS268jthzMBYQBOlw0dvK\nT6RvZSh54ifyg7pDj1b2kFAHf9APXKFTG69g5poARPJMI86iRgGGH+Y8PcYq\nLR3ZTc3oeOuYhRWmoEaGhksi7bn6ZW/1RLDH7G7aL64bSz766rSEsImHWb/K\n6RlDTIgXYG10Ao0Qc7Yjz0kJPW51KewsOahjcn8n6gLqQLwrObT9uRnAWMyO\nrp7UtU2+Dg3gdmY3G3q6e/AWrwU8cttAa+r8AMY01muaDh2pTCAwgWgkOEzF\n16f4bDfmkqlqU2gfDZXnG/ZfIGvw489ckoHhovZqErlM0Nr5x2lWvbLRDfwO\n3AljpUlh/Owk2gzbvG1NMxQxTmxS86JfiJbaaHpg/3dKFGLOMxFOzRFKjyu2\ncKeE\r\n=zmXG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.41.4.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.41.4","@fluidframework/map":"^0.41.4","@fluidframework/cell":"^0.41.4","@fluidframework/matrix":"^0.41.4","@fluidframework/counter":"^0.41.4","@fluidframework/aqueduct":"^0.41.4","@fluidframework/sequence":"^0.41.4","@fluidframework/test-utils":"^0.41.4","@fluidframework/common-utils":"^0.31.0","@fluidframework/test-drivers":"^0.41.4","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"^0.41.4","@fluidframework/container-runtime":"^0.41.4","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"^0.41.4","@fluidframework/register-collection":"^0.41.4","@fluidframework/runtime-definitions":"^0.41.4","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"^0.41.4","@fluidframework/test-driver-definitions":"^0.41.4"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.41.4","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.41.4","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.41.4","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.41.4","@fluidframework/local-driver":"^0.41.4","@fluidframework/runtime-utils":"^0.41.4","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.41.4","@fluidframework/request-handler":"^0.41.4","@fluidframework/telemetry-utils":"^0.41.4","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.41.4","@fluidframework/test-loader-utils":"^0.41.4","@fluidframework/test-runtime-utils":"^0.41.4","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.41.4","@fluidframework/container-runtime-definitions":"^0.41.4"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.41.4_1624488321841_0.5818246438491748","host":"s3://npm-registry-packages"}},"0.42.0-28410":{"name":"@fluidframework/test-version-utils","version":"0.42.0-28410","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.42.0-28410","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"3c29cdb48c747445cbfb7b82c908662ba57225f7","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.42.0-28410.tgz","fileCount":40,"integrity":"sha512-GqZC6b5lWxgzobIe+g15WXMPZQRKjQqcWLmmOu9+ey9EkkDFMzOUCBiZ9b7zV5/U7ZZXoUAu6iCBJ//Ahd/jLA==","signatures":[{"sig":"MEYCIQDnzJaJfzq89yBNnB+zPXpK9XpT6tq/+3SvFmkan9hDcgIhALrikCvqYzpc/JK8ZptMNfLwiv6Q2NVtWcVWCnJMl5jv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":134043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1kMvCRA9TVsSAnZWagAARb4P+gLz/H9Opg3U6/WFtIZv\n0uMJA2op9T8eMoHp7hCkVteXNpYpIPN2nzpsKimrZ5/2+ihKvm4r5Vow2/JC\n6vFRa4oUR1uDHi+OwllHTnYiS0Cs81kUI7E0fdP24gB7EB5ao4sT5i2cjPu5\nxE1m/CDf88IPFPTa0WI00M1dqj05parLRNLG4OUAeQpoofVku6OWkiTun0nH\n2NAtgghjdjoI78ESuis5/TP3LFG8AMFxmJhfQO8eGTpOn6rknyfX9UQLat1i\nls1wKSKBTuY7EeKxPLCur4bHO56TbnSqTieyk9ZPPNORN5w1mBz1yUJyWiNL\nDw3PWqJTmgpPd28saPgNGuP0tdPaQIFfcQjiIEWwwURfdriEDFx3uUHtxiCX\nLnAR0TpLpfimcGZyeeiLgvWK0ufM55Xzi8tsO5zfkUpXkIc++8xwIua6xKEW\nbe5UxBfx2h/9IwpD7Rnyd1FjZ+ZExdQabnrGvG6WEf0FuPmh/B+WYhSj6jrF\nD8PQ0uCo3wWK3pBkSE1jU61FuXDVkxlXFmMxfg4j/57i7SxSB1d4clrqWmBI\nk+t7yJ+u79H/XqzMNTo1RGOLYu/wxQsq4DuQ86tDcX4kfB8CdC749QbVomH2\nWtzFNZoRQE2N1hzjrqHrLYXKyf0Q4a6ipJwnNEWqcWrRwVLc+ZEIUC4a0s06\nb9Jn\r\n=pUaa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.42.0-28410.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.42.0-28410","@fluidframework/map":"0.42.0-28410","@fluidframework/cell":"0.42.0-28410","@fluidframework/matrix":"0.42.0-28410","@fluidframework/counter":"0.42.0-28410","@fluidframework/aqueduct":"0.42.0-28410","@fluidframework/sequence":"0.42.0-28410","@fluidframework/test-utils":"0.42.0-28410","@fluidframework/common-utils":"^0.31.0","@fluidframework/test-drivers":"0.42.0-28410","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"0.42.0-28410","@fluidframework/container-runtime":"0.42.0-28410","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"0.42.0-28410","@fluidframework/register-collection":"0.42.0-28410","@fluidframework/runtime-definitions":"0.42.0-28410","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"0.42.0-28410","@fluidframework/test-driver-definitions":"0.42.0-28410"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"0.42.0-28410","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.42.0-28410","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.42.0-28410","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"0.42.0-28410","@fluidframework/local-driver":"0.42.0-28410","@fluidframework/runtime-utils":"0.42.0-28410","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.42.0-28410","@fluidframework/request-handler":"0.42.0-28410","@fluidframework/telemetry-utils":"0.42.0-28410","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.42.0-28410","@fluidframework/test-loader-utils":"0.42.0-28410","@fluidframework/test-runtime-utils":"0.42.0-28410","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.42.0-28410","@fluidframework/container-runtime-definitions":"0.42.0-28410"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.42.0-28410_1624654639546_0.1406922857081392","host":"s3://npm-registry-packages"}},"0.42.0":{"name":"@fluidframework/test-version-utils","version":"0.42.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.42.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"ad9d6acf174828be3354c1252c4eb7d1e53ad9af","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.42.0.tgz","fileCount":40,"integrity":"sha512-Zed3oJhj4zvHCcqD3pS/COmZWblnyX2RbcEi4DDtp2pyg20KCi8m47xlJXl2rk6fxK+A7RAPMz99tBdGK/XsDg==","signatures":[{"sig":"MEYCIQCgDyrmhAV4BxZSvpysXpQZFZJVv6RO+qpxa4sPIZAGVQIhAPSnEXrpVR0M4tz0dH9gfc4F6IfsGb3wmqOsAolWdHkC","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1omSCRA9TVsSAnZWagAA5cwP/A6eIFmd17qz5Sk9Fzwm\nKVPCVTpve4LGKwRMc+9jU9AuF4wIqsMnJQT2BqHjVbVC9sguVaYJNt9kszxj\n1l8wNBPFYaNLPQc96Hr38xG3j3lnVfBmZpfamLm0fdfzZ+2UkzS47fP8TdeO\n964wRRfJLxWDVw3rY7sZ5zEvbV5RoNDx/LIw5rKDfXtlxFqq0UGlo5j2LNtb\nl6bMpuqcrtl8lWZl/nHkqEmRr6FMD5wzwCYGyg1o0YKsFYHmdaIrhI2CStVa\nylEK6jzvjD6r+99kXWaGSFQtVgIei7KgWtFtcQoZOBh+2GeKU+ZZuNz0AK3b\nMHBheZT2bgGq/756VMPwOd4jZdlU2QjX0sKmXdrJdRnosr4rmN8nvJzqtmMq\n/46cHFElx/53yFfQv7qNegXN25HuI/qxLz+xf1wX7EMPvuTy/v5C81jv7UGZ\ntG8etciZdYkPqW5E64Eo9ALez/vreWK2Ll7WHO1xnbLoURHnO/ttei0x7hxI\nR+ZXKEVmYkikVm7qTpXvJHdfFlVDr4zSZMIPIEdKB6ul5rcT6sauXSSwAXbt\n1HrAKFNSgve3DgZ1yQBwGylUFmr1tMIoRUVGRgwrdraZYFuW24+a9I4jeKG6\nrUqr5K1yz23NrBrSx7QJpejfSpVSqFBTLvEMBapagR2wPj3NdGTAgLcGYwJO\nadq6\r\n=jtl8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.42.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.12","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.42.0","@fluidframework/map":"^0.42.0","@fluidframework/cell":"^0.42.0","@fluidframework/matrix":"^0.42.0","@fluidframework/counter":"^0.42.0","@fluidframework/aqueduct":"^0.42.0","@fluidframework/sequence":"^0.42.0","@fluidframework/test-utils":"^0.42.0","@fluidframework/common-utils":"^0.31.0","@fluidframework/test-drivers":"^0.42.0","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"^0.42.0","@fluidframework/container-runtime":"^0.42.0","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"^0.42.0","@fluidframework/register-collection":"^0.42.0","@fluidframework/runtime-definitions":"^0.42.0","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"^0.42.0","@fluidframework/test-driver-definitions":"^0.42.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.42.0","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.42.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.42.0","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.42.0","@fluidframework/local-driver":"^0.42.0","@fluidframework/runtime-utils":"^0.42.0","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.42.0","@fluidframework/request-handler":"^0.42.0","@fluidframework/telemetry-utils":"^0.42.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.42.0","@fluidframework/test-loader-utils":"^0.42.0","@fluidframework/test-runtime-utils":"^0.42.0","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.42.0","@fluidframework/container-runtime-definitions":"^0.42.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.42.0_1624672658210_0.7101552700181899","host":"s3://npm-registry-packages"}},"0.39.5":{"name":"@fluidframework/test-version-utils","version":"0.39.5","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.39.5","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"11892327d4ebae3563ad9c797fd5502a94ea8713","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.39.5.tgz","fileCount":40,"integrity":"sha512-TUmS4SOBnl3Gm08maaxEt8h4QAr5wmMzUJkuP/TEKgEH/x/e0HVVhIqCM6T/j8IdYIv0xh0fhk7HI3RbFaM+ow==","signatures":[{"sig":"MEUCIEU3h99bZxDzuMqX2Ri+QS/TKgtpuAN6RNBjXmyZ+ToKAiEAwYl8oUcy/aGQSv4tKZb9C54dm7kxkeqnZepat5A8UqU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127719,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5iQzCRA9TVsSAnZWagAAFjEP/1dLRCoG7czsFbCzTNMK\n1eaSlwspHz2oY2Xewa7vQ4U9WCtFeCqBs1cXvKRyfKg6WJ4l6O1rHO8KXTC4\nQUEGQN6ErY4vi96Ans8st7pzCWE1WLgtYxgD942I56GDaX0T3chttPTCVHIP\n/sMgs8KEUcXKcF1h/8Ymvy7NnJhN9DAq7LaY/NOpDZ58eEv3sZW9CQ6CWc7w\nAJN7fzpdjKS5NErd08wjAS3YfkMqLEejDHiEG9zydkRIDdHoZhFlN+hp36eX\nPgS/MF4Ope8yhuA3oFC4XpwYAthx/mavltjn90q62NbZaiD1gB8Up/wfBfkr\ngLPyzod7akwkDLbjQiFHMU1MAGqX0+o0HwhKBTirZ3o4cPIKN4iLyEPOJI29\nDia4GtHYvAHhm0vcXj1a+heMcRLQkRrolT2oDNSS7sHlKx5pg4bEilei6KXU\nfmiNt6/pTY/t9Au4ASid2wbhTHsfukDdgGI38/2/0r3//swWnJk74cCS179e\n0yWBUitoQcUY4lB79VZdSj77L14wjyAFZI0pbtSmTdJtwp69MFo1tWipv121\ngy2/enNVVv0eyzUl2NEU39BnRRPNOSV/5N/AL2qv1BdLLlsC7+/W3yx64Mov\nVBNvKafhrND4WYOUW/342XXR6s9vMG5guz/J9dH4reAH9pkPzBiWcV2B4dHM\nXhRf\r\n=kB0z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.39.5.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.13","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.3","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.39.5","@fluidframework/map":"^0.39.5","@fluidframework/cell":"^0.39.5","@fluidframework/matrix":"^0.39.5","@fluidframework/counter":"^0.39.5","@fluidframework/aqueduct":"^0.39.5","@fluidframework/sequence":"^0.39.5","@fluidframework/test-utils":"^0.39.5","@fluidframework/common-utils":"^0.30.0","@fluidframework/test-drivers":"^0.39.5","@fluidframework/core-interfaces":"^0.39.5","@fluidframework/container-loader":"^0.39.5","@fluidframework/container-runtime":"^0.39.5","@fluidframework/driver-definitions":"^0.39.5","@fluidframework/ordered-collection":"^0.39.5","@fluidframework/register-collection":"^0.39.5","@fluidframework/runtime-definitions":"^0.39.5","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.5","@fluidframework/datastore-definitions":"^0.39.5","@fluidframework/test-driver-definitions":"^0.39.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.39.5","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.39.5","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.39.5","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.39.5","@fluidframework/local-driver":"^0.39.5","@fluidframework/runtime-utils":"^0.39.5","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.39.5","@fluidframework/request-handler":"^0.39.5","@fluidframework/telemetry-utils":"^0.39.5","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.39.5","@fluidframework/test-loader-utils":"^0.39.5","@fluidframework/test-runtime-utils":"^0.39.5","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.39.5","@fluidframework/container-runtime-definitions":"^0.39.5"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.39.5_1625695282757_0.9964606516226533","host":"s3://npm-registry-packages"}},"0.42.1":{"name":"@fluidframework/test-version-utils","version":"0.42.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.42.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"96c8ad9f1be10e2e95179d4fb1df53b7a675187b","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.42.1.tgz","fileCount":40,"integrity":"sha512-rFJ6qEfg5BoHsfu/yNoGRcbToBEqknkl7IJR3PDp6xYaHYN5ByuHUmhJW0dvV8oTVHeZPdr2ZUI6tDy03ejigw==","signatures":[{"sig":"MEYCIQDCbQn3HNgX0hF9muhe+ggq3HQ/k2yj0g2h8Gf++moqVgIhAJ/ovWHkn4xS25TeFzpQFPiliDEuPP7agTqEw+3jVL6t","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5yi/CRA9TVsSAnZWagAAxLgP/ig3IK0+x9eCqmHg5MEd\nWgUg8Wkf/rRhu1Wd3dXgw827ZAoykT7i4lwAOnC9D5+LUUg39mU4NErNsrkX\nFxGSv7LVqJ9MVfNA8JpjcSFhEyvUfK3nz0u5ckMGqP8tCgdNb36AYwyWFdec\nPGSmj7UzPvMCNsVzmqhVldLNmES0XBPDtsOC4kO4PQL9nMsyl9nwWjnUK+68\njBWVyJO/XaQolHIm73Ni8u5IOsWfq5PY2prfJjPlEmvZLblrt1WRHhtYkrUJ\n+VI+WyROQkZu727iomC5LUnz5HO/FUjK75qNzb11coGcYsrNgWCu7HBCJJVH\niSfD+RiYmPVnyqC5qTtx2OSXZ9tZasZaeVGcaYOthedcioVFh4tBfnRFIB+L\n1Jq0CXzY1/wSd+wzY/yeGL24u0qqB+J5X8WdXO3TvfB9LkzVCBXjPjOLsJ2P\nDsPH8mDulyz0QigzIVshn352Lp50K3FiE8DCinSSQvuli+Cy66bdi+JSnd2B\nHnUbNXlhxSEtJm5Vj2Ofimidxq1y9gq1IZLc2L/ct/RWeZ7j6VTRw+yBRSlQ\nNQyaoO4aXoW2Z3EzEZPXUBxjd+yWvlZhbefPglEjRVOofBEFMzbAGzJYsFQH\n1BB6INJcbF03sk4xUP15RkvwEaw7/7UmegIr9Ay5KZVoqb6JmX9q1oe4MhcY\nc0R5\r\n=ijFc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.42.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.13","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.3","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.42.1","@fluidframework/map":"^0.42.1","@fluidframework/cell":"^0.42.1","@fluidframework/matrix":"^0.42.1","@fluidframework/counter":"^0.42.1","@fluidframework/aqueduct":"^0.42.1","@fluidframework/sequence":"^0.42.1","@fluidframework/test-utils":"^0.42.1","@fluidframework/common-utils":"^0.31.0","@fluidframework/test-drivers":"^0.42.1","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"^0.42.1","@fluidframework/container-runtime":"^0.42.1","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"^0.42.1","@fluidframework/register-collection":"^0.42.1","@fluidframework/runtime-definitions":"^0.42.1","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"^0.42.1","@fluidframework/test-driver-definitions":"^0.42.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.42.1","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.42.1","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.42.1","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.42.1","@fluidframework/local-driver":"^0.42.1","@fluidframework/runtime-utils":"^0.42.1","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.42.1","@fluidframework/request-handler":"^0.42.1","@fluidframework/telemetry-utils":"^0.42.1","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.42.1","@fluidframework/test-loader-utils":"^0.42.1","@fluidframework/test-runtime-utils":"^0.42.1","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.42.1","@fluidframework/container-runtime-definitions":"^0.42.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.42.1_1625761983231_0.4890220033981725","host":"s3://npm-registry-packages"}},"0.39.6":{"name":"@fluidframework/test-version-utils","version":"0.39.6","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.39.6","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"5df3d3f2b4980656c37516499f353a4f62220e41","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.39.6.tgz","fileCount":40,"integrity":"sha512-AtVudRomPMnopxRV6tRGJ2SHHFpEjErobC/t9nwY806shcly7YG2k3FRhsygGE3W4ikFnLJGS1MxIzoyoMPnow==","signatures":[{"sig":"MEQCIEHKK3eAufGVNGENdKNPSYzsleDapDNQH0memiccxgZZAiAzP1pUxqWNxzNa/XTWLs0XP/Rf8kQyyE3BtxatNWPgmw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127719,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg52XnCRA9TVsSAnZWagAAsYEP/2YLIc2Msy+Rk3hOm2QN\n9K6kn7IhK01yKSjGyzSExeNZEt13OLxs/+7v7VnTTwzTCfU/nu9IZ7ITuR0J\nwKLMsR+HJNTF382O+BEolYScnc3Z3E5WOCpCiVwYb2qRtCMYPJ5ydxE+XwqG\n8z2XgOpW3YGu+LEAVtLpIVvoO1ylrQd8+tydiVJhviKPAVY/rAzsi1RELr95\n3UaLA81bZi8h82T8zaCYp0DCzge5rRzbb+q0wQhLeaZ6NPRhOmSg9i4xCXmO\nFeKvSOBZJX+jsOvCiciALsSkCmft1Rc792JSzlvVbLzb5qZVjUe3E8eOuqBp\n3J+x1gXnzB3eG8sOvMc5p6GiWnfbyHEnxJ8FPXyrEhQ6uZ2Inp4bwX9EKkuR\ndV8K6fR5YC+NFYD6cuzmkNw9DXHgi7OkOjUmbqOPYuuNZTmpvo3Z3A/MG4ri\nHIT01avl54Rlm1SS7xndwnSPOXFklG6poQjK6VNyYS6F5M205GZ8JKxf7fHh\nVN/7g30K0vOgLfqyHQYXRVzEgYQzZgmL10xmO7jknWafmPh/iRIBH+ZSnpAV\naldeQf2uLg3L/Tc17m72koLKs6sVfDZ8gU9Hz34rLzjRhd/482UYxdt0zmf7\nSfz0RsGw2iHY0pc80UCNoXTLObZkDpur9ykYNk1TQIPQWJ9WFGJKkXYAqkUx\nUzr8\r\n=pLx4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.39.6.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.13","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.3","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.39.6","@fluidframework/map":"^0.39.6","@fluidframework/cell":"^0.39.6","@fluidframework/matrix":"^0.39.6","@fluidframework/counter":"^0.39.6","@fluidframework/aqueduct":"^0.39.6","@fluidframework/sequence":"^0.39.6","@fluidframework/test-utils":"^0.39.6","@fluidframework/common-utils":"^0.30.0","@fluidframework/test-drivers":"^0.39.6","@fluidframework/core-interfaces":"^0.39.6","@fluidframework/container-loader":"^0.39.6","@fluidframework/container-runtime":"^0.39.6","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"^0.39.6","@fluidframework/register-collection":"^0.39.6","@fluidframework/runtime-definitions":"^0.39.6","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.6","@fluidframework/datastore-definitions":"^0.39.6","@fluidframework/test-driver-definitions":"^0.39.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.39.6","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.39.6","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.39.6","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.39.6","@fluidframework/local-driver":"^0.39.6","@fluidframework/runtime-utils":"^0.39.6","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.39.6","@fluidframework/request-handler":"^0.39.6","@fluidframework/telemetry-utils":"^0.39.6","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.39.6","@fluidframework/test-loader-utils":"^0.39.6","@fluidframework/test-runtime-utils":"^0.39.6","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.39.6","@fluidframework/container-runtime-definitions":"^0.39.6"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.39.6_1625777639081_0.2513394204057975","host":"s3://npm-registry-packages"}},"0.42.2":{"name":"@fluidframework/test-version-utils","version":"0.42.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.42.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"b327f08894ade145a06bce6bd33248f7b62a94d6","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.42.2.tgz","fileCount":40,"integrity":"sha512-9YTYCnfeKAPu8JzYGwqTYuYEJBr7MbXcX/GIMU89T7hPiZBwdEkgUh3XE71D//lanskoQKBrOmdF4QG2b+68qw==","signatures":[{"sig":"MEQCIA900TeISuA5lLCpjQ9PlgCGbwbCUFM/oncW2u1Yzg+WAiBURMMKQgArxETYW8LDmjfGAkDu7TgjvKqo/nnqDoyHmw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg54LqCRA9TVsSAnZWagAABIUP/i6jJI3jGhyvBkviSxOw\n1A0vbBxzdJg8H6XL7v7S02o15IyCUNNdUnWTiHtfyWF+0sraPx/Z4pAJAbq1\ngWURPUh2fhVZHwsw0DGszEXaoKSXbQnEQNCh8KSjKM2n8xJuIdlIBQA/gwNb\nmjCA0t2tPFXnzz6ZnQMQ1JWQMbhnd1jDkk+1yjF6hZpEPRNmf0i+j9zgzINr\nnR63DiiG6RWyhSRpjEjZ87qNkd1IR9Bs9I+QFdl6bM5khjOMKRv7uFwlEaEq\nzTpCg7HwDeaUhs7cFSdWZsiLU9kDEBDbWH6A+ZWRF9HwMhSfKJXFfL0Epmrr\nGAbw5otj2YuJqWrTrfdIO0nJM3WGdRJUPZSZX1kpFtXZxd8D2dHW4mKMQedx\nkLzb+PlLyYMgxn82srwstkHbueeoG/ZFzvhvjQ9BpnjG26QzZJFM4K1aEQ8d\nrjNmhQL4AU1hrnL32ovTJszKfJhHIve5he+JQr/DQQ+klrJ6Uh1M7221cGob\nF4ZBBIsbQkb6Z+FP2IihCkharYMCxEDHfSNJDK8ZmMRZ2VJlbNX9NlwRxrmA\nE4pxpE+TwT845OSNAWw1yAWMtC6+K+CslmwCmoRzfLsycbuH8isYt0ssrvch\nwUXEXfS02nbcl9aZ9jCL97Kxjl+JzizKXMryzMIYiDa9gI2gXt6ndG2cQFdA\njxaL\r\n=OweX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.42.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.13","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.3","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.42.2","@fluidframework/map":"^0.42.2","@fluidframework/cell":"^0.42.2","@fluidframework/matrix":"^0.42.2","@fluidframework/counter":"^0.42.2","@fluidframework/aqueduct":"^0.42.2","@fluidframework/sequence":"^0.42.2","@fluidframework/test-utils":"^0.42.2","@fluidframework/common-utils":"^0.31.0","@fluidframework/test-drivers":"^0.42.2","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"^0.42.2","@fluidframework/container-runtime":"^0.42.2","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"^0.42.2","@fluidframework/register-collection":"^0.42.2","@fluidframework/runtime-definitions":"^0.42.2","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"^0.42.2","@fluidframework/test-driver-definitions":"^0.42.2"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.42.2","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.42.2","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.42.2","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.42.2","@fluidframework/local-driver":"^0.42.2","@fluidframework/runtime-utils":"^0.42.2","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.42.2","@fluidframework/request-handler":"^0.42.2","@fluidframework/telemetry-utils":"^0.42.2","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.42.2","@fluidframework/test-loader-utils":"^0.42.2","@fluidframework/test-runtime-utils":"^0.42.2","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.42.2","@fluidframework/container-runtime-definitions":"^0.42.2"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.42.2_1625785065574_0.6660224482531969","host":"s3://npm-registry-packages"}},"0.43.0":{"name":"@fluidframework/test-version-utils","version":"0.43.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.43.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"7b00d7d54fcac1881746a75fa021f68fe7e4fcfa","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.43.0.tgz","fileCount":40,"integrity":"sha512-nfSpLNQ4X1zI7Uxygdj4umifk8XpB7B0lFSQVLFJph9nJ4M81Y9TuGklLQZkiC8lglSJY4EYF9AI3Jb+f9+avw==","signatures":[{"sig":"MEQCICNe7S2EPAWbXxZJPv717RLIR8PgQuI781v82+tm2SkNAiBlwa3XqEQsRFbkWMh8TLmBm2H3ku9PtVbqPsTGjCl6kA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg6KmsCRA9TVsSAnZWagAAi+cQAJgXkRjhpGxnJW5BThOd\nu/6UCuyErUuIv87Q3+IjynUZHuB1JYPOrJ0kYm58a40IUoCihyzjsswiidLX\nsiKYyprDR/21a/PAavrhDJWqtVvJFcYOvkKKdqSlNAe8jdiqxhw871EQlnF5\nVCUXiroQgWYq2plTPzFyzKXPw7N1Pjhw6Sb4yGyYpT+AVNxc8/uI/IndlXp9\nJypk31AlWx+l0aaYqWL7+t1IbIfQUDQ/LzJNQYLfdCxF0Ec2EOSts8ZC07Nf\nsl9zR5570DmtIXx1swJdMmV7xoC+fSEFRVqv4QFLQAOqKtP4Hdkq+SW57Vxc\nn2N/92juAAyU/Q1rf2InVs5EBIuOurlD0ElSBF2SFdKKKKZB5T5VBwjeE8s6\neUc9rAhAzNBOVgFZ0NuqtuqEXkQA9u1abRjPsOjBL/8OVkj8AsKV67MeUHCA\npPkmcYkL1brYiZ9k5cG4bPG4E4DlvDVP5r0Bl+QQQ7miSCRiCbRZz8lqYnXG\npMWQPGNGlQOUbJy7iESozUgaqQ8GYTnuGGyIblBx8aiFUi/OQH6iiax2NHPB\nWw2EtDSQ4RBrKk50nnF1pQHCYHNHFYhuA2IKd0wW1HDlxr+VustAekfYC4UI\n7XL4Qq+IQNH6HDUQCS+tDpzG+ZOcOpylX6A+ARowJZiVGOBWXyIm1Du751pi\naEfT\r\n=EvZb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.43.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.13","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.3","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.43.0","@fluidframework/map":"^0.43.0","@fluidframework/cell":"^0.43.0","@fluidframework/matrix":"^0.43.0","@fluidframework/counter":"^0.43.0","@fluidframework/aqueduct":"^0.43.0","@fluidframework/sequence":"^0.43.0","@fluidframework/test-utils":"^0.43.0","@fluidframework/common-utils":"^0.31.0","@fluidframework/test-drivers":"^0.43.0","@fluidframework/core-interfaces":"^0.39.5","@fluidframework/container-loader":"^0.43.0","@fluidframework/container-runtime":"^0.43.0","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"^0.43.0","@fluidframework/register-collection":"^0.43.0","@fluidframework/runtime-definitions":"^0.43.0","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.5","@fluidframework/datastore-definitions":"^0.43.0","@fluidframework/test-driver-definitions":"^0.43.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.43.0","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.43.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.43.0","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.43.0","@fluidframework/local-driver":"^0.43.0","@fluidframework/runtime-utils":"^0.43.0","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.43.0","@fluidframework/request-handler":"^0.43.0","@fluidframework/telemetry-utils":"^0.43.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.43.0","@fluidframework/test-loader-utils":"^0.43.0","@fluidframework/test-runtime-utils":"^0.43.0","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.43.0","@fluidframework/container-runtime-definitions":"^0.43.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.43.0_1625860524306_0.6188175528228554","host":"s3://npm-registry-packages"}},"0.42.3":{"name":"@fluidframework/test-version-utils","version":"0.42.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.42.3","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"e785b07a19d302251b2984c8e5df959f0e1a57f7","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.42.3.tgz","fileCount":40,"integrity":"sha512-TZlv5I45xvfeMDFc+D+FgX35K/5YvaicZxgASQJM2TRpkGIRCwouUeb2I5LXMXsbf5HWJc+IcGyS3kmNykwOVQ==","signatures":[{"sig":"MEUCIQCo6Jtt+bGYZpEtNVozqrIxmsnOWuNqBt2AFhuk32GDKgIgAjtVOKiVnhFYi5J1ukn04jVwBLQ+ehKeKc8zxNw7iqM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg6LkRCRA9TVsSAnZWagAANRcP/A3pHP2x4/C+uoLwAMB+\no/qqYfJxqPBxRzbannfO464fbjw29egb8hfQM53g5f5lT4e6RZFOvB8Tm9wL\n7PUi0k3OV4BOiazb27f8TKTVSacUtJqSuKFJ9nnsO4uH+7sE5SFa+p3eAoiE\nuGJeuHPQvit9T2MTQPMNDoVKLH51nmGxZaQQPWh3NB6LFTrW+joP/u86QjfL\n7OnHGxa58HdLU0QMvPMb+uLeERhG4yNKeJH/sp8pwVvBiuEi5OPNkFMrg/yQ\nn/SwEMl3PI77hIW4TOdadK/OzF15TmhGq2jWVz5ExG/y1Kyrn1EDkHhgrbCG\nTv7YIQ2/RYcX4auYAn4bNjxttgLpN3M7Gc7sPCZZX5rufZnF+SqTWdrEmva5\n1Kn0RvaotPMpsJ1gP6T/YuWZ/FByQETQzCLy7pBdz4MBTMNg8q9XlWcFqHEY\nf9wpd5bmrKqLhKd/P5G/7UxgO5cbQMTRlTg64ZRRaUsMFRIFV464BmHTv86X\n90C+7OWPY9VRXy7+SsfUt8dzIJz8HNWPdYevktO1wBcYlQdcDXt8b2z80vGa\nuXzsT22WN5xk2YdoaRxo/BRclbPbk7nuh+hlhM2HM2+h8yzryNTWfyBUhDv9\n4zxmJhNVaOF+Its/Hl44fPfAei8vISt2IL/3GfK+I8VSLuVBR51KlZWZ8UdS\niyax\r\n=JMG8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.42.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.13","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.3","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.42.3","@fluidframework/map":"^0.42.3","@fluidframework/cell":"^0.42.3","@fluidframework/matrix":"^0.42.3","@fluidframework/counter":"^0.42.3","@fluidframework/aqueduct":"^0.42.3","@fluidframework/sequence":"^0.42.3","@fluidframework/test-utils":"^0.42.3","@fluidframework/common-utils":"^0.31.0","@fluidframework/test-drivers":"^0.42.3","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"^0.42.3","@fluidframework/container-runtime":"^0.42.3","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"^0.42.3","@fluidframework/register-collection":"^0.42.3","@fluidframework/runtime-definitions":"^0.42.3","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"^0.42.3","@fluidframework/test-driver-definitions":"^0.42.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.42.3","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.42.3","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.42.3","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.42.3","@fluidframework/local-driver":"^0.42.3","@fluidframework/runtime-utils":"^0.42.3","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.42.3","@fluidframework/request-handler":"^0.42.3","@fluidframework/telemetry-utils":"^0.42.3","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.42.3","@fluidframework/test-loader-utils":"^0.42.3","@fluidframework/test-runtime-utils":"^0.42.3","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.42.3","@fluidframework/container-runtime-definitions":"^0.42.3"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.42.3_1625864464631_0.31758933170827786","host":"s3://npm-registry-packages"}},"0.43.1":{"name":"@fluidframework/test-version-utils","version":"0.43.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.43.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"f7afd891ab81a2c7b89e062c2c968ea303489780","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.43.1.tgz","fileCount":40,"integrity":"sha512-w16oW94XyF1x/r9TlL25W6jg7Iu4lwMcMYnS9lpKPuTEQ7J8cZXW49FAyXzhUi+F+YOPvTBWANk+SX3S1UaXCw==","signatures":[{"sig":"MEYCIQD5IFvXKcFbGWwPij/MVHWsXK0DPVOF6wXajcZJNxTjzwIhANrVAotc9296K/1iUXDPXhM5yz0akI1Qmowis/hD8b64","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg9gf5CRA9TVsSAnZWagAA+DkQAKIanrF2X28ZCMX2ReS+\nhfbOlfUapFrhCqp/I+uGOIY6/n8y2wj4PZFD81BG/2J/uCebH+eppAXaULlo\nvN9ixO/ZO+80Hvhj/QhKaUGOESm9OeYQN3kWY27LLCZ1jFvs2FExWG1RBEXq\n7jb1iCilkC8NKc8JCGJ46r50SQMFtgOu+4vFklkQaP4Ru6nuox5xXsaEeeoM\nq1tP0ba2ifO86cHqfPhpqY2wo3LSFl/XvUSdlJ1n27MEK7xgocc6TRbyfRgv\nFWmbSAt+cfrGYpH08K427uct2uQKg016g4CNi9vBgIw4wDogMPDdTMvTrRd3\noyJoWUGhdsYbgYCqFZQGYG+E1XUeND79lQ4w0ajAe7r7luTJ/cmWY0xQDMO3\nQQyuTrIHpxeEBFMMHIspKlC52zorXLhfUmrQK8WaK4ROzlToImr1PcqoXq60\nQHy9A6wqux6bmM730wPvAOgbj/O+7cnoIDKGfaGWAi5MRvehQVAa1hF5c8T9\nW7ilZKOubOnXcKSs98aabrTou7bThtaq9jgxrgW0QalOZvmUAm/pcs3XW8qP\n7iePS0+SUwbva7QG5VITqfrnA/zLbLnb3y4gF7AVfiQS8QDFZnB33dSn3Bwn\nUdUA6WqPaE3ZvbiEHBeXXdJw0y4U4X3yAZSj2pG1uC7WokTxYaI8Su6ks2EI\n7vrB\r\n=4Z6K\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.43.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.13","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.3","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.43.1","@fluidframework/map":"^0.43.1","@fluidframework/cell":"^0.43.1","@fluidframework/matrix":"^0.43.1","@fluidframework/counter":"^0.43.1","@fluidframework/aqueduct":"^0.43.1","@fluidframework/sequence":"^0.43.1","@fluidframework/test-utils":"^0.43.1","@fluidframework/common-utils":"^0.31.0","@fluidframework/test-drivers":"^0.43.1","@fluidframework/core-interfaces":"^0.39.5","@fluidframework/container-loader":"^0.43.1","@fluidframework/container-runtime":"^0.43.1","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"^0.43.1","@fluidframework/register-collection":"^0.43.1","@fluidframework/runtime-definitions":"^0.43.1","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.5","@fluidframework/datastore-definitions":"^0.43.1","@fluidframework/test-driver-definitions":"^0.43.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.43.1","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.43.1","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.43.1","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.43.1","@fluidframework/local-driver":"^0.43.1","@fluidframework/runtime-utils":"^0.43.1","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.43.1","@fluidframework/request-handler":"^0.43.1","@fluidframework/telemetry-utils":"^0.43.1","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.43.1","@fluidframework/test-loader-utils":"^0.43.1","@fluidframework/test-runtime-utils":"^0.43.1","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.43.1","@fluidframework/container-runtime-definitions":"^0.43.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.43.1_1626736633709_0.3260429094004951","host":"s3://npm-registry-packages"}},"0.42.4":{"name":"@fluidframework/test-version-utils","version":"0.42.4","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.42.4","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"066c993a3907cc0dca5021a9e4976f7d3db1050a","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.42.4.tgz","fileCount":40,"integrity":"sha512-8g5WdmZJBJ62f8f3O532pt0PzREAeDRCbeBTpq/r+AmaeatZO71Dzh/CsfQrPvHjTxkXukYMtqbh/ahuAp22kw==","signatures":[{"sig":"MEUCIQCo4ggPjVVSsA4GMJ+xUyNa6SSZBViYk9LoU4JPNfuFCQIgEBzVg2mbrYuiwZk0aasYVRymmLxNAASWGCO08gM5Rfw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg9hZgCRA9TVsSAnZWagAAEywP+gJ61al3fS9MlqAIG+v0\ntSoVMZwhvMAU6EFLMOYO0s+7UF7KbxCI7YyPwac1A4jkeeS1RAyTxfGaAzjr\nG3zuMGJTZNmRQzYGCqu4NyfKq/TuwEPYF1UGeBCSiUOsn3r2dUJMdEE/HHjS\nmeTB+Zb1yCaUJ7KOYauJy1dz+SA5lUkujAfgm+2SbGjZIioxu93tSD5pXgnq\n/N4Y+M6xW+wo1Wmut1DcVXEhC8exPHQS+axlbTVG7xk8gTv/fDxbQxhhQmZo\nBzhBlodc3GSs1ZyDRR09RkXbTEYb6Th6VAI73m1HGf8oJWBLndCCCpre1Era\nABdusNpZfo45MYDcYjg0eAngkSH1heARIor6ycLMhbRbGA5/Wb6WPDct567H\nwyLA1nBW6ZP3RQwjh4b6Gk4uUHEGkTCWUGiau32Npc3nG+FkLs9avMrs+u4L\nkPVgbQWarN0bKfC1K8CoyzGChK8DzPx5suzudv6Hp8mUnjc3fTtPQ1TDmx+R\njmvNDe6wV4sISHexQ4lHqIEuijTwUEyZSNXM/ueLBJb3n1MaQqeKlyjXPTuH\n51rmzrF2teQwMGEmbVsNvIuobFMwTRMWgvh2+Df7hgW4LXUViJw8u6BaKSYO\nMJVox8U/goD2x4g1SnSd//LG6H8HClAPTFu7E3z58yGMA4Bq4ezrMNPkO9f7\nmxTC\r\n=6HPR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.42.4.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.13","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.3","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.42.4","@fluidframework/map":"^0.42.4","@fluidframework/cell":"^0.42.4","@fluidframework/matrix":"^0.42.4","@fluidframework/counter":"^0.42.4","@fluidframework/aqueduct":"^0.42.4","@fluidframework/sequence":"^0.42.4","@fluidframework/test-utils":"^0.42.4","@fluidframework/common-utils":"^0.31.0","@fluidframework/test-drivers":"^0.42.4","@fluidframework/core-interfaces":"^0.39.0","@fluidframework/container-loader":"^0.42.4","@fluidframework/container-runtime":"^0.42.4","@fluidframework/driver-definitions":"^0.39.0","@fluidframework/ordered-collection":"^0.42.4","@fluidframework/register-collection":"^0.42.4","@fluidframework/runtime-definitions":"^0.42.4","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.0","@fluidframework/datastore-definitions":"^0.42.4","@fluidframework/test-driver-definitions":"^0.42.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.42.4","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.42.4","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.42.4","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.42.4","@fluidframework/local-driver":"^0.42.4","@fluidframework/runtime-utils":"^0.42.4","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.42.4","@fluidframework/request-handler":"^0.42.4","@fluidframework/telemetry-utils":"^0.42.4","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.42.4","@fluidframework/test-loader-utils":"^0.42.4","@fluidframework/test-runtime-utils":"^0.42.4","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.42.4","@fluidframework/container-runtime-definitions":"^0.42.4"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.42.4_1626740319986_0.0022108035163912465","host":"s3://npm-registry-packages"}},"0.39.7":{"name":"@fluidframework/test-version-utils","version":"0.39.7","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.39.7","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"2c96fc65e5d2833a581c48da9c251bc01388a40c","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.39.7.tgz","fileCount":40,"integrity":"sha512-OteUw1/aYkfEu7KYKeW42xC0hAsrTp2wzX/OsLuvE20e/isI6wD4P1rok4tY+x/FF1t/UEpyEYVlA9M4cBufPg==","signatures":[{"sig":"MEYCIQC/ibfjjo5gUAOmU8dw2O9QqCC2wHZPP2ACu2h8izTGIgIhAIJNqYzsE7rBpmJsHM14ZF/38us1xm4BHg37msTWgGJC","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127719,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+dDsCRA9TVsSAnZWagAAfKsP/3/7/VfAhxmjYvenef+p\nkneS5DuIwnFXzsmcg2sBGNj/b5cmRmsD8sJUjErHrfYSBRCL13lmv+dmxm2c\nLV3MPyV96pmiu//p/ZGVXgOGKWdrARYlr0/ADTzDj0C/J8UfZaUuIcD0VXU2\nzFyazR6haURogXrbEdI69TZoYKLoTQGXes1tqhxjnJdTYTWcSFiGfp2Q1TRc\nGs+5Rv+v4B8ib/GyI4jwYV1h4B0bllxLSmxMhjqgm+Gze+4wafX88P3C3yT/\n3HKARSzC0PwX/X4s3NHFNhEh9RpYGbDaEydoeiiqsnGQeuNYK9K8yobH52XK\nM6TKpFRJTflG5AzhIzxIlfQ6vb6zcA9r9Tpt9WWkNIBlj0IqpL1MbqG4/tG7\nBayL3jnEtyu+mZY6yKoyMYqJXlvMU3N1WZ7/XNG1v3z2sggTyq5elf3Giz6N\neosv+WWzsasabqaYKlksoTmpzAKbGq3SNN4P707wmkhTwM16sxNBEG20MGf/\n9E2L5Jx08rkUGQvrY6Kqej8Ad0UpPvr2qwiT7VkGIKOKeKmptuX4xV3LweK4\nMxO0VuHFelR+SvafSUFBzCmr069ZuizlYy/mK8EP7WG7Y8HnJxDNitJsy/Jx\nMgSv2e0SHWK0o6G8urkh2JCQ4bBS8IaprRL11wBiFx8xP5n+azi4l91yNCly\nj7zi\r\n=Resv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.39.7.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.13","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.3","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.39.7","@fluidframework/map":"^0.39.7","@fluidframework/cell":"^0.39.7","@fluidframework/matrix":"^0.39.7","@fluidframework/counter":"^0.39.7","@fluidframework/aqueduct":"^0.39.7","@fluidframework/sequence":"^0.39.7","@fluidframework/test-utils":"^0.39.7","@fluidframework/common-utils":"^0.30.0","@fluidframework/test-drivers":"^0.39.7","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"^0.39.7","@fluidframework/container-runtime":"^0.39.7","@fluidframework/driver-definitions":"^0.39.7","@fluidframework/ordered-collection":"^0.39.7","@fluidframework/register-collection":"^0.39.7","@fluidframework/runtime-definitions":"^0.39.7","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.7","@fluidframework/datastore-definitions":"^0.39.7","@fluidframework/test-driver-definitions":"^0.39.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.39.7","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.39.7","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.39.7","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.39.7","@fluidframework/local-driver":"^0.39.7","@fluidframework/runtime-utils":"^0.39.7","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.39.7","@fluidframework/request-handler":"^0.39.7","@fluidframework/telemetry-utils":"^0.39.7","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.39.7","@fluidframework/test-loader-utils":"^0.39.7","@fluidframework/test-runtime-utils":"^0.39.7","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.39.7","@fluidframework/container-runtime-definitions":"^0.39.7"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.39.7_1626984684036_0.07246030719408281","host":"s3://npm-registry-packages"}},"0.44.0-30858":{"name":"@fluidframework/test-version-utils","version":"0.44.0-30858","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.44.0-30858","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"2700784137a4109a2e06047d22a34ccb13dc7ba3","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.44.0-30858.tgz","fileCount":40,"integrity":"sha512-UIlgmLyY0SKDGEl8eS5mLmhSQBqqkqBgzZPYDu2AFbsAr7o8MlQ76uAbPrvjvUt6j0W8sUcPygI2ejQujnsn4w==","signatures":[{"sig":"MEUCIBDMXZDLRCXnSgoytlNfTIoueawIzsqCi/bU31cxSGC0AiEAg7mMfnP2xRE4SOaOjtM6vKG8h1ki4IN7RRt15hsxLe8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133988,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+e33CRA9TVsSAnZWagAA1dgQAJRgQtPGSUZgQ6bUpdOA\nwFjlttcSEJgBSClZq3pug/Uk2Q2iGOsw9+MMIavs1awot8AQYQgnDhWeUiK1\neW616eqciW6khUnu3oKSmj70ff05q4/JT+TCUAbNHwxlEj+Lp/SFHgiNVTGE\nTnnOFznQoz57DQE4ml29Y7UrfXikGKKvGGu70KGjRI7SfLIkRBPhxWl5t85P\noN6JpBfsmV0fV3qIDIrtxyi3fdKhEHUqMj873jzFBGf9aSe4Y42KapoxDh6L\nDbdB0gOwis14DznEhlakV7oGXFZhoNZHDyfRWcgSoiq6gG3E+cDQCoq99aax\naTcSESoVrA6srEkQnDm/d6SIjcqvHz2Jf5q+AcJSGMQc18UnIPP8/8bm94D8\n2qonT6BUhPkuGOwvJLvxhmaOm87NWdvE4NrStpiOqXePRdwkAGiDBjugw6uV\nxxK6SJErLPS4Q1LlsHzBGp77kqwk8EpBWLMP6+RgfTyvr70KTEoIgLvV3LfW\n1g1Adjyr31KqulzuMDkQr2UzCHHveyyHKm99O/pa19WubbZs6HK/0OcfYpo2\n4EnSAikmafmBjK74vmuFqHfFOW+uchQDhAJb244IHECuKlHf2lkrq//LYEUt\ndf7NYkTzISbN3kjZvp0gdEr6J/F98eXs2jLWADnXN5hZvTFLZftbdG6UqQk/\nPcCa\r\n=s7ID\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.44.0-30858.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.13","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.3","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.44.0-30858","@fluidframework/map":"0.44.0-30858","@fluidframework/cell":"0.44.0-30858","@fluidframework/matrix":"0.44.0-30858","@fluidframework/counter":"0.44.0-30858","@fluidframework/aqueduct":"0.44.0-30858","@fluidframework/sequence":"0.44.0-30858","@fluidframework/test-utils":"0.44.0-30858","@fluidframework/common-utils":"^0.31.0","@fluidframework/test-drivers":"0.44.0-30858","@fluidframework/core-interfaces":"^0.39.5","@fluidframework/container-loader":"0.44.0-30858","@fluidframework/container-runtime":"0.44.0-30858","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"0.44.0-30858","@fluidframework/register-collection":"0.44.0-30858","@fluidframework/runtime-definitions":"0.44.0-30858","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.5","@fluidframework/datastore-definitions":"0.44.0-30858","@fluidframework/test-driver-definitions":"0.44.0-30858"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"0.44.0-30858","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.44.0-30858","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.44.0-30858","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"0.44.0-30858","@fluidframework/local-driver":"0.44.0-30858","@fluidframework/runtime-utils":"0.44.0-30858","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.44.0-30858","@fluidframework/request-handler":"0.44.0-30858","@fluidframework/telemetry-utils":"0.44.0-30858","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.44.0-30858","@fluidframework/test-loader-utils":"0.44.0-30858","@fluidframework/test-runtime-utils":"0.44.0-30858","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.44.0-30858","@fluidframework/container-runtime-definitions":"0.44.0-30858"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.44.0-30858_1626992119628_0.8188433387341048","host":"s3://npm-registry-packages"}},"0.44.0":{"name":"@fluidframework/test-version-utils","version":"0.44.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.44.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"cbc30fd7230dd5177f6608eec1c8472ced667920","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.44.0.tgz","fileCount":40,"integrity":"sha512-oXe5e6dU3fKObcxTw9jBqYCTwU2ldm5hvfnNb5LkM90gFV329QxvGfDZKdGsfH0c59YEQAIZK43xftcR0kC66w==","signatures":[{"sig":"MEYCIQDebbtUTQjfY58TH0OQyy1pGWib2NIHwf14yvCr4EJ30QIhAKXjuK3kc8MAnsX1m2gfwTRbWXkq0EObH/4SmAZL3/Jv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+h0dCRA9TVsSAnZWagAAyGIP/RB0KrmDOTm6vCFKAZsi\nlb99S+aVOrMs1vs8t4rQMyzz24uVwl18dWwxGxDNODFgNwBmOp0OZFAjRAGj\nSBWHkpkJ2H8zWQfS0dEXWkX9Z3IoAGju91XUmxCA6TIXKCfM/XEV884LgDAF\nI7+bU/GULY62okEZ3eO9g58rV2cPrryflALd63BKahkjXjsD6k5oCu2qXav5\nXsI31rmPTGIEZjRkmJv7qL2dx+GuO+KlCD2AIvN8nDIzxFx06i9h5n8ezwiA\nbmwkp/nAVJ6KQNr2ucxpYwOWrJWqLTvbxnT4Ro15kEradz/9eNIErJdgAPYI\nFY3hCEbnF8JI4jmFKk2jKN8ntp9El1uBiL/LaPbUCJDUB88eICb00RJBpkNY\npCuLiYzlzJZSHSGOia/EXturNGive3evIBQVjZvZujnIn0cVvY957pzznJbb\nWkGDOvAis8HdBEhZoThapfidaPOit0lG/ZLKzSfWKMxUlhPViVcdM4H/Jn/y\npXY+EvOX+JID/M0NZeH1wEUZAhDfFf+pAuOATxouZGs54Q1RYYEMfT9XMTeI\nRTliLUEkAvTZrLw0fCLR8JHRXbG4qLtpA6a4KSYGqhJR/QDsX5uhMLOr//L9\npdLz8PdexPiNCy2l61AEJgW2dVYJjoPkc7U43eEsqYiH+YIS6xXugyoprjEA\nFFER\r\n=BinX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.44.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.13","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.3","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.44.0","@fluidframework/map":"^0.44.0","@fluidframework/cell":"^0.44.0","@fluidframework/matrix":"^0.44.0","@fluidframework/counter":"^0.44.0","@fluidframework/aqueduct":"^0.44.0","@fluidframework/sequence":"^0.44.0","@fluidframework/test-utils":"^0.44.0","@fluidframework/common-utils":"^0.31.0","@fluidframework/test-drivers":"^0.44.0","@fluidframework/core-interfaces":"^0.39.5","@fluidframework/container-loader":"^0.44.0","@fluidframework/container-runtime":"^0.44.0","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"^0.44.0","@fluidframework/register-collection":"^0.44.0","@fluidframework/runtime-definitions":"^0.44.0","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.5","@fluidframework/datastore-definitions":"^0.44.0","@fluidframework/test-driver-definitions":"^0.44.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.44.0","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.44.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.44.0","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.44.0","@fluidframework/local-driver":"^0.44.0","@fluidframework/runtime-utils":"^0.44.0","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.44.0","@fluidframework/request-handler":"^0.44.0","@fluidframework/telemetry-utils":"^0.44.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.44.0","@fluidframework/test-loader-utils":"^0.44.0","@fluidframework/test-runtime-utils":"^0.44.0","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.44.0","@fluidframework/container-runtime-definitions":"^0.44.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.44.0_1627004189292_0.4368107209403913","host":"s3://npm-registry-packages"}},"0.39.8":{"name":"@fluidframework/test-version-utils","version":"0.39.8","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.39.8","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"68ad3a0ef94d7ebd345956dcf54e979dc41f890c","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.39.8.tgz","fileCount":40,"integrity":"sha512-Z4h6K+t471RpV0RbRFjeBruxA860inEOxyz27BTUhfY1cfp1TbS0VLhZTiP72NVDhcQk5tCwOuXMyqtDqjbauA==","signatures":[{"sig":"MEUCIQDFZ93k0iuFp66q1FvOuVmrmEcwbNvExypsU/ceHaVffwIgI5gh6UNSbonGAZFr2FfogKcwtlcwuSlCsKvoQfTx8+g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127719,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg/y7vCRA9TVsSAnZWagAAly0P/0g8bB6NsTVDWMIKfHkQ\nyAmZZPwvq//8fVW3J2Etkn/w9ASYtoGWxCC674h4vgqCrMOWwJRn8TVwjcIs\nj0ugVO5DKDHT7ke05Aj69XTEQHfrm946kfYaUf+RJ/g3D115tH0zYOB3OdEN\nLfTk7HadKnbRowCFukkpRF8bmsO3hFf1kkki4cf4rP8pphauKbS6ymkUGFe2\ntxx+ysTq8MgtJbz7X85BAH8RfYic2C741uSE4B6rnUNlL7x7cgsqltueQqAS\n88g8/zV1/KocSfitvS1ocK26XV1t/fAOyJU5jpdDbI9mNvlYnLoLpMtKzH/D\nJgSXyEc4OIt2oHRZXT8EnhDjl8AH7JsUC1mmRnknvalzP6eb3/TBJx/Mn5oy\n9fqyHTAC35ScE8eOanlNuAng0JPYVsNjQFDqJuDYfzqAI9ZN/0NIqwVMCN2D\nJNFIAnEPrSKgupr+rt/+uL8N/1tFgP2YpVaKpRvgugCFTdPmVWIeFSs+iFa1\n1DjhxlLsTyeAp1md6Nl3fcxXr/kL8ff86nJL9hW5qbFiVHmep6tmn1/Ympd7\nYQq1Gjg5qVigg2CcyNPFg6AlqJ1QMUUnLuVumZboos+2awQIDWQ0NG98rGlB\n2IOxid6mfK8EoqcXpENiKbfKdAOyeNUeeXbTjypO4FCGJPArXJhQfr8G4jTz\nc5eX\r\n=db1a\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.39.8.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.13","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.3","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.39.8","@fluidframework/map":"^0.39.8","@fluidframework/cell":"^0.39.8","@fluidframework/matrix":"^0.39.8","@fluidframework/counter":"^0.39.8","@fluidframework/aqueduct":"^0.39.8","@fluidframework/sequence":"^0.39.8","@fluidframework/test-utils":"^0.39.8","@fluidframework/common-utils":"^0.30.0","@fluidframework/test-drivers":"^0.39.8","@fluidframework/core-interfaces":"^0.39.8","@fluidframework/container-loader":"^0.39.8","@fluidframework/container-runtime":"^0.39.8","@fluidframework/driver-definitions":"^0.39.8","@fluidframework/ordered-collection":"^0.39.8","@fluidframework/register-collection":"^0.39.8","@fluidframework/runtime-definitions":"^0.39.8","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"^0.39.8","@fluidframework/test-driver-definitions":"^0.39.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.1.1","assert":"^2.0.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^5.2.5","concurrently":"^5.2.0","@types/assert":"^1.5.2","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.39.8","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.39.8","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.39.8","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.39.8","@fluidframework/local-driver":"^0.39.8","@fluidframework/runtime-utils":"^0.39.8","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.39.8","@fluidframework/request-handler":"^0.39.8","@fluidframework/telemetry-utils":"^0.39.8","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.39.8","@fluidframework/test-loader-utils":"^0.39.8","@fluidframework/test-runtime-utils":"^0.39.8","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.39.8","@fluidframework/container-runtime-definitions":"^0.39.8"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.39.8_1627336431793_0.2863598975365711","host":"s3://npm-registry-packages"}},"0.44.1":{"name":"@fluidframework/test-version-utils","version":"0.44.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.44.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"e3ce802ffaaa7686cd9f4ba75951ad9401f25adc","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.44.1.tgz","fileCount":40,"integrity":"sha512-ZbG1OpkVmHzEmdxG6ZycTaroDDkMKsF6XeRTym0GopDxMWbkdyJM9seQMWC8V1GxYibd7vJ01fPcwIg9t90p9g==","signatures":[{"sig":"MEUCIQCxCBWRXkwnYJ2GksBl7yuUVGX9TnXuhr7kmHlcZjZEowIgJJodssZPqRpOV1K/4cuQw6fhsK2nPgHcrOBE+qa1wg4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhCeYmCRA9TVsSAnZWagAAx0UP/3J+OaykhJmyNNB5/PXs\nlgD3iRLw8KJzlsdvry+jHgByfBmrHWKaTilXsyYmdfUwz7RClpj1sDsHHU/1\nZub0vdclIT3vuoTOa56LjgY5guwwh4HsrhaIPAq7f1MmhRx1HP6oUgyww7he\nDCaR04C15u1aNWCmEEOK7ttycufkmspdAQHafhLru2w11irhzgbxV42A5ceK\nTCf4MLhfJC5zR9PJP60+T5NW1TQ1mK/PubBvY1yP0nwwXSM3NLUftW4YI2qc\nZNqu7C2KkRejF9+VtGFE66LepS+QPi6MUdrRYFvJO//qbreqFAwEvQV6u2Le\nuvTZxdSNo8OOceO+MCt+ea3nPX9YY2q6TcxplL6MaFma/iciY+JOdkJQG7K8\nyD5ZZ6z4AALj/K6Dy6Axb6ExexRpGsxe9oNp2YmFQSuZD2p/xdI7RDJ3pQxJ\n9/uRs9F7Uo5jC4jeO3HXSVL/kslu9d7+WksQREjWv6NHi90Mp9I9l67/IVxU\nfk1zzDIgqXV2a/z+5FQlk7f9zfyuBP47+muC2M73JO7llsozQZHICzmQvF3K\npQQEhEONBVACFRH61S59rS7gnZANoh+bYOinRGfkUJk+W72MQJFhOA8WeCZv\np9/JWYqkFtZApEsKVoVE6xN/LnONTZOQf+qfa67B0716NC3aDuaorgORik85\nwWBn\r\n=+3EZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.44.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.14","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.4","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.44.1","@fluidframework/map":"^0.44.1","@fluidframework/cell":"^0.44.1","@fluidframework/matrix":"^0.44.1","@fluidframework/counter":"^0.44.1","@fluidframework/aqueduct":"^0.44.1","@fluidframework/sequence":"^0.44.1","@fluidframework/test-utils":"^0.44.1","@fluidframework/common-utils":"^0.31.0","@fluidframework/test-drivers":"^0.44.1","@fluidframework/core-interfaces":"^0.39.5","@fluidframework/container-loader":"^0.44.1","@fluidframework/container-runtime":"^0.44.1","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"^0.44.1","@fluidframework/register-collection":"^0.44.1","@fluidframework/runtime-definitions":"^0.44.1","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.5","@fluidframework/datastore-definitions":"^0.44.1","@fluidframework/test-driver-definitions":"^0.44.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.44.1","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.44.1","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.44.1","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.44.1","@fluidframework/local-driver":"^0.44.1","@fluidframework/runtime-utils":"^0.44.1","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.44.1","@fluidframework/request-handler":"^0.44.1","@fluidframework/telemetry-utils":"^0.44.1","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.44.1","@fluidframework/test-loader-utils":"^0.44.1","@fluidframework/test-runtime-utils":"^0.44.1","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.44.1","@fluidframework/container-runtime-definitions":"^0.44.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.44.1_1628038694808_0.39649304665333585","host":"s3://npm-registry-packages"}},"0.45.0-32948":{"name":"@fluidframework/test-version-utils","version":"0.45.0-32948","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.45.0-32948","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"3e80fd8f0eae9cd439cc353fc885d05231a1c247","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.45.0-32948.tgz","fileCount":40,"integrity":"sha512-46ZZl//ZvDOXhVox9eSzdKxkyFaaF85AnnsQ37/T9DvCmk94iyY8ieD+CfuH5WotTEEiIhdbzszvCzRL3fc74w==","signatures":[{"sig":"MEQCIG7JgNewibwhrwknclI0KpbLTi6C4WuZJNNR8VsdR4g6AiAq9TZGiN3oXFwz+HHY9paxq9R4rusvyf/KyI7Ng1ZGzA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133990,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDZEhCRA9TVsSAnZWagAA7SYP/i5fjgKvnAZ9zI/m5fha\nY1TtIlOCnWgoUCi9S38Jcsa4WbuNA0SZRQyHH48HPFiGKQ4/+XW7W1WhS5JL\nNS16n/Rp4RGwbaUuFsqeUbd0OTRTjB2zwiiPgedNwwozNqujlfIqMB3v9o1K\nFho2alGBTDZSUWjxaMh7DFm0ouyIqhDIiH/o8REnggAj4aNSd5uDltx1Coe9\nxdY+m6aIa68WHPC2ratNRPrtA/S6mIfliyN4DBxWwsil9bmRRPHaqp/mXlF5\nqaHbUciIMX3UkWwe8OeyjXWHV9yGPTDHP9WZH8+CfRIsSFYjWl3anSgc/kHN\nDFzLCblqqNUFrYI0Dap3Vxl2fFST8q+9/TMXqiEPLMpQoPc71RKytU0fb44p\nC9IsrZVW30DD0MH92mhJNnWtevyhkRpWNdt5bHzHMhYMQMOxDE2EWBuyAhv1\nfhjXAuCk3cApepnA9KEt/GWfErfPflJolwOnSVPk7zER+eKa/LiwofplwGSY\nBZBdJfKpPge8syWqmYFm+oeH7nlSzhtRs9SfvJxH67y8YI0kwWf5bZCfWocd\n2qSwfq9vPXKNS5aZCPj65UrYdfGAm7Ll1Aqa4VkuA3OejxYeVu1gNumdn2Xq\nV2DhD7ALxCJbYJICuliCAej7bpGrrPZaPsU2VOOSjda3TafSo/Nk5XcLaLDt\nuVns\r\n=kYut\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.45.0-32948.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.14","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.4","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.45.0-32948","@fluidframework/map":"0.45.0-32948","@fluidframework/cell":"0.45.0-32948","@fluidframework/matrix":"0.45.0-32948","@fluidframework/counter":"0.45.0-32948","@fluidframework/aqueduct":"0.45.0-32948","@fluidframework/sequence":"0.45.0-32948","@fluidframework/test-utils":"0.45.0-32948","@fluidframework/common-utils":"^0.32.0-0","@fluidframework/test-drivers":"0.45.0-32948","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"0.45.0-32948","@fluidframework/container-runtime":"0.45.0-32948","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"0.45.0-32948","@fluidframework/register-collection":"0.45.0-32948","@fluidframework/runtime-definitions":"0.45.0-32948","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"0.45.0-32948","@fluidframework/test-driver-definitions":"0.45.0-32948"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"0.45.0-32948","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.45.0-32948","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.45.0-32948","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"0.45.0-32948","@fluidframework/local-driver":"0.45.0-32948","@fluidframework/runtime-utils":"0.45.0-32948","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.45.0-32948","@fluidframework/request-handler":"0.45.0-32948","@fluidframework/telemetry-utils":"0.45.0-32948","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.45.0-32948","@fluidframework/test-loader-utils":"0.45.0-32948","@fluidframework/test-runtime-utils":"0.45.0-32948","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.45.0-32948","@fluidframework/container-runtime-definitions":"0.45.0-32948"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.45.0-32948_1628279073498_0.30447868501670916","host":"s3://npm-registry-packages"}},"0.45.0":{"name":"@fluidframework/test-version-utils","version":"0.45.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.45.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"d1a2fcd48c3e7c0a9e990713a8e6b63382e4343d","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.45.0.tgz","fileCount":40,"integrity":"sha512-gTAbCJQYoPa2ECudDZrTUNXR/rmmT/8JyKbo3SM6vNQCMwyfLZElREIPJflQv4Gr3L2JvyrTcK3wCsV3vn2IIw==","signatures":[{"sig":"MEYCIQD0K8kHIrFwkLmBLjURPbkafkIBhKT/m1Uz/DMdKkl1SQIhAP0maL3biXe6ELVpKjBeELKL19L+X2ZhMatMei16FKfw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDcT3CRA9TVsSAnZWagAATIUP/RKgZ4hgCHvqFkBb7Vn4\nxIuiR2K4t0QDB3cyMCUrUzZhIdM8DBu2sM6TyAKduVnYGq/Svq3r456+vhgI\nFQcX9Am6a4Pu8knbWxdXLN6DnUmJ33l1RcCokIXrmNGuMjMkIUasWyWBFKvB\nyUhpis6fPLjuVfEsRbM028jG0PTEQVC1tbU8rpeM4zwPktuGXr1vQiJpJRJn\nN7Mvy/llia5ZXDkXU3oRVfFGZF9nCfTGvgO251eS154hS82omebUukOAYDjh\nWLlBvESUHg8/XE/sBbMcwRYD9HlRd+IoNCtQgQCgYu3gbSDiOYlyIgJ+D936\nW743RF0R4nf5jKzsEql9ZDEkRuD3BRuV+nJmP5fMSqh+HOF9yhsJ8ZfG3zjR\n/YGob0U85YZqheYdJLWO2R1MeQkA4RNSko++NmBs3uKBnYjJsRQyzCHkPzzX\nHBxm8+Ywgz3JNcUMMLFPDc6b2aJbqxDXnWLYRf4+Lj6SI8JLfvRLASffdUtr\nIJmhgKp9U1JOVhD40nf4CIWP4rPJL7lgQ3TinoxndX3JqYeyPB+y2YxKXxbf\nXbBmXfjG/ub2n2qUooY+K7mnj/i06L9L2sSwQqVmTG18wTBbbgp5XD9/HiWQ\n1tCM8A4SbtttBYhkm49PZnnJVKBSdQjU+7b8UUZ33GwKOqQx948imrRt657s\niJ8V\r\n=QJgG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.45.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.14","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.4","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.45.0","@fluidframework/map":"^0.45.0","@fluidframework/cell":"^0.45.0","@fluidframework/matrix":"^0.45.0","@fluidframework/counter":"^0.45.0","@fluidframework/aqueduct":"^0.45.0","@fluidframework/sequence":"^0.45.0","@fluidframework/test-utils":"^0.45.0","@fluidframework/common-utils":"^0.32.0","@fluidframework/test-drivers":"^0.45.0","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"^0.45.0","@fluidframework/container-runtime":"^0.45.0","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"^0.45.0","@fluidframework/register-collection":"^0.45.0","@fluidframework/runtime-definitions":"^0.45.0","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"^0.45.0","@fluidframework/test-driver-definitions":"^0.45.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.45.0","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.45.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.45.0","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.45.0","@fluidframework/local-driver":"^0.45.0","@fluidframework/runtime-utils":"^0.45.0","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.45.0","@fluidframework/request-handler":"^0.45.0","@fluidframework/telemetry-utils":"^0.45.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.45.0","@fluidframework/test-loader-utils":"^0.45.0","@fluidframework/test-runtime-utils":"^0.45.0","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.45.0","@fluidframework/container-runtime-definitions":"^0.45.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.45.0_1628292343693_0.39040418908112295","host":"s3://npm-registry-packages"}},"0.45.1":{"name":"@fluidframework/test-version-utils","version":"0.45.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.45.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"036acd3ce81f9700ef0adaff52357f991125c781","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.45.1.tgz","fileCount":40,"integrity":"sha512-H84fEli0gDBStSCS9suuE4YSIAzNgdY7bLWYJ5GbkTjaQrWFbzCJl8QOOW9EdvIs5MPL3Cf9Nl3pjbxZqvNVMg==","signatures":[{"sig":"MEQCIAbqx7Whf8cvP6PprljUrKsJllk/QroNpj8mbhvOfZ+QAiAw8YTVmbSxByES7FXlb7u6mYWkBnG0TdTVUz1MTUrJEw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhEdaaCRA9TVsSAnZWagAAo2wQAI1v5Lc6B2BKiWR2x7rG\nYKmpxG8p+ZYr9sm2GZCnUnjqvJq2azWvPv5klyRjgGbboizmxn3JCMLNUVYX\nDSnWYUQfR1eQaos7HnmnsX1R0KQum5GbN1A3X6M5ekZzVnfZUxi07aJdLau3\nZ+7VdnV8sDSC2hKFuAbK7Pe/JKgY5djKWNmNvORh0trfTyrp5nA7sBxM5K1z\nkMdVqcv64JlV/nFz80bSkaL2nNfcJu/0THKve+gHO3yLO5kmXWeLSWyKbhGx\nWc4rg659UJhJ5pMnmNI/JlZMjAfDdup82uWb6GIe5JF+x6QdwnBLOXaFcj8n\niI0vQyoenyCmiXW3qsPQNqPRSkXZ3BTrv/Ukja4WlxX7tWV/E7A3o6fAvOgT\nQpOgmnChhEjjkrY+7d0zP29tGQpiKHe2zLKV/EHgNJ3u/meugsfp1dx0TKfQ\nECkrjU05jfHQd57QYN3ouCXYiTlQPcj9nU35EOkNHV1jCtvtcXlgtkcqBDaN\nBZo7YNsFAPyOfu07aJGTO7jjsih9+hIt+nG1/nJXUU0UCsAnb7J2bob8shah\nY7a7qzrA3cIh1YbR+l5yNA2CIUJAxWe0M3ezoI22hA3hh+vqnicjzc7VqR5M\nVL7bzH1Jjhezk0WVWcYGhkhUZPGImGxw8hXNt4Gc6oQfsB0Acho4qxlRP/ac\nGDK6\r\n=sIYw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.45.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.14","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.4","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.45.1","@fluidframework/map":"^0.45.1","@fluidframework/cell":"^0.45.1","@fluidframework/matrix":"^0.45.1","@fluidframework/counter":"^0.45.1","@fluidframework/aqueduct":"^0.45.1","@fluidframework/sequence":"^0.45.1","@fluidframework/test-utils":"^0.45.1","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"^0.45.1","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"^0.45.1","@fluidframework/container-runtime":"^0.45.1","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"^0.45.1","@fluidframework/register-collection":"^0.45.1","@fluidframework/runtime-definitions":"^0.45.1","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"^0.45.1","@fluidframework/test-driver-definitions":"^0.45.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.45.1","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.45.1","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.45.1","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.45.1","@fluidframework/local-driver":"^0.45.1","@fluidframework/runtime-utils":"^0.45.1","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.45.1","@fluidframework/request-handler":"^0.45.1","@fluidframework/telemetry-utils":"^0.45.1","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.45.1","@fluidframework/test-loader-utils":"^0.45.1","@fluidframework/test-runtime-utils":"^0.45.1","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.45.1","@fluidframework/container-runtime-definitions":"^0.45.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.45.1_1628559001770_0.2390418678857016","host":"s3://npm-registry-packages"}},"0.45.2":{"name":"@fluidframework/test-version-utils","version":"0.45.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.45.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"16a44a3fbe512644371d28474490645daedafcee","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.45.2.tgz","fileCount":40,"integrity":"sha512-G3rqNiVs0Eg3LiDy4V1FdXi4aRPHBwrxLFwgnreCYlzsivkn8r4ZtN+Y+K5IRwVCenA74GzQ2Fx0N/ZjI/Wcxg==","signatures":[{"sig":"MEYCIQCKnea70JIIXzK0BZWbf3tD447+b2fuBfCmBzfEKqT5RAIhAP9aMHafyoWmdGQZcWUVJPUVbNnj10hjr45HC9EHDcOm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhFEmpCRA9TVsSAnZWagAAAy4P/1y4w0Y1ZlTtKwkh/0Wy\nbLVhebdCoLUy5026oOnRYkQ0VBgWzhRAZo7zrNQVbsFrhTw+M/GJ1aYCLh2Q\n47UPN3SzLxG9kuZ3tR8yO9sc0iUZwC8hZzSjVjWz+xLcHE6RWMrhxLWbPRqq\n+zNFhtTUflU0tpag2P1UXN8NTw9GTUDS3rSnQtDbiD3umHE2iQhqVKdqqwz+\nR+iDWEdzyisbAJYnSnYyBJQgMFWG6UEElUUzBNqNTwL5uaQCvD1j2JjN/Lm9\n6Jn+U5EDVNuM7JdeHrNaeSMuIpYFmXWGcNaWClBG1Y4XIJ9dwW8fuMk9jDf/\neFurL3zk74jejmpO9s97FVH+YnMeVU9q30h1BGy+GeZkn97Rhd6KQ48/LQf5\nMgpv8gJa1i1EQltIdl+1THh0/HVPYR7yr6NDN8d01ECLqs/Nd5/PI0gVnzOV\nmNfEO38Qn2jum+dVVWw9oV338wHZw6/1X3XUGL91hlbZY5JD9ZiMH3erfJwF\nWa47rc0GbIPOERCnwlzSjQ6ToKMAARikKovG/RzhIVijUiM/e5jTrSR1h2Fx\niudR1DdwHckJSDgIHjTucpc96yYCVaLfnzrTLbUJPE6P7W7GRg5tMYx9Xsg3\nbNdaPsayKQf6mLABpvSPmCKXg7QioXsPI84QF8dNBYAKfTuSJZxIPESFLTvW\nPqzT\r\n=0nzC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.45.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.14","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.5","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.45.2","@fluidframework/map":"^0.45.2","@fluidframework/cell":"^0.45.2","@fluidframework/matrix":"^0.45.2","@fluidframework/counter":"^0.45.2","@fluidframework/aqueduct":"^0.45.2","@fluidframework/sequence":"^0.45.2","@fluidframework/test-utils":"^0.45.2","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"^0.45.2","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"^0.45.2","@fluidframework/container-runtime":"^0.45.2","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"^0.45.2","@fluidframework/register-collection":"^0.45.2","@fluidframework/runtime-definitions":"^0.45.2","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"^0.45.2","@fluidframework/test-driver-definitions":"^0.45.2"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.45.2","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.45.2","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.45.2","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.45.2","@fluidframework/local-driver":"^0.45.2","@fluidframework/runtime-utils":"^0.45.2","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.45.2","@fluidframework/request-handler":"^0.45.2","@fluidframework/telemetry-utils":"^0.45.2","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.45.2","@fluidframework/test-loader-utils":"^0.45.2","@fluidframework/test-runtime-utils":"^0.45.2","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.45.2","@fluidframework/container-runtime-definitions":"^0.45.2"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.45.2_1628719529773_0.1121155495184909","host":"s3://npm-registry-packages"}},"0.45.3":{"name":"@fluidframework/test-version-utils","version":"0.45.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.45.3","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"20f0fac565eec60dd29297f09fab8612123dd2b3","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.45.3.tgz","fileCount":40,"integrity":"sha512-4GWJwjeK/04Lo3nBZWAgCIE1ABfGUBOaGTsNq2Tp6d9kJF9gMQq4l+CmsDWcTPo8TpfMJZfczwbxcMo0qOojKA==","signatures":[{"sig":"MEUCIBXA+cDelIp11IU8ClTnHuMYKKMEtJHUElt1nJ0WlMnxAiEA7FFdwk+hT7jmiURvFeLAN8pBpqlMZc0CCRvB5p7OdRs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhFcLhCRA9TVsSAnZWagAAVgIP/2AFmXUIMS2NixqUW3WY\n03PXIZe+8lVA4T6B4ef0u4RqcTqYEMuOLaGZFbpCXv6i2iAOIx+hRQCCb7QM\nqfrEIMUByUlw175P4M+QUu/Iy7/GmDUcy8t1tNlqLQQbLlCGIHc8kjZp5hgU\navzWrhdvunCilbfA0MxI2d1jSjz2kIQft1WIeTFqRV7YX71Wbp3elNwkJf0Y\nmoW7kzGhkYgLsa7z8AHCjngcpU304+dnO0F7e/wu5r1583d2N+Kbb3eVxNAu\n2QsuoeA8E60K2a/F7O4niCtOCo6yxEV2qPFQZZ4nG5ykJxKliiXE8fmmAh+k\nXXrK8iOj7oi2wcepTIR49OuuHYyYGQsepNzrkgslACz8+F+03awmpw+qklp1\n7T5J7fYA/bnHjzsLHTuk24Zyp0XYzQI+cDFuG4R0iUTrBJ4w8KVUlA7B8aYN\nk+GTc6bkYj2GPGg6YRk+w8pqDIKc3GBTbOnA/CMk5RwdWts8vfpeRpVq+nkL\nZgHhpIh2heJ5poCd909s1fG4BohyV+e7bHGeO0k0AxB2LIr+XjNE5HlWZzbF\n5ayodaPJCO4pJFnPVuGRy/m11xkZG2Puiwwv+7nMB04KAzQQMXpbgucfquAv\nDyb9Bhyi+tdmFcWXDtc9foFIfxzJ07BlhNEo5v3jiBF7laPvWOPiAR/sSKqS\nHmhE\r\n=aaT8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.45.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.14","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.5","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.45.3","@fluidframework/map":"^0.45.3","@fluidframework/cell":"^0.45.3","@fluidframework/matrix":"^0.45.3","@fluidframework/counter":"^0.45.3","@fluidframework/aqueduct":"^0.45.3","@fluidframework/sequence":"^0.45.3","@fluidframework/test-utils":"^0.45.3","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"^0.45.3","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"^0.45.3","@fluidframework/container-runtime":"^0.45.3","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"^0.45.3","@fluidframework/register-collection":"^0.45.3","@fluidframework/runtime-definitions":"^0.45.3","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"^0.45.3","@fluidframework/test-driver-definitions":"^0.45.3"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.45.3","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.45.3","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.45.3","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.45.3","@fluidframework/local-driver":"^0.45.3","@fluidframework/runtime-utils":"^0.45.3","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.45.3","@fluidframework/request-handler":"^0.45.3","@fluidframework/telemetry-utils":"^0.45.3","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.45.3","@fluidframework/test-loader-utils":"^0.45.3","@fluidframework/test-runtime-utils":"^0.45.3","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.45.3","@fluidframework/container-runtime-definitions":"^0.45.3"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.45.3_1628816097502_0.08010012969043023","host":"s3://npm-registry-packages"}},"0.45.4":{"name":"@fluidframework/test-version-utils","version":"0.45.4","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.45.4","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"7b40ad5051e908acacceb2e6a16085f3e2f5e0b3","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.45.4.tgz","fileCount":40,"integrity":"sha512-TDMNjrxZVf700T2+nRUbRTvR8Y68xVL2g+n2qb2CCCu5dMtkfpB/L1uaB1Em6G0jikpUy9Rtk6ZgLhz37GfXgQ==","signatures":[{"sig":"MEUCIQCz/tPXrfVt3LWKC6rQBDDb8wrXWVDlJgU5K/Jdth0zCAIgBG0iBU9Rf93IDXDKVNxQcwfMi7D5fBHdSKzjxMOns1I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHAHGCRA9TVsSAnZWagAAD/oQAIwlj0pwdL3rJJYpYYF6\nJLr47RBIWevaKdAYUwi4tx14rfZsuUUKGjzxbRzxO53/JmGrfRaoTUGXdHg5\n6d0F/sbS9t2R0L/f11zdKFjMjsQHWpWtYK8oUE1aMM8OxjJbJLJlzN4A7UCi\njjSZG4Zygjzon2To3jXh5/G1T6Qm3ND12gQUY8gGJwuyxK/J6VH5QBU1hfWA\nZeIsxnC1EnQEEGllL3kBkVZJaMNLb1xZ7bBQoac/ooeeyp5jAQD2ZRx5kTrQ\nk3NIlIdHMHENCbT3bnF6XsyNf/cPL9HWoYQjnRwchHQ2MpKf2Llp/TZGTR5B\nzD4Xoi396uMUMRXo5ddYsOXV11cJi/wYUx4/XMHr+YRWWwo1SeG5RySjqU0X\nEEo7E6qLqfi4B5yG+anIxeT654DD90GvqKMkd/hf1lBo/dGSl+XlQmOLo+pI\nzj+UdK42IU2jKiAgPkwA8E5DqID8AmpgpgMyZTxFkBBDvuJj9XIKzhwzLgCn\nXXWtz8zez5b3WVBAkBz3JFdIvEEMiOVWSSX89j0lVrWjeYLmLGXaypvLlyTL\nZZ/1E8BQNm8I72O6RaS25NcOf1lmVnVNIvHhWHIxi0/6A8F/evAcWgw133Q0\nBCYxwLysMD+oby4zWFIvSKG7aBIOBSpvj4UF6xUyoJmYIR8HYZt4j2wvqLWD\njVf/\r\n=mlZK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.45.4.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.14","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.5","dependencies":{"debug":"^4.1.1","nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.45.4","@fluidframework/map":"^0.45.4","@fluidframework/cell":"^0.45.4","@fluidframework/matrix":"^0.45.4","@fluidframework/counter":"^0.45.4","@fluidframework/aqueduct":"^0.45.4","@fluidframework/sequence":"^0.45.4","@fluidframework/test-utils":"^0.45.4","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"^0.45.4","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"^0.45.4","@fluidframework/container-runtime":"^0.45.4","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"^0.45.4","@fluidframework/register-collection":"^0.45.4","@fluidframework/runtime-definitions":"^0.45.4","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"^0.45.4","@fluidframework/test-driver-definitions":"^0.45.4"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/debug":"^4.1.5","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.45.4","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.45.4","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.45.4","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.45.4","@fluidframework/local-driver":"^0.45.4","@fluidframework/runtime-utils":"^0.45.4","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.45.4","@fluidframework/request-handler":"^0.45.4","@fluidframework/telemetry-utils":"^0.45.4","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.45.4","@fluidframework/test-loader-utils":"^0.45.4","@fluidframework/test-runtime-utils":"^0.45.4","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.45.4","@fluidframework/container-runtime-definitions":"^0.45.4"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.45.4_1629225413972_0.5463072677792113","host":"s3://npm-registry-packages"}},"0.46.0-34784":{"name":"@fluidframework/test-version-utils","version":"0.46.0-34784","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.46.0-34784","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"6fe172ab5872206636ccd1359f85123998009d05","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.46.0-34784.tgz","fileCount":35,"integrity":"sha512-UHqDoom4zfphPLKnotWjqv7WzprUadixTPJCMwXueFjYLz7xZIkknQXFtFVNdnJTz8sE34/3DnWXU0zJikgznQ==","signatures":[{"sig":"MEUCIQDffeUXn83948PuGhARr946tZj6VDOYoA09ng3PG1W55QIgEdgBJ5ZxRjrqkKnyR/sDcKZh0ngeTp5N6lSErgJGSJI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":131753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIDdPCRA9TVsSAnZWagAAPyAP/1swd7y+MBsY3WFwjNUy\nIDxxkkaZmkoyEjrBg6MlqY3y0OnDcuowpSI3IRuJGyZs3kZNc8P/uMCQm3rk\nx+/xF6th3a3ohXsH6NwlnEBjZJ3G/QYtfycthWR/iE218AfS5GUzzVCct94/\n6wRjkD2fErzUvQAxJcUfjKWbCBrCJl5/dRMydQB3SdRYW6b2+D1Kuojtr0M0\nB1ZMSMzQuupa3X++M/m4W9mmgiQPqxiC162yWM8dd6hiX4IX3YGnkNMN2r87\nRgjzdMztjl8JrBe+0JUJQTqagNqykOEKxpJqRua/WyJBtz3tstDv4uTqZ1o7\nJXAH+MfVOqt+eOkat7jlRdYkWnWO5vIrmlqdZsjaseVjti98lXav6G+TVG3k\n1rwgaZ83vbew3L/7uO1vVWT+ZEUm7TVVUTrK69G/5pbsnee1KtxPEvncOIK2\n27Cg3OUCiMmXqXWUBgHl2LEq49SRXlQI6oiJ/GC9iX4gFe/ZTem1MQxX6I92\nad9FUDzv5JFSBWvUc+R8Hrsi9KOAkdRHPxxyzG3iAyjq83dej3iL+UNKjtVO\nhhgp716lbyjZS3tUZL4tH2FHrrMCCIXSvtnx3gVWpMvAcOjfoqKMavU3xdGN\naz0F46GG2k2wPHpF7fJvJmeF0tJRZsttwq93UXSeie6rUW0c1FWb4AJyobnz\nK/DX\r\n=joiD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.46.0-34784.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.14","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.5","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.46.0-34784","@fluidframework/map":"0.46.0-34784","@fluidframework/cell":"0.46.0-34784","@fluidframework/matrix":"0.46.0-34784","@fluidframework/counter":"0.46.0-34784","@fluidframework/aqueduct":"0.46.0-34784","@fluidframework/sequence":"0.46.0-34784","@fluidframework/test-utils":"0.46.0-34784","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"0.46.0-34784","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"0.46.0-34784","@fluidframework/container-runtime":"0.46.0-34784","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"0.46.0-34784","@fluidframework/register-collection":"0.46.0-34784","@fluidframework/runtime-definitions":"0.46.0-34784","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"0.46.0-34784","@fluidframework/test-driver-definitions":"0.46.0-34784"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"0.46.0-34784","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.46.0-34784","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.46.0-34784","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"0.46.0-34784","@fluidframework/local-driver":"0.46.0-34784","@fluidframework/runtime-utils":"0.46.0-34784","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.46.0-34784","@fluidframework/request-handler":"0.46.0-34784","@fluidframework/telemetry-utils":"0.46.0-34784","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.46.0-34784","@fluidframework/test-loader-utils":"0.46.0-34784","@fluidframework/test-runtime-utils":"0.46.0-34784","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.46.0-34784","@fluidframework/container-runtime-definitions":"0.46.0-34784"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.46.0-34784_1629501263198_0.9123614853717712","host":"s3://npm-registry-packages"}},"0.46.0":{"name":"@fluidframework/test-version-utils","version":"0.46.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.46.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"f0c55802cc52197effdf04ba8a49e748ca19f7b3","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.46.0.tgz","fileCount":35,"integrity":"sha512-V3uwd4SW9/S5emfo7Eyp9HiPrtJ7a27MKzUoz4EOZARyGRsMyglMM2nbYx7qQlqM/l2eP+dTu9+YVJIdqStPdQ==","signatures":[{"sig":"MEUCIC6JWeXtw7Ee4h1OUqoMNY+J6zJOWWCScFj0DgFYzoFgAiEAyCTjsJHnQZpCmFNZoiNor5O1YKxmkwHydZvCFB5SdtM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":131571,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIE3LCRA9TVsSAnZWagAAR9cP/jncpYpNfVnkXbYol6Z1\nmjctJk6qdrXYjaNhCBisjckiHgoc8M4tR5Rk1jesqIhossCW5JHIBAQhiX3Q\nVqX/+lPY70B/AgYXd8yjkM3i2OLnNKpEzg7HHQ2Uxaup+hs6HuD6lXIjLlR2\nz3quqk3/HvgFH9P1O1mFXj9c7yL3iILc2/ej58qYkrVYc6uo1KZcL+TT0vuB\nX+yf+04/5AheKvrvZ5jtO5bdx/HHmnTsGjbEpsdrnyotvRF2Eg1fQyg+pENY\nSSaIteTdCqYGTEvwmMI5n6NUFJJblNG7e6iQGauu4YX65Yo688Une9T5tv77\n9hhTCMeBJ8Prwsgx1aeYjliXiYlCziHhWLZXa2IJ3bqqvevio5imdRFfjEoZ\nt6EnteLTsbkZHGLCeLjF/XoXerlTmL6sdbTKyn/6Py5PIn52UUWNHOu3Jb0G\nhHzvLIGjcSUZFwKLqNqEyBCjOXG+aC0Lqzbt/WsjsL77Y3TEERS02FUD+TqE\nrw8/IbhLddMPxrVQBo0ZPSXJEzHWdh6upeGc0/EoRORZHxXr3QOKOHru5WmW\nhKP+Js3h1Zckpi5+FBVujX8yoA0j6ChRz8PU1ldJ/CYh2SrsZeu5G+F68SWR\n2Y0NTJQD2DvSYg3ho5QniwflRoIGIjlf3dR0CVqdA2xJo9o+z3EZI38IVY9x\nVbyl\r\n=xIfj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.46.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.14","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.5","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.46.0","@fluidframework/map":"^0.46.0","@fluidframework/cell":"^0.46.0","@fluidframework/matrix":"^0.46.0","@fluidframework/counter":"^0.46.0","@fluidframework/aqueduct":"^0.46.0","@fluidframework/sequence":"^0.46.0","@fluidframework/test-utils":"^0.46.0","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"^0.46.0","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"^0.46.0","@fluidframework/container-runtime":"^0.46.0","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"^0.46.0","@fluidframework/register-collection":"^0.46.0","@fluidframework/runtime-definitions":"^0.46.0","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"^0.46.0","@fluidframework/test-driver-definitions":"^0.46.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.46.0","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.46.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.46.0","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.46.0","@fluidframework/local-driver":"^0.46.0","@fluidframework/runtime-utils":"^0.46.0","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.46.0","@fluidframework/request-handler":"^0.46.0","@fluidframework/telemetry-utils":"^0.46.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.46.0","@fluidframework/test-loader-utils":"^0.46.0","@fluidframework/test-runtime-utils":"^0.46.0","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.46.0","@fluidframework/container-runtime-definitions":"^0.46.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.46.0_1629507018832_0.6903462653679084","host":"s3://npm-registry-packages"}},"0.47.0-35912":{"name":"@fluidframework/test-version-utils","version":"0.47.0-35912","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.47.0-35912","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"3c4082adb0445861fa10165f692d49c2634daab0","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.47.0-35912.tgz","fileCount":35,"integrity":"sha512-NMzBCPseqe1yqxXxO7TILToXLWmMLnTI0xWxzXNWbYFG4FJ1xYPc4Xy/3q28TiZkdCv7zurc+8Si+yVgKZh4eA==","signatures":[{"sig":"MEQCID89F5lkCE2iowjDyYoDGluVdmb0QRaUQ/sEHozzxLGsAiBd0iDZuGwMsBK7zLRrTHO4OGYvy4brfbkqES7xa8QdBA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133397,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLsIVCRA9TVsSAnZWagAAb6EP/2PAh9qiGQXZAQFR77jW\nYqZKriOawf0GZjZ1W/Z/nDauzqA7ZyHXyugPi0ndBw8MC3XbaocX6nUlEXeR\nCCnVZ+Hw67rpE5ChDLUwCRvLiETAP97SxcE+jhKWQivVPBgI7aAX9qpfuO/c\n3KC7F0TaTnUiQTI3BAjpDh48rs7zrA/58ypp7lYyJgRM3r5mvbqOMnVhDe7V\nVK/47dj6+qpHMZ0R+4jd48luvBxIfXtKof4V1zxR6RlmpG/Rrid6VKPDttYB\nLjSFPoT9blm9sKxBGrVJ2FyFn26zhkkNlsS3U1rSmf/R2IeYKmVjC2vzoHkP\n7dnIIP3X+fdeGGlkr0ZaL8fkbPusAPzdmOhsSUUbkxred17+0ijslcodLSiV\nmro0T961Grw/2yY97fUuwoPub1Qa5fJyN8wDqaTEXWIRT9rPIYFHtE5fKkDg\nqGWcT+VzlAzV9oFHUUiu5HNNBCuj45BamHJXn+aguCzr7Z1+ZXFvpKgX9qCT\nD8sIZmpO6XLDg1kw2a4Mr8l9NwGivyrDkXPaJXoHxKClckHCl8z6jscxAlQv\ntI4aHgTguocsNGrY0BL7XpyrQ1DLJrzBb6JmX3DFMk0KRWGo+VBOm7AP4ZZm\nTG8LMMeCr0uLShu9PoNVMolo+eb9bAlNoQzo3j0Pe/9QWvN6wyO1QsScFuZ+\niYZ4\r\n=O8Sv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.47.0-35912.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.47.0-35912","@fluidframework/map":"0.47.0-35912","@fluidframework/cell":"0.47.0-35912","@fluidframework/matrix":"0.47.0-35912","@fluidframework/counter":"0.47.0-35912","@fluidframework/aqueduct":"0.47.0-35912","@fluidframework/sequence":"0.47.0-35912","@fluidframework/test-utils":"0.47.0-35912","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"0.47.0-35912","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"0.47.0-35912","@fluidframework/container-runtime":"0.47.0-35912","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"0.47.0-35912","@fluidframework/register-collection":"0.47.0-35912","@fluidframework/runtime-definitions":"0.47.0-35912","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"0.47.0-35912","@fluidframework/test-driver-definitions":"0.47.0-35912"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"0.47.0-35912","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.47.0-35912","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.47.0-35912","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"0.47.0-35912","@fluidframework/local-driver":"0.47.0-35912","@fluidframework/runtime-utils":"0.47.0-35912","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.47.0-35912","@fluidframework/request-handler":"0.47.0-35912","@fluidframework/telemetry-utils":"0.47.0-35912","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.47.0-35912","@fluidframework/test-loader-utils":"0.47.0-35912","@fluidframework/test-runtime-utils":"0.47.0-35912","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.47.0-35912","@fluidframework/container-runtime-definitions":"0.47.0-35912"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.47.0-35912_1630454293444_0.8610029449974907","host":"s3://npm-registry-packages"}},"0.47.0-35961":{"name":"@fluidframework/test-version-utils","version":"0.47.0-35961","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.47.0-35961","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"8707d219d2bf52ec66a3c7866d5a8716f6293705","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.47.0-35961.tgz","fileCount":35,"integrity":"sha512-wi1WGZFrs19QmqihKAGHlGBmwnHbdRDvC1Y88oY8uenAnHlFE9D8w6KWQPVv557Anip+YOsU88t9dKgQM4wPxg==","signatures":[{"sig":"MEQCIFa9T2BO8CugWEhPG3ZPy5bgb/X6/4+yc0VAJNGG2IukAiAht27tJNebkREFH5JYMg0h3fsCSqe416Xe4RoxNa28Zw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133214,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhL7j3CRA9TVsSAnZWagAAEBYP/14nL/0lhTS6jbHDSdYv\nxhWefqIM9f+sFSmw3b2x0AE8Q//8ES7WeiKNMtjb5wz4T0b/IQcCewse++wE\ngvOJra4AaAE883bdOOIUKecrZy7SQay72cZHn/Nbxdu6/eWgFuQGLQOpvaGC\nw5DYzv2A5qkVkCXN57BQjAP8u6pTeGkiyCu2DxGltRVgrhXQaO2rsGWOdBdU\nadZaDAkVoYHp6wfpBx9tIQ9grOjGKI4jmSAHYGPSypSA0868r6FKjJQEZ+oK\n7UlTeVWKgDQfo8DSRDP5A8a1G1URuJN192a4luN5ZV9DTAmQ9aVhrG94TV/n\n7sxeaG6myBIahSI7abjPJgNl83q85veebeqZLr11T3/DPp3qe28srNJpF+sO\nDCHibc8qIbcV6qmeZJ+dYLK8uPBGuXXS1iIVGKo28zvIxrYqeJuVRwm+SlUw\nuqO9yZgqgIU3L9U6unAqPgVzqgkoKzefXn6x/32Yp5yJe+uUDLEIHcDEqPX3\nCRVPQaT/xhZLd7iJDL4+NbUFiszwr5kA3auWMza+CjVG0paIXVaqONb17h/S\ntF49NfweFyjuCAPdtx7V+23hfnxU3K9TrBfKj6mjhhjPXI3gjm+121iVN5xT\nkg9lt18xDTym0iTTcXBy2Ro0q+OgQwUteNXPTaxEftmcpz4t1oOykd9Zkqre\nf/S+\r\n=XvyO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.47.0-35961.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.47.0-35961","@fluidframework/map":"0.47.0-35961","@fluidframework/cell":"0.47.0-35961","@fluidframework/matrix":"0.47.0-35961","@fluidframework/counter":"0.47.0-35961","@fluidframework/aqueduct":"0.47.0-35961","@fluidframework/sequence":"0.47.0-35961","@fluidframework/test-utils":"0.47.0-35961","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"0.47.0-35961","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"0.47.0-35961","@fluidframework/container-runtime":"0.47.0-35961","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"0.47.0-35961","@fluidframework/register-collection":"0.47.0-35961","@fluidframework/runtime-definitions":"0.47.0-35961","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"0.47.0-35961","@fluidframework/test-driver-definitions":"0.47.0-35961"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"0.47.0-35961","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.47.0-35961","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.47.0-35961","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"0.47.0-35961","@fluidframework/local-driver":"0.47.0-35961","@fluidframework/runtime-utils":"0.47.0-35961","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.47.0-35961","@fluidframework/request-handler":"0.47.0-35961","@fluidframework/telemetry-utils":"0.47.0-35961","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.47.0-35961","@fluidframework/test-loader-utils":"0.47.0-35961","@fluidframework/test-runtime-utils":"0.47.0-35961","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.47.0-35961","@fluidframework/container-runtime-definitions":"0.47.0-35961"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.47.0-35961_1630517495339_0.7374170707122902","host":"s3://npm-registry-packages"}},"0.46.1":{"name":"@fluidframework/test-version-utils","version":"0.46.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.46.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"8626270c1d7b1afff49f89b419b856d169ee3de2","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.46.1.tgz","fileCount":35,"integrity":"sha512-jhFqPV1JZOCmFWdYLqDCoirUTvTMkKhu5NQscdePiRPtf5XnN9ruogVGQBHKxU9PJyTwUPV8gPnouaZMnVH2pA==","signatures":[{"sig":"MEYCIQDHeKpDxdiR7bHX/R+uyASLUJbX7Wvvemc65U6erGfNIwIhAN7Pd0NCs92qVNTOMM7ARmLqvzfKd4Yv91WLEWtAyI7N","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":131571,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMVZUCRA9TVsSAnZWagAAv3oP/i2JenxqBAhmk3Ylr013\nL1jpDmPc6/ZKmKWpRmjuaK+1pZh9JRYHHgAWn+4Uls6KqGCsf8kTHJxy0H/j\nNX5Ag7rR2Y0c8DGVMvXfHJpONWFxz7TASCAwIZsHNJLAEQmrMN1djtP6pucW\nzXOkOulpzwQlVxuqFdun+YpHTYYgOg9jEda8RNQHMXObLZE+MUP4r5hOWmQ4\njy5D3/hyCkiBqbQrIkAfvde19pg6pgNkTbQ/p2iPZsJ8T9BKs93cu94dDVrJ\nKFFAa1dJGkWt1T7rEnxQA+kXH7N3DerlBFmMnTV4U1FuOxRLFXQWivlZvMNj\nwFvJhM+IeuP2hBOQblzVl2cknRQSKxPez4pcZDJAREqZ9n+rb07/wyGukZaq\ndfqyfpFJ8i+9OpIwFoKEbNfZYl0PIY5YNk+AlDMK5YpGFQllUL2PsYYviCsS\nHhsr2y6HsIgBArFDWZ2NDR6AgaQ7N/++8KNxQezV0PD9bplVLXGcdaflfHDd\nt+hvlxkzNjstm1hxtVOJemMVts9nWWlzlMz1KJFfOT0/FO+n4zimN5rGUUJn\nKS7X9OSf6+GpC6ym3/z8U86DN1ZadR6VegVpIT0DsXskomhY90PTb9gZXhOZ\n5OeJfQktvSWZF1NP0/RtFACY+VCLfwrLXKDOjafOiZqaF3zu3GOdEgZjtN6K\neggI\r\n=iN0h\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.46.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.46.1","@fluidframework/map":"^0.46.1","@fluidframework/cell":"^0.46.1","@fluidframework/matrix":"^0.46.1","@fluidframework/counter":"^0.46.1","@fluidframework/aqueduct":"^0.46.1","@fluidframework/sequence":"^0.46.1","@fluidframework/test-utils":"^0.46.1","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"^0.46.1","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"^0.46.1","@fluidframework/container-runtime":"^0.46.1","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"^0.46.1","@fluidframework/register-collection":"^0.46.1","@fluidframework/runtime-definitions":"^0.46.1","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"^0.46.1","@fluidframework/test-driver-definitions":"^0.46.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.46.1","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.46.1","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.46.1","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.46.1","@fluidframework/local-driver":"^0.46.1","@fluidframework/runtime-utils":"^0.46.1","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.46.1","@fluidframework/request-handler":"^0.46.1","@fluidframework/telemetry-utils":"^0.46.1","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.46.1","@fluidframework/test-loader-utils":"^0.46.1","@fluidframework/test-runtime-utils":"^0.46.1","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.46.1","@fluidframework/container-runtime-definitions":"^0.46.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.46.1_1630623316062_0.9276975501452955","host":"s3://npm-registry-packages"}},"0.47.0-36362":{"name":"@fluidframework/test-version-utils","version":"0.47.0-36362","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.47.0-36362","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"5bdc853bd75c4b3af91ba9a71367f6e7d90b843b","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.47.0-36362.tgz","fileCount":35,"integrity":"sha512-bBeXlWozspmZp2jl5bgymEgGortC0HfQMCdZUZStbshSSywOlaPkNvRwVvYL/laiLoosZZfyXZPlBlqYfPBrPw==","signatures":[{"sig":"MEUCIAkkz3sDsd+AzU6JFDr5UfWVHyF3qWbcGZvNd7N8ds3bAiEAlVhaWYoDCk7tl/nfy8f2zGbiVQ339/ptzjHFJGRoAaE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133214,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMmsXCRA9TVsSAnZWagAA+8QQAIFilUa1uBKjiqRU1Oy/\namQkhoVlUDYhLNAvZhUc3Cw+LJomkHCjqwMoz0beOQj3y/EtOADOmPHPdlGY\nvWUkxED3oKRD7Nw01n7v8Hcx7ZFtkzWSLqlUI/HoaBq1zVaNm7OAKA69pawE\n4kTCCaVD543r8lrNrOpBwEdUTFoxqMKlw5OtXXlpO4jyvgq4zUBRUVIZQ+EI\ntmE5Ib8M1JvXIuWm3luToa/XICnefSezQZOQyv3K9cRYSp4FfUdlLnxZfBW3\nDyFWpeO4c3RfjSh0NbNJoV3Y30xPky3g7WFCb9oiI6LJkWf9fXM+Z1qsVK9P\nUGeusj25BHzHW/tDcKdMiZQH8U85M2OaEpmKhfkitsK2qEMLJCYmXVlfArA0\n39c252Z6mEKlMzijRQ/8jsNBpqsWrA/chUrvTbFO/MaNfIbn7dMbeNnyjAhR\nS1kD0XpYUkV8R5ygS/Q8kJVCPfWvJHiFOQ7JYVw6u9CQg45oL0yvU0vXqZ+r\num2eENsuBnFlrnzG4qUiK9m/6RFdQyl4htQrRfl5LrtGGX00dQhZAXiIVHJ2\n00ovvxQbRXU+Gie5EwbGfgqsYKbbACJWMYk7NPOf+VvtFHhOi0xd5QDJgWZE\na4+jKFFn+L5BAPqIu7eGjwEoMRIEAajVE9OrHFirSyVA94cSkITX2e2gQW5m\nrVI5\r\n=IlPW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.47.0-36362.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.47.0-36362","@fluidframework/map":"0.47.0-36362","@fluidframework/cell":"0.47.0-36362","@fluidframework/matrix":"0.47.0-36362","@fluidframework/counter":"0.47.0-36362","@fluidframework/aqueduct":"0.47.0-36362","@fluidframework/sequence":"0.47.0-36362","@fluidframework/test-utils":"0.47.0-36362","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"0.47.0-36362","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"0.47.0-36362","@fluidframework/container-runtime":"0.47.0-36362","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"0.47.0-36362","@fluidframework/register-collection":"0.47.0-36362","@fluidframework/runtime-definitions":"0.47.0-36362","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"0.47.0-36362","@fluidframework/test-driver-definitions":"0.47.0-36362"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"0.47.0-36362","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.47.0-36362","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.47.0-36362","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"0.47.0-36362","@fluidframework/local-driver":"0.47.0-36362","@fluidframework/runtime-utils":"0.47.0-36362","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.47.0-36362","@fluidframework/request-handler":"0.47.0-36362","@fluidframework/telemetry-utils":"0.47.0-36362","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.47.0-36362","@fluidframework/test-loader-utils":"0.47.0-36362","@fluidframework/test-runtime-utils":"0.47.0-36362","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.47.0-36362","@fluidframework/container-runtime-definitions":"0.47.0-36362"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.47.0-36362_1630694166844_0.07911732324605114","host":"s3://npm-registry-packages"}},"0.47.0-36699":{"name":"@fluidframework/test-version-utils","version":"0.47.0-36699","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.47.0-36699","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"088094dcb97cfc3fa9f9ad1eb4894ed527faa8f7","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.47.0-36699.tgz","fileCount":35,"integrity":"sha512-srRgifHBhLvlMR8ChzB6atyA51pfhxuG0Inr5RTEUfEDPva4QoJ6LMgAmr0dJ2Q80hYlc7wr9U2urksUWoMkag==","signatures":[{"sig":"MEQCIEu6WmvFufmHm+fMS31w5zVvwpca7jmYhQSCDUgBtjEwAiAM7oQdjS7G7AAl4lfZiNr5qALeZ7UpROsPRYZcQOAG9A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":137677,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhN/nrCRA9TVsSAnZWagAA5mgP/jsf1djgrbllbfNQB5wj\nPcloNzMVJQzqWxEA8PW5p+Xh1WtV6EsfyLSttIcQVBJisEyZVD8ZAXRnARDb\nZC5bOXJv5+l1d+GZHIYPWFGTUgGAaLJ1R/3GqTOcAOQ9aOGeKpeMCNhVB3pn\nUfyyzlX/6uqftB5qYa/rZ42eCRrM8qxGhKLkU+gzOEG1S8QPhIH2lVP3U9dQ\nC0QxRW+HA7pwSFg+sQB1V5DZh5Z2PdufALlnvNvenC/WUtUm+twvg+/yEaYq\nrgYmPeOiZaOR9yFjuJW4iWIlJf0Ry1v4c0/lY5zeQmF5hTqcL2SCl9rasmCd\n607eiNMEG/sATTvU/Ae+kcRykRcYCyiANYkuR5t77AaPR+9miB8dDD0qI59K\nO1MrbPagctsrba7uspazieZltVUlyUkpO+yyxSIel4tDjNYIfITtAa55bQ+j\nunF2f41QpZMfx/ulT8mCQltTU+K83389Q1ps7iNYGzLQmggwGXZwVf6DbaQt\nnLM8GDy92CFZn1g72KNi5sqKEJgJudMzoPo2OZ2t49AFyR5S4im2lnnvG9PD\ndiIqkcyX0VtQ9kB6pYBR/ozAYD+FCSwzmOo5FHEfLtBloKl4+8H2gNyD+07Z\nLodnhyH0LXgq7+1tOBu3ugZB9xR/WMDFuwVJF9NVRbrLAJh+F0fhG7OFTMmr\nPtDM\r\n=7Rt4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.47.0-36699.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.47.0-36699","@fluidframework/map":"0.47.0-36699","@fluidframework/cell":"0.47.0-36699","@fluidframework/matrix":"0.47.0-36699","@fluidframework/counter":"0.47.0-36699","@fluidframework/aqueduct":"0.47.0-36699","@fluidframework/sequence":"0.47.0-36699","@fluidframework/test-utils":"0.47.0-36699","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"0.47.0-36699","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"0.47.0-36699","@fluidframework/container-runtime":"0.47.0-36699","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"0.47.0-36699","@fluidframework/register-collection":"0.47.0-36699","@fluidframework/runtime-definitions":"0.47.0-36699","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"0.47.0-36699","@fluidframework/test-driver-definitions":"0.47.0-36699"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"0.47.0-36699","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.47.0-36699","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.47.0-36699","@fluidframework/build-common":"^0.23.0-0","@fluidframework/driver-utils":"0.47.0-36699","@fluidframework/local-driver":"0.47.0-36699","@fluidframework/runtime-utils":"0.47.0-36699","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.47.0-36699","@fluidframework/request-handler":"0.47.0-36699","@fluidframework/telemetry-utils":"0.47.0-36699","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.47.0-36699","@fluidframework/test-loader-utils":"0.47.0-36699","@fluidframework/test-runtime-utils":"0.47.0-36699","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.47.0-36699","@fluidframework/container-runtime-definitions":"0.47.0-36699"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.47.0-36699_1631058411278_0.7679123427735808","host":"s3://npm-registry-packages"}},"0.47.0":{"name":"@fluidframework/test-version-utils","version":"0.47.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.47.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"957615262abb4a81406bd7f2d6559d7aadc42f7e","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.47.0.tgz","fileCount":35,"integrity":"sha512-yd+qIfaL2SbPak9Nncl50VxkPkyIJtyn+i9Wl3bHDvB3TRCkYpQGQSY97dBLqHFQuCSjySPYm/0HR2GiD+2FBg==","signatures":[{"sig":"MEYCIQCgauLUyFYWD/0mVqQGLMFBlPspJmQo5w6G196puI9JmgIhAKJg03rSpe/ASieLB17leKKPISX3UftYopfNNjYr8vx1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":137493,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOPsxCRA9TVsSAnZWagAALe8P/30krkK5QRVMtR7lc2a1\nx/FyQJQ4cEP1Eh450nAqUO8Itpepvp39FJZhOXm2taQg7bXOGBnoJQ/l4Vxd\nSfSi2WqMcW4FPHOxcyczj/ypKoGxGN4HVPvdwRrjj/wtOy30uNZkIaO2VlMD\nAd+2pHnZRW6rirpQvmd/LBBaa6lOSwkqdKoxqu0AfCzBmZf1ttVYE81NlPu2\nMl8NvwnCPA4FUsRGj5s8cDYUkOAiRXp2AW4n8F1efDwNCyExSovO2s6eYijE\nYoBHNabkluAPttMnONpBHYpgcU8Iy9weD2rtRAwPa1fk9VVIZHoqXEXramUH\ndkhYmS7eQk9Asqj/4bId1c9xuKH/3/8cGr96aQN71/u5C4SMcFLYWO6xH3ab\nrbbpq+GbMcRoXEGyQhDVAsMryQPpf3eOGYv0wfnGzNDlKC0XAb3Ui8mCLzJW\n00DC5iD/cRG16/p+Gyn51QgYESN2J9Cdhi2lCiplPQK3N4vMrZ9It6Bzep/b\nOpiCVbJlWGBdtitbdsuckywiIXHbfoHzCPnmSIfVZHjXMjYG71uRKlPw6yt6\nSdSiPwgKm4lNSI3CBl1A6kErQYEX4+AqN4tcFlzVLofi1FdLwi6uRZiaFtqY\nN0STLVI0iYehsjeykGZzAaFgF+sG1lRqXYooc0BO3zXX6AT/YKlK2kv+15i0\nCSQ2\r\n=hgA4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.47.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.47.0","@fluidframework/map":"^0.47.0","@fluidframework/cell":"^0.47.0","@fluidframework/matrix":"^0.47.0","@fluidframework/counter":"^0.47.0","@fluidframework/aqueduct":"^0.47.0","@fluidframework/sequence":"^0.47.0","@fluidframework/test-utils":"^0.47.0","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"^0.47.0","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"^0.47.0","@fluidframework/container-runtime":"^0.47.0","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"^0.47.0","@fluidframework/register-collection":"^0.47.0","@fluidframework/runtime-definitions":"^0.47.0","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"^0.47.0","@fluidframework/test-driver-definitions":"^0.47.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"^0.47.0","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.47.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.47.0","@fluidframework/build-common":"^0.23.0","@fluidframework/driver-utils":"^0.47.0","@fluidframework/local-driver":"^0.47.0","@fluidframework/runtime-utils":"^0.47.0","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.47.0","@fluidframework/request-handler":"^0.47.0","@fluidframework/telemetry-utils":"^0.47.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.47.0","@fluidframework/test-loader-utils":"^0.47.0","@fluidframework/test-runtime-utils":"^0.47.0","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.47.0","@fluidframework/container-runtime-definitions":"^0.47.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.47.0_1631124273607_0.6982353503862351","host":"s3://npm-registry-packages"}},"0.46.2":{"name":"@fluidframework/test-version-utils","version":"0.46.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.46.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"1f854f9ceebf245f29fe1f4ba3b382ca834b3d26","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.46.2.tgz","fileCount":35,"integrity":"sha512-2c9xB1DGhGL68vAHC2criKHyJTrHhGfc7MWd4BU+2b/AdFwlmPm4an8UeF/FZOmbwmuZijB/B+Bme3LTc3coMA==","signatures":[{"sig":"MEUCIEYO9ZENOBwUxDmXEnGGlvY7lPWyhgFhaq3hugKhdgjUAiEAhaoKBIKuTMQwY2Jz4T5NonAMoX6qDh/aNhlb9v+3XXM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":131571,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQm5ACRA9TVsSAnZWagAA9YMP/0YhwkieOEnX9PmN4jUf\n5WWOGOmyUVvZHqkD9Eutu3awrtbMuJftwgituLmQf/uGwe+91lIQma+mcl6T\nYJpdFA7kPqQ2OM6iJNu6JfjN0LN7yAJrf2cL8924f6CGVrERMJlI7f23B58x\nnRnBVriiiQ3uMAIpqY7m5ZdgUNGXD0IEsYjPcrgS4VzZGRzj5IWpppMnof75\nuXFKv7CYc0IWpDDq/wM7Cu/zV1zBDa8zaPZvThiw6pEFFOV/4fHn5o6c844b\ntBmr4rkIufPYdpqqn+BJJRAKMIVhgIkD8jEanJCWozt0sZ14uOtm84BhBp7/\nN+arU0oJcIKaaRuATjN2WgZSjEBbbGHdHH8u7EWhRKVUQtVMALSlk3T0c4N2\nt8JUrwJHugU0UJ/uB+kVOptXfQax2XCa3Pt03a4F6dnR7ZZCr+7oGRSa25h3\nXznPfj3ctVVr3KkLw2+UKhnDEPwHCMEN6LByelTApPBLLMS0Ghn3c2ThGAHw\nueAoRCLWGRlRIf40sIjmQrsBlad9t3HJSZik6MtmpBzRp1JfXhnFCA/3iggT\nBvkgB37qxndozBglbu7spIJlkJzoTR5O81pVRTy4bx4dU/Z5Ujnv8+iC9E5J\nVdVNT/hJ84wxXAke79C+ST4XDPCZeeV1aE7hf9PoMkNqRt4egD6ozQ06B8bG\n6//K\r\n=XDD5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.46.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.46.2","@fluidframework/map":"^0.46.2","@fluidframework/cell":"^0.46.2","@fluidframework/matrix":"^0.46.2","@fluidframework/counter":"^0.46.2","@fluidframework/aqueduct":"^0.46.2","@fluidframework/sequence":"^0.46.2","@fluidframework/test-utils":"^0.46.2","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"^0.46.2","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"^0.46.2","@fluidframework/container-runtime":"^0.46.2","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"^0.46.2","@fluidframework/register-collection":"^0.46.2","@fluidframework/runtime-definitions":"^0.46.2","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"^0.46.2","@fluidframework/test-driver-definitions":"^0.46.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","tinylicious":"^0.4.21640","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","start-server-and-test":"^1.11.7","@fluidframework/datastore":"^0.46.2","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.46.2","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.46.2","@fluidframework/build-common":"^0.22.0","@fluidframework/driver-utils":"^0.46.2","@fluidframework/local-driver":"^0.46.2","@fluidframework/runtime-utils":"^0.46.2","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.46.2","@fluidframework/request-handler":"^0.46.2","@fluidframework/telemetry-utils":"^0.46.2","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.46.2","@fluidframework/test-loader-utils":"^0.46.2","@fluidframework/test-runtime-utils":"^0.46.2","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.46.2","@fluidframework/container-runtime-definitions":"^0.46.2"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.46.2_1631743552058_0.4693546143479028","host":"s3://npm-registry-packages"}},"0.47.1":{"name":"@fluidframework/test-version-utils","version":"0.47.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.47.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"8b48127780af35809e3fb78d065856eff334f1e7","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.47.1.tgz","fileCount":35,"integrity":"sha512-qqKiRxq4Ygbtfmjqj85MrjZGUzGPQ3R4+y63e24KIFPB7oSGybHneBlx+MM5vvYb9G1vA6CnB9QioxFZ+5gUvw==","signatures":[{"sig":"MEQCIGfsR6eOFptI+ZP9rx2MlG2bOMu6wOwjtrSJy1N4Jx2JAiBjuViNYdGyf/LoA+uEjUG74lRYeVie4OHZ0t/7+koEsQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":137493,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQntQCRA9TVsSAnZWagAAJ6MP/37WdM5L2LqA1LHnUT/w\ngT0iBSJ9fm8UcnldxW3iAlueqySDMLoj/ExZ4gnoasakr03cc+5hCEBwNwIi\ncW68JEYkIPd4x9nmKklxKU3Zn8EMUzidxx9ipIh8MBP5TtJ88QbJ4EEsKdU3\nIgKvoD2eZzfG7ZM2ew/IOtiHDqHVPwjyXS+gKJSVO6izDx25lzaf/9BFTD/V\nm+tKfe//UhSQi+w7f5qGc6NR2T/En+zLsz+SN0S0EWGq6UjZVoM1U3IPZ0/X\nxy3wizEWfrGotLnsY5e6doouzUR8mdGUc5BgiG53ng3yfHnSajDBhtUOg6FI\njeJjvrgyA6+EgcLH9R2hDhuI1kJl8TYynWPcGwDyOBnjhgi/3T4cdRHqJWFk\nD4+mzZXRJCu4eFFuHMqS3BRvkJDE7eLwLUJPQmpfOavhNjngE/cdyTOiUIti\nOujv2fCRysJkQXhx7SGxLRv2XEd+oa8Vtwq5FjMg4rWrE+sKqASUveH7TqKi\nhLrUkAZ1ZfdVJ3a26OIpL7gf0zc7zo+nZy5LPtTdBwYnr1rcqTPpr+5D0Vzq\nLYSN603ywoLhbmJQwsK1+DbxJ3Tnp8Rdl1NEuhUxP20xi0oOE480tv6TXs8h\nJRW2A8I2VSHm89XiaC5rUJPu6GqBS887JEC+9AfF7yRdJ2Lx2qBosICl1TnW\n592h\r\n=MBea\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.47.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.47.1","@fluidframework/map":"^0.47.1","@fluidframework/cell":"^0.47.1","@fluidframework/matrix":"^0.47.1","@fluidframework/counter":"^0.47.1","@fluidframework/aqueduct":"^0.47.1","@fluidframework/sequence":"^0.47.1","@fluidframework/test-utils":"^0.47.1","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"^0.47.1","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"^0.47.1","@fluidframework/container-runtime":"^0.47.1","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"^0.47.1","@fluidframework/register-collection":"^0.47.1","@fluidframework/runtime-definitions":"^0.47.1","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"^0.47.1","@fluidframework/test-driver-definitions":"^0.47.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"^0.47.1","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.47.1","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.47.1","@fluidframework/build-common":"^0.23.0","@fluidframework/driver-utils":"^0.47.1","@fluidframework/local-driver":"^0.47.1","@fluidframework/runtime-utils":"^0.47.1","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.47.1","@fluidframework/request-handler":"^0.47.1","@fluidframework/telemetry-utils":"^0.47.1","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.47.1","@fluidframework/test-loader-utils":"^0.47.1","@fluidframework/test-runtime-utils":"^0.47.1","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.47.1","@fluidframework/container-runtime-definitions":"^0.47.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.47.1_1631746896010_0.7081821880530446","host":"s3://npm-registry-packages"}},"0.48.0-38105":{"name":"@fluidframework/test-version-utils","version":"0.48.0-38105","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.48.0-38105","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"349b9f18bb285d4507c0f1bd33ff32957e260413","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.48.0-38105.tgz","fileCount":35,"integrity":"sha512-d5u3q0y1Aq77dnECHdZkXmEvvg4vJRtxamuUf5dDwg+nFWwGDd6YGhYzsKZ6+LskjGobj2L0kZjyTOnxbifwYA==","signatures":[{"sig":"MEUCIEc9HS8+Qn5UyvxYPGKVD10uzXkfcUscF1Hkjh02ov5VAiEA3H6/GDLa1KB67EOsHtCreXHe5T/wOvTvtZ76LgyGJx0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142414},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.48.0-38105.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.48.0-38105","@fluidframework/map":"0.48.0-38105","@fluidframework/cell":"0.48.0-38105","@fluidframework/matrix":"0.48.0-38105","@fluidframework/counter":"0.48.0-38105","@fluidframework/aqueduct":"0.48.0-38105","@fluidframework/sequence":"0.48.0-38105","@fluidframework/test-utils":"0.48.0-38105","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"0.48.0-38105","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"0.48.0-38105","@fluidframework/container-runtime":"0.48.0-38105","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"0.48.0-38105","@fluidframework/register-collection":"0.48.0-38105","@fluidframework/runtime-definitions":"0.48.0-38105","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"0.48.0-38105","@fluidframework/test-driver-definitions":"0.48.0-38105"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"0.48.0-38105","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.48.0-38105","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.48.0-38105","@fluidframework/build-common":"^0.23.0-0","@fluidframework/driver-utils":"0.48.0-38105","@fluidframework/local-driver":"0.48.0-38105","@fluidframework/runtime-utils":"0.48.0-38105","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.48.0-38105","@fluidframework/request-handler":"0.48.0-38105","@fluidframework/telemetry-utils":"0.48.0-38105","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.48.0-38105","@fluidframework/test-loader-utils":"0.48.0-38105","@fluidframework/test-runtime-utils":"0.48.0-38105","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.48.0-38105","@fluidframework/container-runtime-definitions":"0.48.0-38105"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.48.0-38105_1632173122355_0.07336484814000999","host":"s3://npm-registry-packages"}},"0.48.0-38142":{"name":"@fluidframework/test-version-utils","version":"0.48.0-38142","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.48.0-38142","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"521dae81e9734cd8e04149ce1ae7b1eed8b3a102","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.48.0-38142.tgz","fileCount":35,"integrity":"sha512-DHlQIznKNwdinTPsdSCRB3HaIC7euH1WKux7SHISXAnU+4jD64l8Q5NbVJbQPsWNRbjuMrlzWsFAtG/2qpX8Yg==","signatures":[{"sig":"MEYCIQC4F+00MNCelBzdkHfB6VROJOnPHGkq+zN0uLeS9JZqeAIhAIahkV92/7wyP9YTSTxYhFirqqF2brxqIJPRS+JmIISw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142414},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.48.0-38142.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.48.0-38142","@fluidframework/map":"0.48.0-38142","@fluidframework/cell":"0.48.0-38142","@fluidframework/matrix":"0.48.0-38142","@fluidframework/counter":"0.48.0-38142","@fluidframework/aqueduct":"0.48.0-38142","@fluidframework/sequence":"0.48.0-38142","@fluidframework/test-utils":"0.48.0-38142","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"0.48.0-38142","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"0.48.0-38142","@fluidframework/container-runtime":"0.48.0-38142","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"0.48.0-38142","@fluidframework/register-collection":"0.48.0-38142","@fluidframework/runtime-definitions":"0.48.0-38142","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"0.48.0-38142","@fluidframework/test-driver-definitions":"0.48.0-38142"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"0.48.0-38142","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.48.0-38142","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.48.0-38142","@fluidframework/build-common":"^0.23.0-0","@fluidframework/driver-utils":"0.48.0-38142","@fluidframework/local-driver":"0.48.0-38142","@fluidframework/runtime-utils":"0.48.0-38142","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.48.0-38142","@fluidframework/request-handler":"0.48.0-38142","@fluidframework/telemetry-utils":"0.48.0-38142","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.48.0-38142","@fluidframework/test-loader-utils":"0.48.0-38142","@fluidframework/test-runtime-utils":"0.48.0-38142","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.48.0-38142","@fluidframework/container-runtime-definitions":"0.48.0-38142"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.48.0-38142_1632240207845_0.6278875402539481","host":"s3://npm-registry-packages"}},"0.48.0":{"name":"@fluidframework/test-version-utils","version":"0.48.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.48.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"ae7126ce2abec6409a569f45db35e395d3f823e7","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.48.0.tgz","fileCount":35,"integrity":"sha512-RqbkoV7gCvavhoW8kKfpkmuNy96O2QBp/ePtN0PJY7qUDpEdPfpH31KaiOaNaQvUEo/tv/MckYuYsrYqlhpFHA==","signatures":[{"sig":"MEUCIH/E5Gzik3K1D3wMb1lWHdKVDKYDIVI24utLlrmidaa3AiEApcSxjO7RTlE0NoKq+QZcSMnpWDNAxvHsXVhySYWj10Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142230},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.48.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.48.0","@fluidframework/map":"^0.48.0","@fluidframework/cell":"^0.48.0","@fluidframework/matrix":"^0.48.0","@fluidframework/counter":"^0.48.0","@fluidframework/aqueduct":"^0.48.0","@fluidframework/sequence":"^0.48.0","@fluidframework/test-utils":"^0.48.0","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"^0.48.0","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"^0.48.0","@fluidframework/container-runtime":"^0.48.0","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"^0.48.0","@fluidframework/register-collection":"^0.48.0","@fluidframework/runtime-definitions":"^0.48.0","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"^0.48.0","@fluidframework/test-driver-definitions":"^0.48.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"^0.48.0","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.48.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.48.0","@fluidframework/build-common":"^0.23.0","@fluidframework/driver-utils":"^0.48.0","@fluidframework/local-driver":"^0.48.0","@fluidframework/runtime-utils":"^0.48.0","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.48.0","@fluidframework/request-handler":"^0.48.0","@fluidframework/telemetry-utils":"^0.48.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.48.0","@fluidframework/test-loader-utils":"^0.48.0","@fluidframework/test-runtime-utils":"^0.48.0","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.48.0","@fluidframework/container-runtime-definitions":"^0.48.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.48.0_1632255044413_0.37524103409529497","host":"s3://npm-registry-packages"}},"0.48.1":{"name":"@fluidframework/test-version-utils","version":"0.48.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.48.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"d2190651bdaaae1fc2d30df11a8fd2b871bb12a6","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.48.1.tgz","fileCount":35,"integrity":"sha512-91Kt9Z8FsiYTzQr+7T84+zDnb+BOCoFZC1v2pgArh51DLUjOR/4dp7ergEOtCokngm1GKQ6M6Wm4jhjoAY2zXg==","signatures":[{"sig":"MEUCIQD5eBsU+x+dXdJgVczZ0RoQBUFXFaQderfCKQ85z0BspgIgfmBZtPxX44iFruPFyGjNsN+w3L3vXrb6h9fN9r1ZTak=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142230},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.48.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.48.1","@fluidframework/map":"^0.48.1","@fluidframework/cell":"^0.48.1","@fluidframework/matrix":"^0.48.1","@fluidframework/counter":"^0.48.1","@fluidframework/aqueduct":"^0.48.1","@fluidframework/sequence":"^0.48.1","@fluidframework/test-utils":"^0.48.1","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"^0.48.1","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"^0.48.1","@fluidframework/container-runtime":"^0.48.1","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"^0.48.1","@fluidframework/register-collection":"^0.48.1","@fluidframework/runtime-definitions":"^0.48.1","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"^0.48.1","@fluidframework/test-driver-definitions":"^0.48.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"^0.48.1","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.48.1","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.48.1","@fluidframework/build-common":"^0.23.0","@fluidframework/driver-utils":"^0.48.1","@fluidframework/local-driver":"^0.48.1","@fluidframework/runtime-utils":"^0.48.1","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.48.1","@fluidframework/request-handler":"^0.48.1","@fluidframework/telemetry-utils":"^0.48.1","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.48.1","@fluidframework/test-loader-utils":"^0.48.1","@fluidframework/test-runtime-utils":"^0.48.1","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.48.1","@fluidframework/container-runtime-definitions":"^0.48.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.48.1_1632436313360_0.13536098632044058","host":"s3://npm-registry-packages"}},"0.48.2":{"name":"@fluidframework/test-version-utils","version":"0.48.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.48.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"7b611d5ce3cf8e05671178048626cdbebee45b27","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.48.2.tgz","fileCount":35,"integrity":"sha512-1+aks8WVtB5+XwIDLedwzXJ1wFSjD5+cwsjNR87VrVXojfdyWuXV1AMliyjiZrmr3yPDtiGJyproCWOuxtx58A==","signatures":[{"sig":"MEQCICwKBKJZ+fogXa5tzCQ/B8rQ+AjoN15/Mg/ElttMRl2XAiA/SYsuzwSdyIfCaR+PfyuH6JDQRJ8+nYYzxTb6gx1i1A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142230},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.48.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.48.2","@fluidframework/map":"^0.48.2","@fluidframework/cell":"^0.48.2","@fluidframework/matrix":"^0.48.2","@fluidframework/counter":"^0.48.2","@fluidframework/aqueduct":"^0.48.2","@fluidframework/sequence":"^0.48.2","@fluidframework/test-utils":"^0.48.2","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"^0.48.2","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"^0.48.2","@fluidframework/container-runtime":"^0.48.2","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"^0.48.2","@fluidframework/register-collection":"^0.48.2","@fluidframework/runtime-definitions":"^0.48.2","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"^0.48.2","@fluidframework/test-driver-definitions":"^0.48.2"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"^0.48.2","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.48.2","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.48.2","@fluidframework/build-common":"^0.23.0","@fluidframework/driver-utils":"^0.48.2","@fluidframework/local-driver":"^0.48.2","@fluidframework/runtime-utils":"^0.48.2","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.48.2","@fluidframework/request-handler":"^0.48.2","@fluidframework/telemetry-utils":"^0.48.2","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.48.2","@fluidframework/test-loader-utils":"^0.48.2","@fluidframework/test-runtime-utils":"^0.48.2","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.48.2","@fluidframework/container-runtime-definitions":"^0.48.2"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.48.2_1632772823394_0.49955424748794086","host":"s3://npm-registry-packages"}},"0.48.3":{"name":"@fluidframework/test-version-utils","version":"0.48.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.48.3","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"6af74865078e3c5bfbd62b9a1ac319449e34d9c2","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.48.3.tgz","fileCount":35,"integrity":"sha512-WG50cztapYNlMPyDnSbcbzWGumJ1u4Q5Z3SVmsA72dpYu+iUK3I/vn7c9Rvz29T3LaqairRQ05WS8k42ORwBwA==","signatures":[{"sig":"MEQCIB+m0LdziMfzU3izxg/SMV639daEB8IjW74SOyVNlNYXAiBv7/nZrhEVMhFyosh8y+i2X27MGIS5Z0f+jHKzNbl22Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142230},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.48.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.48.3","@fluidframework/map":"^0.48.3","@fluidframework/cell":"^0.48.3","@fluidframework/matrix":"^0.48.3","@fluidframework/counter":"^0.48.3","@fluidframework/aqueduct":"^0.48.3","@fluidframework/sequence":"^0.48.3","@fluidframework/test-utils":"^0.48.3","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"^0.48.3","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"^0.48.3","@fluidframework/container-runtime":"^0.48.3","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"^0.48.3","@fluidframework/register-collection":"^0.48.3","@fluidframework/runtime-definitions":"^0.48.3","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"^0.48.3","@fluidframework/test-driver-definitions":"^0.48.3"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"^0.48.3","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.48.3","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.48.3","@fluidframework/build-common":"^0.23.0","@fluidframework/driver-utils":"^0.48.3","@fluidframework/local-driver":"^0.48.3","@fluidframework/runtime-utils":"^0.48.3","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.48.3","@fluidframework/request-handler":"^0.48.3","@fluidframework/telemetry-utils":"^0.48.3","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.48.3","@fluidframework/test-loader-utils":"^0.48.3","@fluidframework/test-runtime-utils":"^0.48.3","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.48.3","@fluidframework/container-runtime-definitions":"^0.48.3"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.48.3_1633033950756_0.5408049875455134","host":"s3://npm-registry-packages"}},"0.49.0-39015":{"name":"@fluidframework/test-version-utils","version":"0.49.0-39015","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.49.0-39015","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"11cf64f48fab202b9d372e9b88bdbaa0067292bb","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.49.0-39015.tgz","fileCount":41,"integrity":"sha512-fftGuPq6tB1gUGb0HHXl5OAk3XqJesJXd3fCmP2WD8Ka6cpLeIcHpvVUsfdgKf2VxnIwebThS0iZCV/ydZg0XA==","signatures":[{"sig":"MEUCIHDzh0hVgs6IpT3WDWY0QwwCWJC8VfX5NJ+Xbo+yY14fAiEAvNWyhBBvmA1EmgV9qDT2fKeNZ/0cc6ozAm4+8Ozttec=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147707},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.49.0-39015.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.49.0-39015","@fluidframework/map":"0.49.0-39015","@fluidframework/cell":"0.49.0-39015","@fluidframework/matrix":"0.49.0-39015","@fluidframework/counter":"0.49.0-39015","@fluidframework/aqueduct":"0.49.0-39015","@fluidframework/sequence":"0.49.0-39015","@fluidframework/test-utils":"0.49.0-39015","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"0.49.0-39015","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"0.49.0-39015","@fluidframework/mocha-test-setup":"0.49.0-39015","@fluidframework/container-runtime":"0.49.0-39015","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"0.49.0-39015","@fluidframework/register-collection":"0.49.0-39015","@fluidframework/runtime-definitions":"0.49.0-39015","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"0.49.0-39015","@fluidframework/test-driver-definitions":"0.49.0-39015"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"0.49.0-39015","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.49.0-39015","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.49.0-39015","@fluidframework/build-common":"^0.23.0","@fluidframework/driver-utils":"0.49.0-39015","@fluidframework/local-driver":"0.49.0-39015","@fluidframework/runtime-utils":"0.49.0-39015","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.49.0-39015","@fluidframework/request-handler":"0.49.0-39015","@fluidframework/telemetry-utils":"0.49.0-39015","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.49.0-39015","@fluidframework/test-loader-utils":"0.49.0-39015","@fluidframework/test-runtime-utils":"0.49.0-39015","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.49.0-39015","@fluidframework/container-runtime-definitions":"0.49.0-39015"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.49.0-39015_1633039374759_0.8771258823220691","host":"s3://npm-registry-packages"}},"0.48.4":{"name":"@fluidframework/test-version-utils","version":"0.48.4","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.48.4","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"ab8436951d9b0888ccbee1486625bc7f571117e8","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.48.4.tgz","fileCount":35,"integrity":"sha512-q8leOatk3hK479av1HTcuKKrS9pjqcF03bANyfrKmvADpSKWurDv1rTDTXjidp0Aia9x3yqRybEjpasVKJxLoA==","signatures":[{"sig":"MEYCIQDWyuygfRqOwcix7Bml/kMu+Fw4w30KnCRXer0gsWMYzAIhALsV28k/ECCS9S7f0FUXwh/VSt1n2plW59Ivl3M2wnw3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142230},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.48.4.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.48.4","@fluidframework/map":"^0.48.4","@fluidframework/cell":"^0.48.4","@fluidframework/matrix":"^0.48.4","@fluidframework/counter":"^0.48.4","@fluidframework/aqueduct":"^0.48.4","@fluidframework/sequence":"^0.48.4","@fluidframework/test-utils":"^0.48.4","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"^0.48.4","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"^0.48.4","@fluidframework/container-runtime":"^0.48.4","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"^0.48.4","@fluidframework/register-collection":"^0.48.4","@fluidframework/runtime-definitions":"^0.48.4","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"^0.48.4","@fluidframework/test-driver-definitions":"^0.48.4"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"^0.48.4","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.48.4","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.48.4","@fluidframework/build-common":"^0.23.0","@fluidframework/driver-utils":"^0.48.4","@fluidframework/local-driver":"^0.48.4","@fluidframework/runtime-utils":"^0.48.4","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.48.4","@fluidframework/request-handler":"^0.48.4","@fluidframework/telemetry-utils":"^0.48.4","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.48.4","@fluidframework/test-loader-utils":"^0.48.4","@fluidframework/test-runtime-utils":"^0.48.4","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.48.4","@fluidframework/container-runtime-definitions":"^0.48.4"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.48.4_1633109008487_0.06679918271874241","host":"s3://npm-registry-packages"}},"0.49.0-39313":{"name":"@fluidframework/test-version-utils","version":"0.49.0-39313","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.49.0-39313","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"5dd9bfaf38642ca4f8c8b36fc5aa592bbb3e7d42","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.49.0-39313.tgz","fileCount":41,"integrity":"sha512-eoGUqlzITuXcdKN416yHwul+7CvtqYKaZyUobpwNAFM5k8jGHIW7Uq5YAl/5Y+QSwnWyyhQ8nhMRoRS6NqvB7A==","signatures":[{"sig":"MEUCIQDvAE+W1JJ+Ni6d2VtrKnK4+QP9T1IUlcfg+I0HFiKN+AIgBvR/AC+Wi6wMLyv8RSEzJditq8ZKNu8YRnF8zY+lRSA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147725},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.49.0-39313.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.49.0-39313","@fluidframework/map":"0.49.0-39313","@fluidframework/cell":"0.49.0-39313","@fluidframework/matrix":"0.49.0-39313","@fluidframework/counter":"0.49.0-39313","@fluidframework/aqueduct":"0.49.0-39313","@fluidframework/sequence":"0.49.0-39313","@fluidframework/test-utils":"0.49.0-39313","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"0.49.0-39313","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"0.49.0-39313","@fluidframework/mocha-test-setup":"0.49.0-39313","@fluidframework/container-runtime":"0.49.0-39313","@fluidframework/driver-definitions":"^0.40.0-39010","@fluidframework/ordered-collection":"0.49.0-39313","@fluidframework/register-collection":"0.49.0-39313","@fluidframework/runtime-definitions":"0.49.0-39313","@fluidframework/protocol-definitions":"^0.1025.0-38844","@fluidframework/container-definitions":"^0.40.0-39046","@fluidframework/datastore-definitions":"0.49.0-39313","@fluidframework/test-driver-definitions":"0.49.0-39313"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"0.49.0-39313","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.49.0-39313","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.49.0-39313","@fluidframework/build-common":"^0.23.0","@fluidframework/driver-utils":"0.49.0-39313","@fluidframework/local-driver":"0.49.0-39313","@fluidframework/runtime-utils":"0.49.0-39313","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.49.0-39313","@fluidframework/request-handler":"0.49.0-39313","@fluidframework/telemetry-utils":"0.49.0-39313","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.49.0-39313","@fluidframework/test-loader-utils":"0.49.0-39313","@fluidframework/test-runtime-utils":"0.49.0-39313","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.49.0-39313","@fluidframework/container-runtime-definitions":"0.49.0-39313"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.49.0-39313_1633389887496_0.09151438902126574","host":"s3://npm-registry-packages"}},"0.48.5":{"name":"@fluidframework/test-version-utils","version":"0.48.5","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.48.5","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"7454d989b6b8d23fdaa4024aa1aa2a85e4e97c26","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.48.5.tgz","fileCount":35,"integrity":"sha512-WXcOFkdoR8AdZRwIwng6AZHNW3LroO4DKfYJjucTVBP/G9/xpC5+LxSLzpxXGeLO7lR3PhH7RMhO6uY3XzjdPw==","signatures":[{"sig":"MEQCIFpFHZ02/DVDIXL/PmJMDVNeeM2qjNlr/uSsW+w5uWdUAiAJ3pnEvbnqKVTzJ6KmmlwmwTrzxigJV3RtRkj9RHUBnA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142230},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.48.5.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.48.5","@fluidframework/map":"^0.48.5","@fluidframework/cell":"^0.48.5","@fluidframework/matrix":"^0.48.5","@fluidframework/counter":"^0.48.5","@fluidframework/aqueduct":"^0.48.5","@fluidframework/sequence":"^0.48.5","@fluidframework/test-utils":"^0.48.5","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"^0.48.5","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"^0.48.5","@fluidframework/container-runtime":"^0.48.5","@fluidframework/driver-definitions":"^0.39.6","@fluidframework/ordered-collection":"^0.48.5","@fluidframework/register-collection":"^0.48.5","@fluidframework/runtime-definitions":"^0.48.5","@fluidframework/protocol-definitions":"^0.1024.0","@fluidframework/container-definitions":"^0.39.8","@fluidframework/datastore-definitions":"^0.48.5","@fluidframework/test-driver-definitions":"^0.48.5"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"^0.48.5","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.48.5","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.48.5","@fluidframework/build-common":"^0.23.0","@fluidframework/driver-utils":"^0.48.5","@fluidframework/local-driver":"^0.48.5","@fluidframework/runtime-utils":"^0.48.5","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.48.5","@fluidframework/request-handler":"^0.48.5","@fluidframework/telemetry-utils":"^0.48.5","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.48.5","@fluidframework/test-loader-utils":"^0.48.5","@fluidframework/test-runtime-utils":"^0.48.5","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.48.5","@fluidframework/container-runtime-definitions":"^0.48.5"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.48.5_1633471282737_0.046444985804932504","host":"s3://npm-registry-packages"}},"0.49.0":{"name":"@fluidframework/test-version-utils","version":"0.49.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.49.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"66ef1c1a3564cfb7b780ca6a16c4945cf16bef2a","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.49.0.tgz","fileCount":41,"integrity":"sha512-orzg9lngPRz2p5vx0vwMNO83H1wvGlIWcYJL/Dqd8wnA6eVdJF0QOStU8n+mPtFazmeLIjrbUuvFz4Ay+qs7cA==","signatures":[{"sig":"MEUCIFz5oWKEQNFQtgcv0jOWXxkzqlHi+07PeKbip2QcL/c4AiEAn6oRak1gavA0zcsjGkH9YzEdc7Q2M5BoUcK4UVavAFY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147520},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.49.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.49.0","@fluidframework/map":"^0.49.0","@fluidframework/cell":"^0.49.0","@fluidframework/matrix":"^0.49.0","@fluidframework/counter":"^0.49.0","@fluidframework/aqueduct":"^0.49.0","@fluidframework/sequence":"^0.49.0","@fluidframework/test-utils":"^0.49.0","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"^0.49.0","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"^0.49.0","@fluidframework/mocha-test-setup":"^0.49.0","@fluidframework/container-runtime":"^0.49.0","@fluidframework/driver-definitions":"^0.40.0","@fluidframework/ordered-collection":"^0.49.0","@fluidframework/register-collection":"^0.49.0","@fluidframework/runtime-definitions":"^0.49.0","@fluidframework/protocol-definitions":"^0.1025.0","@fluidframework/container-definitions":"^0.40.0","@fluidframework/datastore-definitions":"^0.49.0","@fluidframework/test-driver-definitions":"^0.49.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"^0.49.0","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.49.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.49.0","@fluidframework/build-common":"^0.23.0","@fluidframework/driver-utils":"^0.49.0","@fluidframework/local-driver":"^0.49.0","@fluidframework/runtime-utils":"^0.49.0","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.49.0","@fluidframework/request-handler":"^0.49.0","@fluidframework/telemetry-utils":"^0.49.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.49.0","@fluidframework/test-loader-utils":"^0.49.0","@fluidframework/test-runtime-utils":"^0.49.0","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.49.0","@fluidframework/container-runtime-definitions":"^0.49.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.49.0_1633561449910_0.1458566963479535","host":"s3://npm-registry-packages"}},"0.49.1":{"name":"@fluidframework/test-version-utils","version":"0.49.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.49.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"93efb9970422db4b2151d76e4397202018992cb4","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.49.1.tgz","fileCount":41,"integrity":"sha512-RvoPhj2WgY6icBAvqofVViLMmFHxsqRTHsM8gHJwUJ76f2TSmeqXnV+vYCr8/Oywq448n06mqlZYpAgxlGiYpg==","signatures":[{"sig":"MEUCIQCFO07wZ2wOOGcsxp34X3a4EDt3lwptma2q1IWeyL58LwIgLrBgL0PM64L9KS2AXklk75bKl2GPiZ/6QRP3Z6sUL2o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147520},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.49.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.49.1","@fluidframework/map":"^0.49.1","@fluidframework/cell":"^0.49.1","@fluidframework/matrix":"^0.49.1","@fluidframework/counter":"^0.49.1","@fluidframework/aqueduct":"^0.49.1","@fluidframework/sequence":"^0.49.1","@fluidframework/test-utils":"^0.49.1","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"^0.49.1","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"^0.49.1","@fluidframework/mocha-test-setup":"^0.49.1","@fluidframework/container-runtime":"^0.49.1","@fluidframework/driver-definitions":"^0.40.0","@fluidframework/ordered-collection":"^0.49.1","@fluidframework/register-collection":"^0.49.1","@fluidframework/runtime-definitions":"^0.49.1","@fluidframework/protocol-definitions":"^0.1025.0","@fluidframework/container-definitions":"^0.40.0","@fluidframework/datastore-definitions":"^0.49.1","@fluidframework/test-driver-definitions":"^0.49.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"^0.49.1","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.49.1","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.49.1","@fluidframework/build-common":"^0.23.0","@fluidframework/driver-utils":"^0.49.1","@fluidframework/local-driver":"^0.49.1","@fluidframework/runtime-utils":"^0.49.1","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.49.1","@fluidframework/request-handler":"^0.49.1","@fluidframework/telemetry-utils":"^0.49.1","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.49.1","@fluidframework/test-loader-utils":"^0.49.1","@fluidframework/test-runtime-utils":"^0.49.1","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.49.1","@fluidframework/container-runtime-definitions":"^0.49.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.49.1_1633969618611_0.1787382332369576","host":"s3://npm-registry-packages"}},"0.49.2":{"name":"@fluidframework/test-version-utils","version":"0.49.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.49.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"1aa35f0e8dc0c12e84805608d8ddb84926093b7e","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.49.2.tgz","fileCount":41,"integrity":"sha512-PvwvDhXQFCzcOR5zI6tdbFFzWP4exTih7541zlI6k58nDAB/7K0rXn2Ybs3P3siT7+DAZQNb2Kg3dND2YrIQ0A==","signatures":[{"sig":"MEUCIC9KrxxsQ+eWIPzed8EK8qzVRtHLy67VTFoCm6wdHMIEAiEA9d1lw557nUdsSw1Mv5EG6SxJbS8fGyzsRyPi5fyd7RU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147520},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.49.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.6","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.49.2","@fluidframework/map":"^0.49.2","@fluidframework/cell":"^0.49.2","@fluidframework/matrix":"^0.49.2","@fluidframework/counter":"^0.49.2","@fluidframework/aqueduct":"^0.49.2","@fluidframework/sequence":"^0.49.2","@fluidframework/test-utils":"^0.49.2","@fluidframework/common-utils":"^0.32.1","@fluidframework/test-drivers":"^0.49.2","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"^0.49.2","@fluidframework/mocha-test-setup":"^0.49.2","@fluidframework/container-runtime":"^0.49.2","@fluidframework/driver-definitions":"^0.40.0","@fluidframework/ordered-collection":"^0.49.2","@fluidframework/register-collection":"^0.49.2","@fluidframework/runtime-definitions":"^0.49.2","@fluidframework/protocol-definitions":"^0.1025.1","@fluidframework/container-definitions":"^0.40.0","@fluidframework/datastore-definitions":"^0.49.2","@fluidframework/test-driver-definitions":"^0.49.2"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"^0.49.2","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.49.2","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.49.2","@fluidframework/build-common":"^0.23.0","@fluidframework/driver-utils":"^0.49.2","@fluidframework/local-driver":"^0.49.2","@fluidframework/runtime-utils":"^0.49.2","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.49.2","@fluidframework/request-handler":"^0.49.2","@fluidframework/telemetry-utils":"^0.49.2","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.49.2","@fluidframework/test-loader-utils":"^0.49.2","@fluidframework/test-runtime-utils":"^0.49.2","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.49.2","@fluidframework/container-runtime-definitions":"^0.49.2"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.49.2_1633991128509_0.08508978596757788","host":"s3://npm-registry-packages"}},"0.50.0-41365":{"name":"@fluidframework/test-version-utils","version":"0.50.0-41365","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.50.0-41365","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"fa2d896b8c929032c1fabd28a851c5c734bb5b75","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.50.0-41365.tgz","fileCount":41,"integrity":"sha512-a37p1S63ERNzhWxflxzasYKdd2wOqQhqFcWo3Llve9WmxA9IKRgRoSWoNPuWrUcGoEp/sYgOkiS9LRLHudWAYw==","signatures":[{"sig":"MEQCIGWuAFHYHB9G1yppiaRG72wvEmRaCpZOpruyXbsmINdAAiAHxqFCZJFkaTTcCYKxHz3Cqim0Bhm8mEgLrmG3aO2jiw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148703},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.50.0-41365.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.7","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.50.0-41365","@fluidframework/map":"0.50.0-41365","@fluidframework/cell":"0.50.0-41365","@fluidframework/matrix":"0.50.0-41365","@fluidframework/counter":"0.50.0-41365","@fluidframework/aqueduct":"0.50.0-41365","@fluidframework/sequence":"0.50.0-41365","@fluidframework/test-utils":"0.50.0-41365","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.50.0-41365","@fluidframework/test-drivers":"0.50.0-41365","@fluidframework/core-interfaces":"^0.39.7","@fluidframework/container-loader":"0.50.0-41365","@fluidframework/mocha-test-setup":"0.50.0-41365","@fluidframework/container-runtime":"0.50.0-41365","@fluidframework/driver-definitions":"^0.40.0","@fluidframework/ordered-collection":"0.50.0-41365","@fluidframework/register-collection":"0.50.0-41365","@fluidframework/runtime-definitions":"0.50.0-41365","@fluidframework/protocol-definitions":"^0.1025.0","@fluidframework/container-definitions":"^0.40.0","@fluidframework/datastore-definitions":"0.50.0-41365","@fluidframework/test-driver-definitions":"0.50.0-41365"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"0.50.0-41365","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.50.0-41365","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.50.0-41365","@fluidframework/build-common":"^0.23.0","@fluidframework/driver-utils":"^0.50.0","@fluidframework/local-driver":"0.50.0-41365","@fluidframework/runtime-utils":"0.50.0-41365","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.50.0-41365","@fluidframework/request-handler":"0.50.0-41365","@fluidframework/telemetry-utils":"0.50.0-41365","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.50.0-41365","@fluidframework/test-loader-utils":"0.50.0-41365","@fluidframework/test-runtime-utils":"0.50.0-41365","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.50.0-41365","@fluidframework/container-runtime-definitions":"0.50.0-41365"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.50.0-41365_1634835851438_0.6357765206718331","host":"s3://npm-registry-packages"}},"0.50.0-41540":{"name":"@fluidframework/test-version-utils","version":"0.50.0-41540","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.50.0-41540","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"672d70c22669af179af9a93946f1ea42c738384e","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.50.0-41540.tgz","fileCount":41,"integrity":"sha512-cPEXa3pEfhGwT7OYTmHWeD+UO2cM6cdRr6HzWebl8psxhHulJVk8rFymB9I/kT9UblX2ZyqRQeo+r/IxCfwdTQ==","signatures":[{"sig":"MEUCIQDEzIyHk4snxPBs+/rkZKzalLYQow3YM0a7rUu1R8UTggIgFZoxrhCAeIT1ms3PhsKf8FFNIArwJSBSnIHcJfe0Lt4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148709},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.50.0-41540.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.7","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.50.0-41540","@fluidframework/map":"0.50.0-41540","@fluidframework/cell":"0.50.0-41540","@fluidframework/matrix":"0.50.0-41540","@fluidframework/counter":"0.50.0-41540","@fluidframework/aqueduct":"0.50.0-41540","@fluidframework/sequence":"0.50.0-41540","@fluidframework/test-utils":"0.50.0-41540","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.50.0-41540","@fluidframework/test-drivers":"0.50.0-41540","@fluidframework/core-interfaces":"^0.40.0-0","@fluidframework/container-loader":"0.50.0-41540","@fluidframework/mocha-test-setup":"0.50.0-41540","@fluidframework/container-runtime":"0.50.0-41540","@fluidframework/driver-definitions":"^0.41.0-0","@fluidframework/ordered-collection":"0.50.0-41540","@fluidframework/register-collection":"0.50.0-41540","@fluidframework/runtime-definitions":"0.50.0-41540","@fluidframework/protocol-definitions":"^0.1025.0","@fluidframework/container-definitions":"^0.41.0-0","@fluidframework/datastore-definitions":"0.50.0-41540","@fluidframework/test-driver-definitions":"0.50.0-41540"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"0.50.0-41540","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"0.50.0-41540","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"0.50.0-41540","@fluidframework/build-common":"^0.23.0","@fluidframework/driver-utils":"^0.50.0","@fluidframework/local-driver":"0.50.0-41540","@fluidframework/runtime-utils":"0.50.0-41540","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"0.50.0-41540","@fluidframework/request-handler":"0.50.0-41540","@fluidframework/telemetry-utils":"0.50.0-41540","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"0.50.0-41540","@fluidframework/test-loader-utils":"0.50.0-41540","@fluidframework/test-runtime-utils":"0.50.0-41540","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"0.50.0-41540","@fluidframework/container-runtime-definitions":"0.50.0-41540"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.50.0-41540_1634918019341_0.9545978755716396","host":"s3://npm-registry-packages"}},"0.50.0":{"name":"@fluidframework/test-version-utils","version":"0.50.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.50.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"c41c41230fa138c62598dd6a4a3a0579366ec008","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.50.0.tgz","fileCount":41,"integrity":"sha512-FfnkCVeCJIEiWexLLY/NLJuA5VtaE8I3HdHCmZuAXEVjwLFxFATMk1OBqh/of2fMVU/cz3wEh8Uy95EH4fZ+VA==","signatures":[{"sig":"MEQCIHNCaw2xaqIL/8sDh8mVU7DKlpDCGwqerhFddVCpLvhQAiAzIyIcQ7AK0Q4qA9v3qnex6qSQHSCQFjVUdvVytAcAXQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148516},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.50.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.7","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.50.0","@fluidframework/map":"^0.50.0","@fluidframework/cell":"^0.50.0","@fluidframework/matrix":"^0.50.0","@fluidframework/counter":"^0.50.0","@fluidframework/aqueduct":"^0.50.0","@fluidframework/sequence":"^0.50.0","@fluidframework/test-utils":"^0.50.0","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.50.0","@fluidframework/test-drivers":"^0.50.0","@fluidframework/core-interfaces":"^0.40.0","@fluidframework/container-loader":"^0.50.0","@fluidframework/mocha-test-setup":"^0.50.0","@fluidframework/container-runtime":"^0.50.0","@fluidframework/driver-definitions":"^0.41.0","@fluidframework/ordered-collection":"^0.50.0","@fluidframework/register-collection":"^0.50.0","@fluidframework/runtime-definitions":"^0.50.0","@fluidframework/protocol-definitions":"^0.1025.0","@fluidframework/container-definitions":"^0.41.0","@fluidframework/datastore-definitions":"^0.50.0","@fluidframework/test-driver-definitions":"^0.50.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"^0.50.0","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.50.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.50.0","@fluidframework/build-common":"^0.23.0","@fluidframework/driver-utils":"^0.50.0","@fluidframework/local-driver":"^0.50.0","@fluidframework/runtime-utils":"^0.50.0","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.50.0","@fluidframework/request-handler":"^0.50.0","@fluidframework/telemetry-utils":"^0.50.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.50.0","@fluidframework/test-loader-utils":"^0.50.0","@fluidframework/test-runtime-utils":"^0.50.0","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.50.0","@fluidframework/container-runtime-definitions":"^0.50.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.50.0_1635180804358_0.3441859252370487","host":"s3://npm-registry-packages"}},"0.50.1":{"name":"@fluidframework/test-version-utils","version":"0.50.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.50.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"210d3fd21d5d40a0fb2dce4a51a6e9905a72885d","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.50.1.tgz","fileCount":41,"integrity":"sha512-S94Z7GCirmH5OfYaT/FKaVD0/zLqIEpby/l0+DgiTBt53FnkJSJ2X/We4Xbh6pYaBOxYWajq17ax+1jFXagxPw==","signatures":[{"sig":"MEUCIQDeVxGt3afsSBnBgjixSb8pr07bsu4E+J5Nbj9g6+FjvgIga6K5F7bBq1u6w9h18AgWjSfpKx/Kx+dN0Cq0dPSHMK4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148516},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.50.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.7","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.50.1","@fluidframework/map":"^0.50.1","@fluidframework/cell":"^0.50.1","@fluidframework/matrix":"^0.50.1","@fluidframework/counter":"^0.50.1","@fluidframework/aqueduct":"^0.50.1","@fluidframework/sequence":"^0.50.1","@fluidframework/test-utils":"^0.50.1","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.50.1","@fluidframework/test-drivers":"^0.50.1","@fluidframework/core-interfaces":"^0.40.0","@fluidframework/container-loader":"^0.50.1","@fluidframework/mocha-test-setup":"^0.50.1","@fluidframework/container-runtime":"^0.50.1","@fluidframework/driver-definitions":"^0.41.0","@fluidframework/ordered-collection":"^0.50.1","@fluidframework/register-collection":"^0.50.1","@fluidframework/runtime-definitions":"^0.50.1","@fluidframework/protocol-definitions":"^0.1025.0","@fluidframework/container-definitions":"^0.41.0","@fluidframework/datastore-definitions":"^0.50.1","@fluidframework/test-driver-definitions":"^0.50.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"^0.50.1","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.50.1","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.50.1","@fluidframework/build-common":"^0.23.0","@fluidframework/driver-utils":"^0.50.1","@fluidframework/local-driver":"^0.50.1","@fluidframework/runtime-utils":"^0.50.1","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.50.1","@fluidframework/request-handler":"^0.50.1","@fluidframework/telemetry-utils":"^0.50.1","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.50.1","@fluidframework/test-loader-utils":"^0.50.1","@fluidframework/test-runtime-utils":"^0.50.1","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.50.1","@fluidframework/container-runtime-definitions":"^0.50.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.50.1_1635375433463_0.8540482712141508","host":"s3://npm-registry-packages"}},"0.51.0-43124":{"name":"@fluidframework/test-version-utils","version":"0.51.0-43124","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.51.0-43124","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"5e3f3c2d73f667bf4ff7276f79fb2545c482b93a","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.51.0-43124.tgz","fileCount":41,"integrity":"sha512-rIhrfJp1KMbHvYZI6qPtWLqvA4XuzfgRBwEFnLQwL9p1+owdWJ5oQWGvbNiTabVp5BNUIQGQ9fZWSMWSoi1TDQ==","signatures":[{"sig":"MEUCIQCWMTrwvbu/FUTYPJT2lAgv+zaxdUEGvGHw54J1OvwTXgIgJNpAXsga5i5cJaawIcN52m/fubNfu53GLI0Pc1CzPMY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147935},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.51.0-43124.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.7","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.51.0-43124","@fluidframework/map":"0.51.0-43124","@fluidframework/cell":"0.51.0-43124","@fluidframework/matrix":"0.51.0-43124","@fluidframework/counter":"0.51.0-43124","@fluidframework/aqueduct":"0.51.0-43124","@fluidframework/sequence":"0.51.0-43124","@fluidframework/test-utils":"0.51.0-43124","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.51.0-43124","@fluidframework/test-drivers":"0.51.0-43124","@fluidframework/core-interfaces":"^0.40.0","@fluidframework/container-loader":"0.51.0-43124","@fluidframework/mocha-test-setup":"0.51.0-43124","@fluidframework/container-runtime":"0.51.0-43124","@fluidframework/driver-definitions":"^0.41.0","@fluidframework/ordered-collection":"0.51.0-43124","@fluidframework/register-collection":"0.51.0-43124","@fluidframework/runtime-definitions":"0.51.0-43124","@fluidframework/protocol-definitions":"^0.1025.0","@fluidframework/container-definitions":"^0.41.0","@fluidframework/datastore-definitions":"0.51.0-43124","@fluidframework/test-driver-definitions":"0.51.0-43124"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@typescript-eslint/parser":"~4.14.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/eslint-config-fluid":"^0.24.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.51.0-43124_1636158525846_0.04441406600678599","host":"s3://npm-registry-packages"}},"0.51.0":{"name":"@fluidframework/test-version-utils","version":"0.51.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.51.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"a33ddd8b9cbc0634f89e94e5ec8aa5fc402e1031","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.51.0.tgz","fileCount":41,"integrity":"sha512-t6phE+orvJWdFd+VEgBt3kOUVVE/dsCHjipkz/8FyB9Ahh+2cWx+UqvPJfDzZQaHFhRVsIj/1n7fWnD0JmsoFQ==","signatures":[{"sig":"MEUCIQD3Z83ADklaNAn120af/xriozl7tNVwpJ53ux7I/2OG/gIgLDbKDNQb4WOdvLSc3oxa701xPqHo9zyZ9S9kVfeC3cQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147813},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.51.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.7","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.51.0","@fluidframework/map":"^0.51.0","@fluidframework/cell":"^0.51.0","@fluidframework/matrix":"^0.51.0","@fluidframework/counter":"^0.51.0","@fluidframework/aqueduct":"^0.51.0","@fluidframework/sequence":"^0.51.0","@fluidframework/test-utils":"^0.51.0","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.51.0","@fluidframework/test-drivers":"^0.51.0","@fluidframework/core-interfaces":"^0.40.0","@fluidframework/container-loader":"^0.51.0","@fluidframework/mocha-test-setup":"^0.51.0","@fluidframework/container-runtime":"^0.51.0","@fluidframework/driver-definitions":"^0.41.0","@fluidframework/ordered-collection":"^0.51.0","@fluidframework/register-collection":"^0.51.0","@fluidframework/runtime-definitions":"^0.51.0","@fluidframework/protocol-definitions":"^0.1025.0","@fluidframework/container-definitions":"^0.41.0","@fluidframework/datastore-definitions":"^0.51.0","@fluidframework/test-driver-definitions":"^0.51.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@typescript-eslint/parser":"~4.14.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/eslint-config-fluid":"^0.24.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.51.0_1636582957368_0.025798690731717366","host":"s3://npm-registry-packages"}},"0.50.2":{"name":"@fluidframework/test-version-utils","version":"0.50.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.50.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"698af3d76e86c7d07a7117b102714fb7eac16607","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.50.2.tgz","fileCount":41,"integrity":"sha512-GCKLHFw3/LxriziSjJyFZJg8J5/YvN8wHgetAakVHJf2xMkv1dgM0c3Cuw/Vr0niBPzwo345T8E6TQnTIpyPIg==","signatures":[{"sig":"MEUCIAZ1J8E20jF9MwpNA2iWwI/lVv0ZhEE1LghZ4lunu7a7AiEA2qduADgesVJR99iSuFGhxRtR5r56/7Ui/B87zSiwW4E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148516},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.50.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.7","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.50.2","@fluidframework/map":"^0.50.2","@fluidframework/cell":"^0.50.2","@fluidframework/matrix":"^0.50.2","@fluidframework/counter":"^0.50.2","@fluidframework/aqueduct":"^0.50.2","@fluidframework/sequence":"^0.50.2","@fluidframework/test-utils":"^0.50.2","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.50.2","@fluidframework/test-drivers":"^0.50.2","@fluidframework/core-interfaces":"^0.40.0","@fluidframework/container-loader":"^0.50.2","@fluidframework/mocha-test-setup":"^0.50.2","@fluidframework/container-runtime":"^0.50.2","@fluidframework/driver-definitions":"^0.41.0","@fluidframework/ordered-collection":"^0.50.2","@fluidframework/register-collection":"^0.50.2","@fluidframework/runtime-definitions":"^0.50.2","@fluidframework/protocol-definitions":"^0.1025.0","@fluidframework/container-definitions":"^0.41.0","@fluidframework/datastore-definitions":"^0.50.2","@fluidframework/test-driver-definitions":"^0.50.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"^0.50.2","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.50.2","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.50.2","@fluidframework/build-common":"^0.23.0","@fluidframework/driver-utils":"^0.50.1","@fluidframework/local-driver":"^0.50.2","@fluidframework/runtime-utils":"^0.50.2","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.50.2","@fluidframework/request-handler":"^0.50.2","@fluidframework/telemetry-utils":"^0.50.2","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.50.2","@fluidframework/test-loader-utils":"^0.50.2","@fluidframework/test-runtime-utils":"^0.50.2","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.50.2","@fluidframework/container-runtime-definitions":"^0.50.2"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.50.2_1636751716314_0.8940778280771853","host":"s3://npm-registry-packages"}},"0.51.1":{"name":"@fluidframework/test-version-utils","version":"0.51.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.51.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"5ea1e5ee4c032614044c91c80816546e7d826c18","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.51.1.tgz","fileCount":41,"integrity":"sha512-7dQctpVOkjRueRhyD3Lb02dtHhAfQlvyhMigT7o4UqUsHmyXYrGeo5i9+oSnU9VRpfKIKa3qXYqwHGBszS3gDw==","signatures":[{"sig":"MEYCIQDw/PHaqCm/Wm4meNHttIeoOyJa8l+v6pQHhTeZUH1sQQIhAOtCM5CAMWBxqG6siYJxZu5JFDPyeNE4cQLMfkGzs9Xw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147813},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.51.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.7","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.51.1","@fluidframework/map":"^0.51.1","@fluidframework/cell":"^0.51.1","@fluidframework/matrix":"^0.51.1","@fluidframework/counter":"^0.51.1","@fluidframework/aqueduct":"^0.51.1","@fluidframework/sequence":"^0.51.1","@fluidframework/test-utils":"^0.51.1","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.51.1","@fluidframework/test-drivers":"^0.51.1","@fluidframework/core-interfaces":"^0.40.0","@fluidframework/container-loader":"^0.51.1","@fluidframework/mocha-test-setup":"^0.51.1","@fluidframework/container-runtime":"^0.51.1","@fluidframework/driver-definitions":"^0.41.0","@fluidframework/ordered-collection":"^0.51.1","@fluidframework/register-collection":"^0.51.1","@fluidframework/runtime-definitions":"^0.51.1","@fluidframework/protocol-definitions":"^0.1025.0","@fluidframework/container-definitions":"^0.41.0","@fluidframework/datastore-definitions":"^0.51.1","@fluidframework/test-driver-definitions":"^0.51.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@typescript-eslint/parser":"~4.14.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/eslint-config-fluid":"^0.24.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.51.1_1636754650563_0.6434919534137256","host":"s3://npm-registry-packages"}},"0.50.3":{"name":"@fluidframework/test-version-utils","version":"0.50.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.50.3","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"6acf93aa320da9e95b1175b054438d1cf3299ac3","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.50.3.tgz","fileCount":41,"integrity":"sha512-WkSPldLpIw/oyYbEAdntwIhIuyQu0VxcWsGyEKTXmrCfjbYVgadMGecR+TbxFnFoh0iM/E3RkyirIo8JsElvgQ==","signatures":[{"sig":"MEUCIQC3pkh3IiM3xThWcBuhXyuuGj8ITLU4ntOR1aJdW4OHKAIgIgxZ5ab0AboxOdk4LPslRCL9ZPVFARhAZUzmxsqfowQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148469,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlsziCRA9TVsSAnZWagAAtEIQAJJWoLvh7RQ6VJdzFQtX\ny9P7Wgp9p0L4pySYv3JiB3XlBwQPqz8YKUCcUyVIAU58pCpCzM5g4KUmxVm3\n5R2JdIixQIF4FME0vM4mEvP8f95qI4TB1DM285NSvX+fdUZ2UWmP3OCXkGV+\n4eG6IjN/KhGVrFsGgc4R6xrmFPYGLWSc689AWJcFfdxMAhqJYtE1sC1qneNl\n4G7j3fj7HAcOAHcN30rkHEJvEfCzYqdYZSicMTSRHPt+qPm1PUOUmRr2z/OF\nQOLeQZr4s9SevKIqcp45Zr48/3Ao39q7g5TS5YaZZkBdywHXBXdpPNOYoYvK\ny1th4AIptdCBqHO7YyrnRC6oNygzXJEiGrYLLztPzBtUah4kaQHxvdliyo1l\ndg8CGsd/clilXMNWswPg9AVm4yi+MZLPePJ1FekuklGRRfWeDw5QZagr802u\nhCq5biZkiTGVoWvAS0Y7WE8UKz9jE2tcoW6YN9svSs9AIm8hShuqiyLCZmMb\nRSkFQOJ7JTn6apxCZau+razYc7iQCsCgdOE2z7I8pACCjqgD0aPGnZW3vpkE\ntHERVADOHFobFirALwP98rOUvLV1mwskie9LvBEa3MGG2ro77DwANabZK1uQ\naEVUJJyLo9ew15vH3dLME0zkk7tooc2wpmOZUcimK0WmJ4Ke6uk9zIJKVOHc\ntZwL\r\n=geXL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.50.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.7","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.50.3","@fluidframework/map":"^0.50.3","@fluidframework/cell":"^0.50.3","@fluidframework/matrix":"^0.50.3","@fluidframework/counter":"^0.50.3","@fluidframework/aqueduct":"^0.50.3","@fluidframework/sequence":"^0.50.3","@fluidframework/test-utils":"^0.50.3","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.50.3","@fluidframework/test-drivers":"^0.50.3","@fluidframework/core-interfaces":"^0.40.0","@fluidframework/container-loader":"^0.50.3","@fluidframework/mocha-test-setup":"^0.50.3","@fluidframework/container-runtime":"^0.50.3","@fluidframework/driver-definitions":"^0.41.0","@fluidframework/ordered-collection":"^0.50.3","@fluidframework/register-collection":"^0.50.3","@fluidframework/runtime-definitions":"^0.50.3","@fluidframework/protocol-definitions":"^0.1025.0","@fluidframework/container-definitions":"^0.41.0","@fluidframework/datastore-definitions":"^0.50.3","@fluidframework/test-driver-definitions":"^0.50.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"^0.50.3","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.50.3","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.50.3","@fluidframework/build-common":"^0.23.0","@fluidframework/local-driver":"^0.50.3","@fluidframework/runtime-utils":"^0.50.3","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.50.3","@fluidframework/request-handler":"^0.50.3","@fluidframework/telemetry-utils":"^0.50.3","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.50.3","@fluidframework/test-loader-utils":"^0.50.3","@fluidframework/test-runtime-utils":"^0.50.3","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.50.3","@fluidframework/container-runtime-definitions":"^0.50.3"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.50.3_1637272801643_0.38126209914304265","host":"s3://npm-registry-packages"}},"0.51.2":{"name":"@fluidframework/test-version-utils","version":"0.51.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.51.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"7b67b67065238957f98fdf320117a16e67a1a8d3","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.51.2.tgz","fileCount":41,"integrity":"sha512-auAjBKGNT7zy6wONnrSlqmhlOsKAoqQXDLsZuJ9D5hmCmYYgNSmgSF0WJCSNMXT7QFhegJeSOCNjueVQ2goeHw==","signatures":[{"sig":"MEUCIQCSkW63q0dSdTCKy5VAe4udWk+q0JGodJagZJtCZIjAXAIgapDrIVKHRJlbEGuRbd4uz2YMvQeHq1vUtf7tmcs37qY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147813,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhltjlCRA9TVsSAnZWagAAi38P/AldwiD2PY7IogxEE30k\n7Buv0B1leQLL32ermZG+tgKmkHU0lLStH7alds7e3tcDqkfUo3Ox+a7QCwEe\nUdb3C9y2QebnZ45tA/JGhakb5zXnWW0abDyYaKC+Gfwqzm+K1ortxgvPgGuX\nrQTmpaWkCQS6Rpg0nxV4IUo/2+mJamhc72OoHlCK7UJpI4YGWV3ChFrFSE/E\njb3qi3pdjRe5ei5JrEbijx1OM5csczmjs4DotPkqe4BUfr/kGD/UvW1YP8Cr\n0cWJutk3BctzkHSvTu8RPa7c9W3NfzmhL+qr/An47ntQUq4VQa6/NoB6QsHY\n/2gQlmxrVoJidIE5B4442B1F/yTrPd9/gj7+UpW7+JlNqztms9NyeBR8yJ6o\nv4L0vy+mwNnkMMSdfLq7vN/V6OggEq3lfL80M3OsB+Rh87/uZSffqSLqJzRm\nula1pwxIWgoj2uuJVaiIUaO6EJxkRiMQ+7zm8HutIZkRs233lBxtekzX0uxv\nGs0/MmRfw/VlPDwfgQuvITVFUumk2XZtK7jbnD6zHpP0WsQimIhoyWuV7MS7\nqgJWhVkrwiRKekih93M0hrDfgZ48JaF1YTbne0gmO1HCDeI1WXp7ZlFTF6u8\nsHS/xhNc2tALbYJ+CwPwS2DqHfLsig8n+Y3/cwzNOZUUOF2144uarduw8g4y\niz+o\r\n=8E7d\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.51.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.7","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.51.2","@fluidframework/map":"^0.51.2","@fluidframework/cell":"^0.51.2","@fluidframework/matrix":"^0.51.2","@fluidframework/counter":"^0.51.2","@fluidframework/aqueduct":"^0.51.2","@fluidframework/sequence":"^0.51.2","@fluidframework/test-utils":"^0.51.2","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.51.2","@fluidframework/test-drivers":"^0.51.2","@fluidframework/core-interfaces":"^0.40.0","@fluidframework/container-loader":"^0.51.2","@fluidframework/mocha-test-setup":"^0.51.2","@fluidframework/container-runtime":"^0.51.2","@fluidframework/driver-definitions":"^0.41.0","@fluidframework/ordered-collection":"^0.51.2","@fluidframework/register-collection":"^0.51.2","@fluidframework/runtime-definitions":"^0.51.2","@fluidframework/protocol-definitions":"^0.1025.0","@fluidframework/container-definitions":"^0.41.0","@fluidframework/datastore-definitions":"^0.51.2","@fluidframework/test-driver-definitions":"^0.51.2"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@typescript-eslint/parser":"~4.14.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/eslint-config-fluid":"^0.24.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.51.2_1637275876924_0.6385446678925677","host":"s3://npm-registry-packages"}},"0.52.0-44610":{"name":"@fluidframework/test-version-utils","version":"0.52.0-44610","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.52.0-44610","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"b6f2f7c1a726ef354608cba7bcc4d670ecc90c9e","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.52.0-44610.tgz","fileCount":41,"integrity":"sha512-6C/FutZWILG29G7pnIxDOkjECYb6PulKAyND/UNeWhzBL+rMM3Zi873jTz3nkfx4LlFEMxHnXcfrocMNy2sGNQ==","signatures":[{"sig":"MEYCIQCR7ultaxQmi8yP+XjijupLXOOBKBrszHhC/DCGU1I3rwIhAMtZBiEVFXBPnz3MePLTT3UYieA6qMHcHuL34f1ITZ97","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147943,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmC1cCRA9TVsSAnZWagAAPZgQAKIn2Lmn5AIGXPKA5s+l\nkzp17Xq4C4Hquuz47JzpmcjqKJLlFXbTEuFmKY+Ke2WJKBxQLIiFnbql7x4l\nnPe2W1+oTB/T1CCvrV3gTZVYNhCL/cO5HX3M8bHjOBlCStquXw8iD2lgRQ/x\nap+60E2KkmWRM5cCGgIGEscPe3VpqnXyVL2VnAVS8DcY6nkpKC3obGlSctsi\nko323qNWJnGI1guOgBesmeHiUYERn41Fkj3eCcaR65/FAa5S4JELJRpRQI4q\n+Oz/lcRkr7ADCPoOqxj64+Sx8mo8IZkhIwsr3iN6hm456QqtsvG3gTgMiHnd\njpOm337teZiIoK+pt+QM3dyleXL98oIyl1f2ERX1bn/M+YNaabVBIOJ9HuRu\nOoQrxWR+RRa7QXJBgK5qHkzjZrn3BapXqumSi3qwl3rEGdLvQyZAxxGOQWIz\nisNIO+2oJRAwnN1LO+6dD+ELBXgV03A7AUM3FOc0iI9Sevs1USyef//nkt9A\nnixSdjCV2iLoZsjvzn2AP928K4rwrhQd2uVsVSoHkwOVdF4iG6q0wiBTwqwt\nNb4iufKHFFw3CuFf6cwnnsrbI/rPpNFN3ssgWmFu8EWu15xVZTQNWMqJ7DDD\nsMPEBGwpFJ0Z4qS2xpxWSNtj36AgUOR2EEVMvKEyEKg4KQzXBS0cIkI7eEHh\n7sXP\r\n=Iw6S\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.52.0-44610.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.7","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.52.0-44610","@fluidframework/map":"0.52.0-44610","@fluidframework/cell":"0.52.0-44610","@fluidframework/matrix":"0.52.0-44610","@fluidframework/counter":"0.52.0-44610","@fluidframework/aqueduct":"0.52.0-44610","@fluidframework/sequence":"0.52.0-44610","@fluidframework/test-utils":"0.52.0-44610","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.52.0-44610","@fluidframework/test-drivers":"0.52.0-44610","@fluidframework/core-interfaces":"^0.41.0-0","@fluidframework/container-loader":"0.52.0-44610","@fluidframework/mocha-test-setup":"0.52.0-44610","@fluidframework/container-runtime":"0.52.0-44610","@fluidframework/driver-definitions":"^0.42.0-0","@fluidframework/ordered-collection":"0.52.0-44610","@fluidframework/register-collection":"0.52.0-44610","@fluidframework/runtime-definitions":"0.52.0-44610","@fluidframework/protocol-definitions":"^0.1026.0-0","@fluidframework/container-definitions":"^0.42.0-0","@fluidframework/datastore-definitions":"0.52.0-44610","@fluidframework/test-driver-definitions":"0.52.0-44610"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@typescript-eslint/parser":"~4.14.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/eslint-config-fluid":"^0.24.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.52.0-44610_1637363036074_0.4617967375745786","host":"s3://npm-registry-packages"}},"0.52.0":{"name":"@fluidframework/test-version-utils","version":"0.52.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.52.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"63cebe4249b0074f6459c5b307f1e32d7cd1bfae","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.52.0.tgz","fileCount":41,"integrity":"sha512-8KLfr8SAsd25f9n7y2VFync/TvBCtx2Mcqr9Be4IDlthohiLL/+TdtAyYm9OnlxvLp6+WvCdNktvgD/aQk4lKQ==","signatures":[{"sig":"MEUCIQD60foxE3Y0JcAqrlRLIxrU/ifRg0U8AEo8f5dSeLQn/AIgQilcP6cwNEZXzKyiyeBr0O/xbx18tYtZujUiGkaqDrk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147813,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnBhECRA9TVsSAnZWagAAvpoQAJYDD9lPKpPEHOpMWuA6\n/jv2oPycsj2vQJiQ8WBFJwhaB6omQqjLePOl75TLqAse+M1Eyp+K6964pqnM\nKnlCsP0NzBhVQFAV5Twy/3fkRPErDGbs8LXdx4/oVBZKSL3Srq0itf1IXxrS\nvXAZuNq4BZok6otNzhTP2Ud3NDv4WgUJ0rIDgxJeQgFjlxNetVp1MGU23X8/\n9FczMv4dnWijSisVqSxE6vw/y7AimlteRgCYsWOmvPvSx5HGs7ODdwrvyB7x\nzO7VK4Rh4NBT0W8/tJS5xXyCwMPPCW77ZY/76znJewmkGUFSvMg4/qDYTdnV\nxpYgWjY4a21ynkk2c1PHXfNFVVF1sByN7RAOd7IyXkUVtvUn9HpNbphS6ZuT\nGpvF9uurRaN+C6CA3QnLR9CrfyDB4qt3y5TxqNfP4DSJ4r7/I3gZiGrkghEG\nlNri04U8nAw6jFw8i8Ds+jrmHrfzAKFsu7H1sH/7UIVfEouY4YcNLLuKodze\njsSF/NxGSHY95+lYUflCVw7R6o5jM1XUNkpo0HntF79QZof5rub9PlnVHliF\nU9bk7lY8Yeqloa9EBlJWkdOEzDGuL8FiYpTIein1D2PUuy0T4gg/NrmlN0Gj\nsDtdqjbNd/ZjEWVnn5jjo0WASxsiGGxcfdQeIHz/ygoKZrUZW/YLxkVIjox6\nQDQy\r\n=t2bE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.52.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.7","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.52.0","@fluidframework/map":"^0.52.0","@fluidframework/cell":"^0.52.0","@fluidframework/matrix":"^0.52.0","@fluidframework/counter":"^0.52.0","@fluidframework/aqueduct":"^0.52.0","@fluidframework/sequence":"^0.52.0","@fluidframework/test-utils":"^0.52.0","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.52.0","@fluidframework/test-drivers":"^0.52.0","@fluidframework/core-interfaces":"^0.41.0","@fluidframework/container-loader":"^0.52.0","@fluidframework/mocha-test-setup":"^0.52.0","@fluidframework/container-runtime":"^0.52.0","@fluidframework/driver-definitions":"^0.42.0","@fluidframework/ordered-collection":"^0.52.0","@fluidframework/register-collection":"^0.52.0","@fluidframework/runtime-definitions":"^0.52.0","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.42.0","@fluidframework/datastore-definitions":"^0.52.0","@fluidframework/test-driver-definitions":"^0.52.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@typescript-eslint/parser":"~4.14.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/eslint-config-fluid":"^0.24.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.52.0_1637619780263_0.6069405281193101","host":"s3://npm-registry-packages"}},"0.51.3":{"name":"@fluidframework/test-version-utils","version":"0.51.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.51.3","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"251ea125923a8aca1f1846aa1d658fec57ed79a5","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.51.3.tgz","fileCount":41,"integrity":"sha512-zo14YsmDlHe/sQRKSK5g27ENal3Z0kOm0gNEsYZBj/fI1y0vKvsYZ3mwjgzt/csvbeSUnPSmhJ+ZebcYymxWcw==","signatures":[{"sig":"MEYCIQDwodkmlqcNfjacMg52MWrIa2HbB4W0G5ITnQpecTdP5AIhAPJaYjSgRVGWWBQTEqTcbI8mIKDJclafC2VVDRpdHueL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147813,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnU/vCRA9TVsSAnZWagAAMscP/iUUIHLM1umfAXUlbMAC\n3B2hBeRo/2GfShAYn1l9SrypwdXzQcxawPZgT1eKSCrxwGJzvHRa1xROJPPy\nCYKlAVKcdvqa0NL9Wc+jP8ZW55cH2ALftYwOKvvCKFhAGLnSLUT0/GI19+uG\n0RHRZpIKmx83Dpu6XkoWO+EkIRaJeIbdVEOUXCkhgTWQYsNBsEom0iQhTmaJ\n/OnjrzF742HNWLOVAyBlQmCimO2f7P2JJlSd4wp67428xu6A8b8oH8BqfWEE\nmuiVshox7NqCLboB8uJ04WJ1TexCmWx8XSewkIx3wq9V8dgnp44PAqh/Q1ra\nE0iKU77AY55PVrhzwGxyH9srwPWbzRYxY3zXzswLj3Acrl7ygSd0/rcmuOh3\nBoZ4ewo4kkLF8tBhOQB568liDvemXHRnKRQ2Lkhn4DPZc1kenSecztXwZwEs\nXf+dMDl4qVOrkB4nYdN4ba2zZu+oivErvXxHt5Y5DHNBh9M46D7OaYV7YcEM\nruOIV8fxNjZZu/+RbMdrOv4zn9kwcjTg/QmqUHTY/ytb460pv/SqxagK4b2L\n9akVtA4lqnMs4VrR0uYcnVRlOeAoiBWlpRSMFbSVGQhLUV14Nfj8vEC0m5Vk\n6ujdd4w2gb1qiwXfbipGQJq88MUku2v8RFVO6ZirIPrLSna3uhtqFimu+Z7z\nCyTm\r\n=67/H\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.51.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.7","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.51.3","@fluidframework/map":"^0.51.3","@fluidframework/cell":"^0.51.3","@fluidframework/matrix":"^0.51.3","@fluidframework/counter":"^0.51.3","@fluidframework/aqueduct":"^0.51.3","@fluidframework/sequence":"^0.51.3","@fluidframework/test-utils":"^0.51.3","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.51.3","@fluidframework/test-drivers":"^0.51.3","@fluidframework/core-interfaces":"^0.40.0","@fluidframework/container-loader":"^0.51.3","@fluidframework/mocha-test-setup":"^0.51.3","@fluidframework/container-runtime":"^0.51.3","@fluidframework/driver-definitions":"^0.41.0","@fluidframework/ordered-collection":"^0.51.3","@fluidframework/register-collection":"^0.51.3","@fluidframework/runtime-definitions":"^0.51.3","@fluidframework/protocol-definitions":"^0.1025.0","@fluidframework/container-definitions":"^0.41.0","@fluidframework/datastore-definitions":"^0.51.3","@fluidframework/test-driver-definitions":"^0.51.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@typescript-eslint/parser":"~4.14.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/eslint-config-fluid":"^0.24.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.51.3_1637699567619_0.5556137483795742","host":"s3://npm-registry-packages"}},"0.52.1":{"name":"@fluidframework/test-version-utils","version":"0.52.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.52.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"d569ad974fa34a18b9fdfd92c6e4beb451073a1a","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.52.1.tgz","fileCount":41,"integrity":"sha512-CcicnYkCjn1Cpmi4eUWP2Q7wHKqQhdkkWJGt+4qwAzKLTFzcxekXj6tmCQ/pYyoZHdBYHn9vG0XWdpD8yniOqw==","signatures":[{"sig":"MEUCIGXYfJaMgBDWm8MyCqjSuf+1Ed1j3UsPEWq76R5TuWo9AiEAmNXQabAq2Z01WIGhydbAuT0W/xVob5LVH7ALLGqZ1w4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147813,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnWJYCRA9TVsSAnZWagAAjSsQAJ6s0IKgQzRw553TlHqt\nhTJMxmXjG+42HLV2aly5sA4w3agC+gle0ZEz1/QoGY8ZsXqTBA5x8WZbbUB3\nSyTXp0Fc/xhzQa31h/ZsOa8YbPqWKApHygDLZLJs5eGKY5keiCVw9rwPmRW9\nyxBnzBC4WWWKiPuXP3J76NhfKpkNLwxCOFAl6rHtPs9Mjqm+sMLO7xNGtNfl\nz/JMhgFm9TpypIK5GvXPsWzA0P7j3mClzGf4KRu1DK8R2FfEZBGg4DBKpuun\nxXrYKQf5D/XovRB2R0apW7HRLvOs3N0nxC6Nx53QjWjUWs38CvGF7bBHh2JP\nZojPzXmXY/v+mXGlxUz+cQceRLeKf+beH6cx6/Ln/GAAasG+H9oRQyNWq51e\nWJxIRm07Kzu2CqMXYfgUMHHPlSU8h4onLC7d5nmXzF4irqiWByhk3G+a8a3d\n7ucm5nVQGArDTtAHk9zEJ34iUYTJ1/K/cGWeOG1XKq89U5S3/CtcLtkiuUV/\nGgyIu7vSJ+JkqQ99wjOgXeLM5ifVFmUTCNoL2SDCGwG2Tpry1PGlbzjluBra\nUZgZRVa2yjbKbPubSJGhv9yicMN/pO1J9VwV2m8lvZsWoeVz5c0RPpCvj0sH\nbgBQObVTtCo8LUBZx5vn0dxLsU7DmYn3qi01F42bjwXStyq29xgAXi93nFjW\niC/H\r\n=UI/A\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.52.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.7","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.52.1","@fluidframework/map":"^0.52.1","@fluidframework/cell":"^0.52.1","@fluidframework/matrix":"^0.52.1","@fluidframework/counter":"^0.52.1","@fluidframework/aqueduct":"^0.52.1","@fluidframework/sequence":"^0.52.1","@fluidframework/test-utils":"^0.52.1","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.52.1","@fluidframework/test-drivers":"^0.52.1","@fluidframework/core-interfaces":"^0.41.0","@fluidframework/container-loader":"^0.52.1","@fluidframework/mocha-test-setup":"^0.52.1","@fluidframework/container-runtime":"^0.52.1","@fluidframework/driver-definitions":"^0.42.0","@fluidframework/ordered-collection":"^0.52.1","@fluidframework/register-collection":"^0.52.1","@fluidframework/runtime-definitions":"^0.52.1","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.42.0","@fluidframework/datastore-definitions":"^0.52.1","@fluidframework/test-driver-definitions":"^0.52.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@typescript-eslint/parser":"~4.14.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/eslint-config-fluid":"^0.24.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.52.1_1637704280046_0.05130136848981892","host":"s3://npm-registry-packages"}},"0.50.4":{"name":"@fluidframework/test-version-utils","version":"0.50.4","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.50.4","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"9be295a6bb635233822c9ab7e873c30433d71971","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.50.4.tgz","fileCount":41,"integrity":"sha512-/y9H2TKdnz1qE7RcMK5+YZC69UFpNbAdnrm5uBlMn5xJ3yFmAxAVk2WKfEHcYvAPmTcMsN252QU0hL3yyKiyqA==","signatures":[{"sig":"MEUCIByS1cV6M8USFGnhevwPoBbxUp08a/MAxSyj8SPf3BhzAiEA3fNZIhAEAqJl8G+UGdaAJgmxft2NBGfVSJS3yracaTc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148469,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnYTJCRA9TVsSAnZWagAAwXcP/2rJPG9SqFmBtcAAAoEy\nx516E+lOTXZwydkJgTAkg9IVZsxT6LYS7cQEdvoOXh5kHd8NY+Agn7npKnGW\n1faqIW6pvcD0u0yyqUePme0CG4kHrqawZUC0YJRLBcwV4UGyxTYOd2f9jlc6\n9gCDUh+bbMv4iLlYNjC5buRP2neNUBpLTZvFXYhho3a7Sbsrs76eYWR2hUZ5\noc2Pogt8RQeiXiM/txcpHPgcWYB9SSEksnPuyxqz6FXJ9pf+MD3hNyY/ZZvh\nARe+zUTEBiVK0Kwvm2D6pyvhuZquYOCA9azIvFwYef65IliS5IhnT77SaFZf\nIpNOTUhLqG4Z8fXHHgRt8bUfmbsck3neYF61bdpuFkRmIaTRPaSe8ze0y1c8\n5rIDJniMCZmh/AFMlNFYcBzXNHoF7kcFRbsCTSznLDFxeCssxdIAR7ZQx5Jg\nsOl0T1OSRtizFylOOh2s4rXG/AbprZnQUYGfA5IO8R3/MnSUlHH+meRkUhoI\npZzda//P6bVhu96TviWhQed71J5Cmp+qJGJHdRD2Mq0BD2Ef4sTWR3iPYzSV\nz/nXdmFu1DegMdxppg5uTQzuvVPp4VwNoUs96N5AhK/F0ojdU3yyW2FXBuHO\n+3TDr3GfhlKCBZU68gEE7MiJFPEZvQbw6gxtbQwPSjESPD1cpxprskDU9NKj\nvG+i\r\n=mHhJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.50.4.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.7","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.50.4","@fluidframework/map":"^0.50.4","@fluidframework/cell":"^0.50.4","@fluidframework/matrix":"^0.50.4","@fluidframework/counter":"^0.50.4","@fluidframework/aqueduct":"^0.50.4","@fluidframework/sequence":"^0.50.4","@fluidframework/test-utils":"^0.50.4","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.50.4","@fluidframework/test-drivers":"^0.50.4","@fluidframework/core-interfaces":"^0.40.0","@fluidframework/container-loader":"^0.50.4","@fluidframework/mocha-test-setup":"^0.50.4","@fluidframework/container-runtime":"^0.50.4","@fluidframework/driver-definitions":"^0.41.0","@fluidframework/ordered-collection":"^0.50.4","@fluidframework/register-collection":"^0.50.4","@fluidframework/runtime-definitions":"^0.50.4","@fluidframework/protocol-definitions":"^0.1025.0","@fluidframework/container-definitions":"^0.41.0","@fluidframework/datastore-definitions":"^0.50.4","@fluidframework/test-driver-definitions":"^0.50.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^5.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@fluidframework/datastore":"^0.50.4","@typescript-eslint/parser":"~4.14.0","@fluidframework/merge-tree":"^0.50.4","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/driver-base":"^0.50.4","@fluidframework/build-common":"^0.23.0","@fluidframework/local-driver":"^0.50.4","@fluidframework/runtime-utils":"^0.50.4","eslint-plugin-eslint-comments":"~3.2.0","@fluidframework/container-utils":"^0.50.4","@fluidframework/request-handler":"^0.50.4","@fluidframework/telemetry-utils":"^0.50.4","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/odsp-doclib-utils":"^0.50.4","@fluidframework/test-loader-utils":"^0.50.4","@fluidframework/test-runtime-utils":"^0.50.4","@fluidframework/eslint-config-fluid":"^0.23.0","@fluidframework/routerlicious-driver":"^0.50.4","@fluidframework/container-runtime-definitions":"^0.50.4"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.50.4_1637713097604_0.7087063572790773","host":"s3://npm-registry-packages"}},"0.53.0-46105":{"name":"@fluidframework/test-version-utils","version":"0.53.0-46105","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.53.0-46105","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"e258f526ab0f90a9a78492c026032b11ab5d9059","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.53.0-46105.tgz","fileCount":41,"integrity":"sha512-B317kLP0m6KPLAcKIGjPcFxbRNzJ4pQLgvFLz+DeRBF+5kjfMqjsSAgisBawSbW4KsM+LQi3PaI9Ce9hq7Tl3A==","signatures":[{"sig":"MEUCIBEZrikcAHEEFdMgzBYqPXz7m2K3Dk/fPC5WGFLBkPF0AiEAhIkIPSh/cMdHmO/hC7I589V2NnisBH7vdwu8e2xfqA8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147939,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhsTt/CRA9TVsSAnZWagAAyVkQAIJnde+eXO/DOptXpyg7\n8puYFIZvQteFfbHCfM6N8fbFWLaUXnpDZc2qJDfr1JDRkJ454zThId7toCTj\nB6E5S6KvKecmqZjrN3SbEpwd1mTsNSEyM1w4RoIqNPTkON4I+BM1SNli0sQD\nhW+c9/PMUMR0aa+KZBKAco3xBGHfsVfC7WVC69SKb5m7kANKiKjgma/ZECo1\nrNRQ+UMO/sD27xusZomiuPJilBYXzvZk2M33ecHXD2p8trITPKNF9k5hxAaQ\nGHDaBAXF3RjmhDCFCWHYeNfpgcX18tHi/kG9DPVM6AYVV8/Ya9i7DIJ1G5fr\nLwlrkm4SHTyRrsZFq9Iei3y35sorhspZvDPNEkWlZYtK15b24dD4N3uljZGc\nKiQUYBlN7Qo+Qkx1WdHTC+YHVYx/Z7lJv/yP+OI7k4YvRc9u08sHlodoqw97\nsuila2AO9QoHo0YkAUOpzZfAfC2o2XgWTb4SK8S17QJgrhBxb5dZ1Uqw8pN8\nfcaIRQp99e0Va9YM8D8Dtfc7SWxPra12zXw4Zf+OoqgaQevcUv1bcz3HQXeh\n24W3u1EN8Pyto8U1eyLV68QrVpdhtiJeHQpfDyoDo03R2EP07vDwP4YLbNz3\npjH4lWIsl+aT7Gt7bDqOcUIHd2uJk8sWtUVc9TqTjkuXx2dwTlVQ1wcutMEE\nWnPM\r\n=M1Ro\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.53.0-46105.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.7","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.53.0-46105","@fluidframework/map":"0.53.0-46105","@fluidframework/cell":"0.53.0-46105","@fluidframework/matrix":"0.53.0-46105","@fluidframework/counter":"0.53.0-46105","@fluidframework/aqueduct":"0.53.0-46105","@fluidframework/sequence":"0.53.0-46105","@fluidframework/test-utils":"0.53.0-46105","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.53.0-46105","@fluidframework/test-drivers":"0.53.0-46105","@fluidframework/core-interfaces":"^0.41.0","@fluidframework/container-loader":"0.53.0-46105","@fluidframework/mocha-test-setup":"0.53.0-46105","@fluidframework/container-runtime":"0.53.0-46105","@fluidframework/driver-definitions":"^0.43.0-0","@fluidframework/ordered-collection":"0.53.0-46105","@fluidframework/register-collection":"0.53.0-46105","@fluidframework/runtime-definitions":"0.53.0-46105","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.43.0-0","@fluidframework/datastore-definitions":"0.53.0-46105","@fluidframework/test-driver-definitions":"0.53.0-46105"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@typescript-eslint/parser":"~4.14.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/eslint-config-fluid":"^0.24.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.53.0-46105_1639005054923_0.19782121469275205","host":"s3://npm-registry-packages"}},"0.53.0":{"name":"@fluidframework/test-version-utils","version":"0.53.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.53.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"c23651ec2391f9a998a1016d72383fd796be527a","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.53.0.tgz","fileCount":41,"integrity":"sha512-Cbjg2gnQ+OsXOFBGpdEbLaqFc6xFQLLSTVvgoz2AEN8/bHC4hHHq/GZ8mksSxZJsD1V5XjNsFBz1dEKnYYRC2Q==","signatures":[{"sig":"MEQCIF6FPUwTxQWiM91TO2F2gc3AlhGsiGfVPsdxRFtoLEOEAiB8dkcmaxEgBz3AFBu74uiLhaEA2stuW2vohsBTgiXqdQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147813,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhs6TiCRA9TVsSAnZWagAAl94P/02ch5uJpwCFmBP9RCvU\nWoFTKFocwoV4ISXzjKH3Lo6dJ2ADanjp2qqoUrbLRZPm60b39WgRoOR8MlUx\nHukngXMEq6C9KrFr4RU17OnJWzMo6M+nMdn8q04vmGBzxl4i7QbfbNvRvFOA\nSeOj4xxCWZhy4QjStx9OITYs958RjZRIMGIHvffJ8VtgkYljik9eC8edm1Lm\nqwTCUsmiUXuJ6DL7na/PdC/tcy8dy5Cx6LgNL92vFNMwJC8ofKoE8iDQ5GBQ\nzzC/by6nhxcIb2zrgELedR+3evfiCGOGUUH45LKkDycWSwvmyb+l8ATx7Fhn\niLANfyWhIw0Kr4J/CIyi6oel1Exi1skNTZcfzGt2vcXUx9oxtd5UKHR2pWaV\nt3xSQiz+YCp2HjY6dHaxYjtO7LRGzcspfCJUqfSCeQQJrxt8KhKcWbJPTMgv\nQD6m5Uu899mt5oqjE8hNe6PlgHCtm6b0rWG4r8MW7jF0cFWPZUVobilLxrgA\nGv/JkmYNgS7E4VwR7M/2ZIf/c2t7PGjWzIgHGjkn0fAbFloWOyp8/83lYvoj\npEDmHaR9xRQxvwlb6/YvMdO0Kv8N97yhA/67QZWSJ3a4IAAxqqAUDCGN+hmh\n0JIveQWXDhbullAjb9auluxZIGgWFzdwrttGVHzj6q277NVeeDEAkEyy3Jui\ns5Gh\r\n=BszC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.53.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"12.22.7","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.53.0","@fluidframework/map":"^0.53.0","@fluidframework/cell":"^0.53.0","@fluidframework/matrix":"^0.53.0","@fluidframework/counter":"^0.53.0","@fluidframework/aqueduct":"^0.53.0","@fluidframework/sequence":"^0.53.0","@fluidframework/test-utils":"^0.53.0","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.53.0","@fluidframework/test-drivers":"^0.53.0","@fluidframework/core-interfaces":"^0.41.0","@fluidframework/container-loader":"^0.53.0","@fluidframework/mocha-test-setup":"^0.53.0","@fluidframework/container-runtime":"^0.53.0","@fluidframework/driver-definitions":"^0.43.0","@fluidframework/ordered-collection":"^0.53.0","@fluidframework/register-collection":"^0.53.0","@fluidframework/runtime-definitions":"^0.53.0","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.43.0","@fluidframework/datastore-definitions":"^0.53.0","@fluidframework/test-driver-definitions":"^0.53.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^12.19.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@typescript-eslint/parser":"~4.14.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/eslint-config-fluid":"^0.24.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.53.0_1639163106011_0.11633005683032427","host":"s3://npm-registry-packages"}},"0.54.0-47413":{"name":"@fluidframework/test-version-utils","version":"0.54.0-47413","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.54.0-47413","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"442c49cfcfe6a819ef4dbd0d571fd11d36dd7eaa","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.54.0-47413.tgz","fileCount":41,"integrity":"sha512-olJCPw9LRsH/2hUIPZctIOpi8sgzAo6bb55qJCPRJBti2ZNCiHi3idV+vJnQNWF7FGNLJ2EB0QT+TjqXjECnPA==","signatures":[{"sig":"MEUCIQDwgyF39Cu7LLE0qHyWMLlty1OXN5ORE/9oZW3J91i5vQIgSUEO6+vA8sTNVYrWAFBfP5jcFrmPjpRVnd9QV951gBQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147937,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzK4FCRA9TVsSAnZWagAAEIAP/0YU2fY8Y372OBbEan8a\n7PO9Ll1c4CNCeSJtesGIRbNfNldBD27J9VSLWqpZTpFQu7G0o8EDx77BWs3B\nIuclEdEqXiCDHjfbz0e7fAkWAuPmFfaZvxbjOFwYFrXggk0z5UzpvgyBKkU2\nofFmTQSguY1d6s2Nk7FthsQyELuFPp8UXVMDo4fAfeCMCXbD/E6NSDU2aeRQ\nLdKBLVO0sDBPy+ooUnJyOuabM/E4YkYdVPHJf2it/zTV2d4FBaJnUPEh0Dr7\nuJekOjfcm5D5zw0wXkfwO4u5bUTh9i4YM5CH5C41SgRFfkIuJBVKj7If9QSn\nHqcAbSt4b9z2EgqYjx9K8+Rz8GYI0Cw4y9bh1kHPLwujNiWnb84akboCYTnc\n7x0HHKYAfEnxh3LxI8YmXKbtnb+z76C4SWqe2/vZjjK9PYHHeIAnAu6oKWxY\n82Af5Kb+qEcnColL7n9obe5Sr4J4pUOmrCUA7m+5kZP8kOTwIOtgXoSYcRfd\nSVns0Z7+NRa/iYzJa/+58yld2LaSd7mv1T8qGpPI544KtBBefmnq43YJxWd8\n5/vA9DEgTJM4KUTB0JRuR+snKbO8+CVnxl3igkKNb3euaFN5oF0YCCCYmb0x\nE9aV1n/t6Zl4Wtk7IvsDcNDF+gBcdkQHKA+o0739CzJeGdqp56inYptj6xni\nB1nS\r\n=8u/6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.54.0-47413.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.18.2","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.54.0-47413","@fluidframework/map":"0.54.0-47413","@fluidframework/cell":"0.54.0-47413","@fluidframework/matrix":"0.54.0-47413","@fluidframework/counter":"0.54.0-47413","@fluidframework/aqueduct":"0.54.0-47413","@fluidframework/sequence":"0.54.0-47413","@fluidframework/test-utils":"0.54.0-47413","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.54.0-47413","@fluidframework/test-drivers":"0.54.0-47413","@fluidframework/core-interfaces":"^0.41.0","@fluidframework/container-loader":"0.54.0-47413","@fluidframework/mocha-test-setup":"0.54.0-47413","@fluidframework/container-runtime":"0.54.0-47413","@fluidframework/driver-definitions":"^0.43.0","@fluidframework/ordered-collection":"0.54.0-47413","@fluidframework/register-collection":"0.54.0-47413","@fluidframework/runtime-definitions":"0.54.0-47413","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.44.0-0","@fluidframework/datastore-definitions":"0.54.0-47413","@fluidframework/test-driver-definitions":"0.54.0-47413"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@typescript-eslint/parser":"~4.14.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/eslint-config-fluid":"^0.24.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.54.0-47413_1640803844854_0.7425417102427241","host":"s3://npm-registry-packages"}},"0.54.0":{"name":"@fluidframework/test-version-utils","version":"0.54.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.54.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"e9377f38267c63fc018504f4889f54191dba233b","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.54.0.tgz","fileCount":41,"integrity":"sha512-VnwrcifrzLP3GmVtBlEpUJTSqP0FqVoilRPpRuc2/yvnIxBN0+WOMdnGR0D/IrJ/v+xzuqYAbcOcyuno/BWqLA==","signatures":[{"sig":"MEYCIQCs3r6YfvosDetb33SP3UXuKq5/+4QA0rpnIUWDm3PB5gIhAJXK3AhasNRc9EtCpHd2mBKEU9Qbq1LBjR5P6nF1v6HU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147813,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh03tHCRA9TVsSAnZWagAAvMYP/2nLJs/EOeNF3jXMipPs\nLXzrEp9mRj4Si9Bgs4ujIyZqmdC+SJnpsrK1ERwCDxw6A2bnOrFHWjLIgoLk\n7N62TWBjinyti2k0GAipUJTpGj+G/l9sD+Bg7R+0+bmY/ZsIBcEjPOtQcsxB\nVLh0Ct+htp1ibo0Ip6R7LWVBUWub/2T95mOSLGrTPJMwRqQED/pQeOpzPtPM\nBNEo0D0/Oarh9i65k/Hs3IwV4Uc4f/1XV+r6maHVd0TgoiL7+FEnGO1gqUr2\nlRYu+IbMWOx0jEtKmoLhbHg1Sv+tkq8tq7HxVCBdajWwFTk1186+rjjOHaNL\nNCiK6CXeG3KBSZD1ik6bLBkguA7l4LdAmHM4WGFj90r3wSjo6tw/pxSW/9G/\n6dMWsLVOSkGN8ZDCOvfgm+XXvbf36Pb2M23Qb7MIBRcZPMXwehHcGYSV90sQ\nbkwwBszRKM3XjDb3m579xBfdaAng4ewEqi/lFLQOn8rMJnM0zt2TareRVv/L\ngI0Ugyh7umocfbBLHuAhanQAn/DLEA5OjAFID6nmm2xnrkdW3X9jmBgnJ+Vp\nnvltWTLjszK6DL8SZFgE9rbq6ko+FXdAvhf7rE3osLE8iSK8U5gAs1estrq9\nrTbMe8vy2l48s0ibVcU/sXemejumbcUV363E7uuNY0UbBHZPhfZm46CwG/a9\n1YjB\r\n=MSIO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.54.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.18.2","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.54.0","@fluidframework/map":"^0.54.0","@fluidframework/cell":"^0.54.0","@fluidframework/matrix":"^0.54.0","@fluidframework/counter":"^0.54.0","@fluidframework/aqueduct":"^0.54.0","@fluidframework/sequence":"^0.54.0","@fluidframework/test-utils":"^0.54.0","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.54.0","@fluidframework/test-drivers":"^0.54.0","@fluidframework/core-interfaces":"^0.41.0","@fluidframework/container-loader":"^0.54.0","@fluidframework/mocha-test-setup":"^0.54.0","@fluidframework/container-runtime":"^0.54.0","@fluidframework/driver-definitions":"^0.43.0","@fluidframework/ordered-collection":"^0.54.0","@fluidframework/register-collection":"^0.54.0","@fluidframework/runtime-definitions":"^0.54.0","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.44.0","@fluidframework/datastore-definitions":"^0.54.0","@fluidframework/test-driver-definitions":"^0.54.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@typescript-eslint/parser":"~4.14.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/eslint-config-fluid":"^0.24.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.54.0_1641249607470_0.451092319376019","host":"s3://npm-registry-packages"}},"0.54.1":{"name":"@fluidframework/test-version-utils","version":"0.54.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.54.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"b7ba2956dc487debb765e386a0540d56e9f86d08","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.54.1.tgz","fileCount":41,"integrity":"sha512-ia8ASvWlTrEgSIu/MxQN3M01gE2n+8Sgos/2oNe3xpYEL+pSGcygNHl6QA9gXGnz/NROhE1zpqR4evlkypL3Yg==","signatures":[{"sig":"MEUCIAjMXSdF22MqF0woNcuJL2m1J7Dn56ER5VnOaqcjqy0/AiEA2wblN+cGZfiBWv3nVLqgXdmK9FITT+mw03lmFVkU1XY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147813,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1haZCRA9TVsSAnZWagAAMS8QAJVAcoNTMAAk20r8hCoW\nDbrAVRpOxSftHsL7MPXtZwtblEE5NW6AGjb41u3/3XMKkjSwUTse8RIRII/Q\nyKYNCsWk1IpagAsH2x6570cs99vQi/F4plAXe3rGa/Rbub1Fi6i7Xc2D1l9C\nZ7dTGe7VfvCE45qkC/z69DCqYP1BLyaf3y7vKWkNu+9787aXqo4uwE+jX1JE\noxkacIXVIEEiyUkADG9dp/Ed/lW63YJuEd3U65kScRqXPdjX3Bf3bBVHeAiq\nh3X8HmAQA4KO+Gly2lZDwtsB09J9JIDCvkreKzJuhPKaltMUALI/jnyT2bGp\niAZtCD6QWqLog/taV6NRhbAnbjDWgRl3VbMDdX8blp77s+zLWLe8RgEyC9D/\nu/P5ad5Lr+LRf67YLJw0wmY3NGUailrpD2q8qhD2r2/8TIPEyeK9vGO74Fol\nespzaTSXw5xIfF/ZVoyLD+ejj0spvpsNpgTI195G+imD9AsD9lNRoGZe4HBH\nb+SCiEganHSdFIu0uoVOQus4sdS2Mik9mfHhLbjgQtaTWFJ0r4Ugd3dG+fRV\nX+OiTbp3WeRaNR/JioO9qX0b/0zFAypEcW3B7zBlewkgdBk33TzlspxK+HMw\noElT4p752NzjABYSJllpAtkWJyJDGDUZkjI0Z9g4ychHgT6dUewxaNoiaZa4\nL5z9\r\n=kaXL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.54.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.18.2","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.54.1","@fluidframework/map":"^0.54.1","@fluidframework/cell":"^0.54.1","@fluidframework/matrix":"^0.54.1","@fluidframework/counter":"^0.54.1","@fluidframework/aqueduct":"^0.54.1","@fluidframework/sequence":"^0.54.1","@fluidframework/test-utils":"^0.54.1","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.54.1","@fluidframework/test-drivers":"^0.54.1","@fluidframework/core-interfaces":"^0.41.0","@fluidframework/container-loader":"^0.54.1","@fluidframework/mocha-test-setup":"^0.54.1","@fluidframework/container-runtime":"^0.54.1","@fluidframework/driver-definitions":"^0.43.0","@fluidframework/ordered-collection":"^0.54.1","@fluidframework/register-collection":"^0.54.1","@fluidframework/runtime-definitions":"^0.54.1","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.44.0","@fluidframework/datastore-definitions":"^0.54.1","@fluidframework/test-driver-definitions":"^0.54.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@typescript-eslint/parser":"~4.14.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/eslint-config-fluid":"^0.24.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.54.1_1641420441187_0.8163370559147343","host":"s3://npm-registry-packages"}},"0.54.2":{"name":"@fluidframework/test-version-utils","version":"0.54.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.54.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"510938febfdd9c04114136e6a047117596a354f1","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.54.2.tgz","fileCount":41,"integrity":"sha512-niiEzhQ+GrWjqh1YoFq9Q2oIXhAA7mHtTxoWlFy5DPwtFloNvS41N9TbpNuJRGb6cdQWo3qGNTw2IoqXpsT4Rw==","signatures":[{"sig":"MEUCIQC30Z0k+zWrcOCevOIgw3bZaPXjQlojxZJMPN4+t3V3jgIgfqztQxztDc4P/cpMkFE6lGIfL+v6GBoLEXGTGVK1hcU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147813,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3e6JCRA9TVsSAnZWagAAYYsQAJZMqWtZJQYXGxIct5VH\noV0HC8k3e49U8jrP858+dKX+9XJFiTuxL1DATch8aCi9z83Cp+QYRwXGGJRV\nqblkfZ61HaVAztXG0fQJ53/Y+mXQN2fnQeJH9+vMz1J1nVGxb+27Er2RYC2n\nXUiNkuAiCtMkPKUC7pVYOGpgRZ4/I8qbIfFEezp8AAsMTwF9/rdh/LIqYGJT\ne2+3oLu79H8LNfdh6ouzulrcqh2+ndRrZHkzk7InRwDvjMoXmdGPMHD7OpeF\nGr4QdeqSeVRR7MQSY1XSnidgN2q5kkzVoq8200Biz1hEhiceEx10kamRcUSy\nySaZBTPK4fUv4gXd07tOYysudxuXWhW9ZHG2g6uCzEPzqjzXRkVYq+rO9t17\nEsc/+2MHidfxV/IDKDbBsCNZuMYjL3yLvAbhPdlyMTBCj3qfwbAGHBsbl3u7\nUTjgLRiuCLSyqnk/j/HNnyPTxZYBx3vJ5N1E9QsDCe9X1QoPoJh1L1Dr0W+F\nLEGtSTdsIYv6kW29s/O7ZKSUaRuyjFh5KYJ5GI84qPy4UaR9zKHi0QzAPZn1\nHzwFryutGsPJHsIDgIa8kH0P8TlJDO8gtLhgCwZZBBuDzZxTaz2/P3E9Mjvy\nipnT2g5N+CGI+jT4wVQNDdpGsdLW+UbKuLSeA+nsl0zMQnnKYssYqASbP90z\n9nws\r\n=3qI3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.54.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.18.3","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.54.2","@fluidframework/map":"^0.54.2","@fluidframework/cell":"^0.54.2","@fluidframework/matrix":"^0.54.2","@fluidframework/counter":"^0.54.2","@fluidframework/aqueduct":"^0.54.2","@fluidframework/sequence":"^0.54.2","@fluidframework/test-utils":"^0.54.2","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.54.2","@fluidframework/test-drivers":"^0.54.2","@fluidframework/core-interfaces":"^0.41.0","@fluidframework/container-loader":"^0.54.2","@fluidframework/mocha-test-setup":"^0.54.2","@fluidframework/container-runtime":"^0.54.2","@fluidframework/driver-definitions":"^0.43.0","@fluidframework/ordered-collection":"^0.54.2","@fluidframework/register-collection":"^0.54.2","@fluidframework/runtime-definitions":"^0.54.2","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.44.0","@fluidframework/datastore-definitions":"^0.54.2","@fluidframework/test-driver-definitions":"^0.54.2"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@typescript-eslint/parser":"~4.14.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/eslint-config-fluid":"^0.24.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.54.2_1641934473485_0.03535935345583385","host":"s3://npm-registry-packages"}},"0.55.0-48551":{"name":"@fluidframework/test-version-utils","version":"0.55.0-48551","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.55.0-48551","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"e69c2b5d6b01c1f7b49803887add1ab4007040f5","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.55.0-48551.tgz","fileCount":41,"integrity":"sha512-o6ZL3lYLgR6vHIkjVsDlP3svEfrhCTPKdf29rm952EuTk/gVAHJf0Vk5a5I+meKePno6rJIrnK4M3zc9UfKspA==","signatures":[{"sig":"MEUCIHt9MUaHTb12sOOw1/NqruBm5rAby5etTnEmqM36N89mAiEAxAArR4SGG/PvzHeuxEJgZFJuxzqSK3rrSHIwL73mYHg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148502,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh4euRCRA9TVsSAnZWagAAA0QP/0w4MuR+ar/0zoXwbz2j\nnbULbtWP6ybu/f7UygdWUclxsF3s+AX2t5TfnIIoZ4D3Tw+HJqe312hcAVfW\n25FPRscuqp5c06Hmnx2RzprEgZIz+iy7vmF0HJcLR392etYv76PTdeRJl6OO\nYEN54e2wIfKjlPSuF2IM9p4WdyTx4p8broklRoz6CBl3loxjQXCpDAhSdF8B\n1AM2R5TFRXnXDmICv8vZ8zNlZEvEyKKCCoYqD3jCY6GPC9H2ceb6X69GJZWn\nNEKTXujbRtTfegWVXFfC7h4fUs96UTycvpE1vCuKprRGeE0ahaTmQyuJ08a8\nrJjbwL2qyn5DPjT19/UkLLIJpRojEgd8NGhJrouIvdT9R4C4DTgRRf2EQja3\njy08OKEVy+2OJ1ljVBIHcmnt21zwq2v8KMlazgx0ErE2gx/uejktTuhrRJx5\nQVMCJilV2ntE6AZAbrhcbN5GzB5HOzHaNq7vBKj8PQZqFP+Ept+L88io1qGR\n/BjMKMfm8qihibqKkGWFhlsTcoqe794xSED3bWuOcAQwcup78hsKkvkodyZe\nQPZaeyGOgBIb0ZnH8ZdLdlWhDfDsQ7PiPj0wA0UKo5daWsZGTLFblM6L+wfA\nloxmE6qpJ9r6Ypskiv/QEEbbt90lwf2iI5myqS5kCq1UN9whaLutvf6k0Deg\nbm6P\r\n=JRL6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.55.0-48551.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.18.3","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.55.0-48551","@fluidframework/map":"0.55.0-48551","@fluidframework/cell":"0.55.0-48551","@fluidframework/matrix":"0.55.0-48551","@fluidframework/counter":"0.55.0-48551","@fluidframework/aqueduct":"0.55.0-48551","@fluidframework/sequence":"0.55.0-48551","@fluidframework/test-utils":"0.55.0-48551","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.55.0-48551","@fluidframework/test-drivers":"0.55.0-48551","@fluidframework/core-interfaces":"^0.41.0","@fluidframework/container-loader":"0.55.0-48551","@fluidframework/mocha-test-setup":"0.55.0-48551","@fluidframework/container-runtime":"0.55.0-48551","@fluidframework/driver-definitions":"^0.43.0","@fluidframework/ordered-collection":"0.55.0-48551","@fluidframework/register-collection":"0.55.0-48551","@fluidframework/runtime-definitions":"0.55.0-48551","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.44.0","@fluidframework/datastore-definitions":"0.55.0-48551","@fluidframework/test-driver-definitions":"0.55.0-48551"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.25.0-0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.55.0-48551_1642195857340_0.9462519193940131","host":"s3://npm-registry-packages"}},"0.55.0":{"name":"@fluidframework/test-version-utils","version":"0.55.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.55.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"58e134bc555c65c9cd9dbfdb91ca46a135f0ccd5","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.55.0.tgz","fileCount":41,"integrity":"sha512-ML+jPPGBWmzCpiZoYhrNzDnv3lzA4HsO6n2VePgrXbY43btNJnR2g3Sa6Y9NddIXoo18lwN8Ry9uGGXNSP6V8g==","signatures":[{"sig":"MEYCIQDhlxL2QDnvG0ouvOY8e2kqge7IRpRvkxDEiu1gruvljQIhAORwX6CghqHMjdNFORVJme9OvSf8kO045q+Gv7ahPD7R","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh51FoCRA9TVsSAnZWagAApdAP/39ulM/XVxGfdB95LU18\ns49lxESI4FkjC9Tqw1M3N/3CQ9T1JXsIko2050qM6WLq8BoTbwZ6Xot3BN5K\nb5lTde2DkF5QqOfloih9KUsfHMjVwkgmjf5xCYmly4OsahmMYD/K1Uj6YfhX\ngjCy0N6qsJIUlZFeHag9gwC5trz0xNKTn5nKO3ny6D3CzRMirTLo+5zvYBAx\nFjs1uJSgkudLqhX01lxj2wfZtHcZYOGdzIiSn2g5J6J6jSOfllzoaTXSDWav\n+VWWJgpSBmtNFVcyfHeLiP6ogsfMQq2o5oB3Gh6Dv2uSreoCGPceIiG2vJiK\nOd+32I2U4YZPiDxwPABgbCFW8JymgmebNyMo5uLt8jhXdbKwzKlSrRW/3Twz\nx6CVc/obCmW/coBuf6JsMu4VG6nIcKG6gOXJs0RKI1LkkGUaKVFbrxZVm9KC\naaBmlvCiduwdUgoXNTsFJbGcJASbP2pNhRyX2M0XaSPVpi9rn5AOgYBBJ0BQ\n3cYP7jLc/IfGsUYRpJxvU76gklVAYNHarLtA1jJsCecw6pPLaSOYScgZQYZb\nXKMRw9/AKP3CG3EpHesY2DO4Sb4FtpXbNwXoZyTeuR9R5DHgwJ43M5MCyyBK\ndkKoTZnL+EpOfpb/tfshCbV8x+2ufh/LpTaUmkdA/BTdADUhAHZ7g+oFO8jc\n/NAr\r\n=d9t4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.55.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.18.3","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.55.0","@fluidframework/map":"^0.55.0","@fluidframework/cell":"^0.55.0","@fluidframework/matrix":"^0.55.0","@fluidframework/counter":"^0.55.0","@fluidframework/aqueduct":"^0.55.0","@fluidframework/sequence":"^0.55.0","@fluidframework/test-utils":"^0.55.0","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.55.0","@fluidframework/test-drivers":"^0.55.0","@fluidframework/core-interfaces":"^0.41.0","@fluidframework/container-loader":"^0.55.0","@fluidframework/mocha-test-setup":"^0.55.0","@fluidframework/container-runtime":"^0.55.0","@fluidframework/driver-definitions":"^0.43.0","@fluidframework/ordered-collection":"^0.55.0","@fluidframework/register-collection":"^0.55.0","@fluidframework/runtime-definitions":"^0.55.0","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.44.0","@fluidframework/datastore-definitions":"^0.55.0","@fluidframework/test-driver-definitions":"^0.55.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.55.0_1642549608414_0.8157069759786946","host":"s3://npm-registry-packages"}},"0.55.1":{"name":"@fluidframework/test-version-utils","version":"0.55.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.55.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"e859bdc6d64eb65f2183a5edb7de13703e8fcbb6","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.55.1.tgz","fileCount":41,"integrity":"sha512-DLwHfT1DWEDtUc62Z/m9wMuY6QoCr0aIIaeFy/O0TZtT7cmJu76hwtXR/kGEnjO8hsF5FNlZJF91fAMwmg4UgQ==","signatures":[{"sig":"MEYCIQCBZ1ijbm4qrGvTMns4Wbv1fSWQyyMZck0hXkhafYf3EAIhAJyfMmw48357UMmFLjpdlinPNRZZ8JBaGkFwo8Eroo8V","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh9D85CRA9TVsSAnZWagAAuUwP/j1uuqeEY98rnTjqCitD\nfb2vb5xzjWyNcoSf8iTbPfpk1Lzlnha+7EyFUp17fJgMl2lPuC8IZbUzqivA\nubJ2JSqZYn6tpEPgACHyPfAiV8MRwQIm+MihyA//OfpROgZ9ejsiJu9zf6WH\nhQE15l8+nt01Z6qcTOKGEYXMlEj6JxvUaV9a0WJlFALsed8T+ePB5nX842n5\neJCltvYkrNEFXz9u6kCpN9UY8tguAYT+od8S9WDaI47tsNhxr755Un9D3DJR\nzpf1jpNZ3wZ1gEyWDpz8dI16m777MT18l5YbnSfYMWFH3Zebz8oV6sovYs4O\nrdTdb3ow3qCnC2m8+8XCGOjO5aVKL5EQKajmYAmW/1mgeT6W2jj20BiTt5BG\n2I2D87ptNbLv8vk7liAdoaNWokr72cx/6dOISC7y02azAT4CMqqhqJZh9KOD\nrSducco22HC/UG+Z6qXL2FkT+RvEUXA7p7RDMdrz0wtXgO04Ie9lUy+AAsmh\nQLqDqNQdnEgI7eUB2+AaZZfNCDUuIRqraC72YuL0gBCBklTqOHDw7riLGSW7\n84qpnbNZ9wdWqr8xIN3aMSMI2JLXbxZaF/gN2kF5WWe+QM8VhAhmzXSCPLb6\nhhGXUQ5mUezINMolRBQUw0099y/8FBHvPtAjxTie6j0BtNCgjTF+47Jh4vzH\n7Ss8\r\n=h2P8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.55.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.18.3","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.55.1","@fluidframework/map":"^0.55.1","@fluidframework/cell":"^0.55.1","@fluidframework/matrix":"^0.55.1","@fluidframework/counter":"^0.55.1","@fluidframework/aqueduct":"^0.55.1","@fluidframework/sequence":"^0.55.1","@fluidframework/test-utils":"^0.55.1","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.55.1","@fluidframework/test-drivers":"^0.55.1","@fluidframework/core-interfaces":"^0.41.0","@fluidframework/container-loader":"^0.55.1","@fluidframework/mocha-test-setup":"^0.55.1","@fluidframework/container-runtime":"^0.55.1","@fluidframework/driver-definitions":"^0.43.0","@fluidframework/ordered-collection":"^0.55.1","@fluidframework/register-collection":"^0.55.1","@fluidframework/runtime-definitions":"^0.55.1","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.44.0","@fluidframework/datastore-definitions":"^0.55.1","@fluidframework/test-driver-definitions":"^0.55.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.55.1_1643396921381_0.5446732855837133","host":"s3://npm-registry-packages"}},"0.56.0-49831":{"name":"@fluidframework/test-version-utils","version":"0.56.0-49831","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.56.0-49831","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"ea71d40bb460a7705510b095bbfcdd60a20a99b2","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.56.0-49831.tgz","fileCount":41,"integrity":"sha512-wcgiBTxdlNqa5YKSRiEYUam5w9cNigPMhVixsyhLVzAMMeddPcjla8qSKP4Iie6zzwBiarmHdizbGAOabS1B9Q==","signatures":[{"sig":"MEUCIQDdtWtw0icXRr20wBCwUsiUGLVHk39Xtmjg5bJtt1HjuAIgaO6krApa9GKQhMsATPC6HGMHygL+X6e9+vqMY+FMWX0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148506,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh9FOmCRA9TVsSAnZWagAAO5IQAJ3lbVopajgTF5iQUJRR\n3u+tFRvM4bP/+MSd6PRUHUUeySFVjEf26uAWPH04kjN2LL1tx0srvyQomDJy\nqBneqx8LxAouGwOJQRAMA9iyEsQFuu8uBGV4g92Xr5CTZ2yoHYPnAJxxR8ro\n39pmKdd3sFpwnrUzfVU6u6V23CwS8x7DI+OwCK41Kw7bdRH2erbenujoGuZ2\n4oE8myW4IZ/yOh+2ZLFaV8lRSrOZUf+WO6l+3DEnRNIid4cTJDIXcanlDsGq\nLYmWIbQZmK2GhTK2l42tvSxd6BlE15yuGTC3ZFUlaDcHAKwfLGCGB0eU0qjk\nGPImjobu1hW44/NqxEDcjuX4x4RDuUJUOHiNaiVkqu/ojLWHMXg8pHVZz624\nYRHdjDG7pZvTl6k45llesxmOVTB9vUAdP2bche09g8sMgtz8zaCNJgFF/aG0\n1t+U+14NT3IH2XkJYYCqdvMR5ewc4vLe3G2y1QyPofoJIlj5y5riNIJtd5vV\ntU6yJ9gWH6bsocP2iczyw7DB5v260Cx95M3LTwecWxW3jIQxXlqRolTdhDmW\nrq/JLrD/ak88G8M5PKsRv+crUMx7xTDxXqySwoY90Ce5g/Nt0iR2tTlQE2o3\nSrarX3kp3FglIcl8QUR8YKMTG145YyPOEIodFYI/aqnffoAhJKEOkOYUEBg0\nnVEk\r\n=8ehH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.56.0-49831.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.18.3","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.56.0-49831","@fluidframework/map":"0.56.0-49831","@fluidframework/cell":"0.56.0-49831","@fluidframework/matrix":"0.56.0-49831","@fluidframework/counter":"0.56.0-49831","@fluidframework/aqueduct":"0.56.0-49831","@fluidframework/sequence":"0.56.0-49831","@fluidframework/test-utils":"0.56.0-49831","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.56.0-49831","@fluidframework/test-drivers":"0.56.0-49831","@fluidframework/core-interfaces":"^0.42.0-0","@fluidframework/container-loader":"0.56.0-49831","@fluidframework/mocha-test-setup":"0.56.0-49831","@fluidframework/container-runtime":"0.56.0-49831","@fluidframework/driver-definitions":"^0.44.0-0","@fluidframework/ordered-collection":"0.56.0-49831","@fluidframework/register-collection":"0.56.0-49831","@fluidframework/runtime-definitions":"0.56.0-49831","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.45.0-0","@fluidframework/datastore-definitions":"0.56.0-49831","@fluidframework/test-driver-definitions":"0.56.0-49831"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.56.0-49831_1643402150151_0.9611060998645811","host":"s3://npm-registry-packages"}},"0.56.0":{"name":"@fluidframework/test-version-utils","version":"0.56.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.56.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"ae2fef27419ec01b401fb51933a07ab8cedf2aa7","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.56.0.tgz","fileCount":41,"integrity":"sha512-Odgk12J6tvDRvLUEshK9mFagIxa2PXr52Eeolg0hUQsgmsrKkkWKWDRdS4sUwEuqmdD6hUJsS4sKRVPUajDHFQ==","signatures":[{"sig":"MEUCIQCmbMyR2H3oC8DHK6XfImJPAIikO7XbRM1qZeTTbEL76wIgcbF/xDCIGREdadKAXlq/3Va+mbHYifSbF9TD3bKnSXo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh9IvQCRA9TVsSAnZWagAAN44P+QAwJd/Ps6oB3/ZlUmzE\no0NhgEhyhbwq178e0fYoFDHy8lfHl2lnAhIhAIH+QJbMLkp9qLLLXtog0Dnx\neh2u9e2UqIBilLOOldRvy0jC6f3NXv0QtFDVcfAXZ6rEp9prKUGOCuRXxUn8\ncIMQmc7p+2acu7rUVPodqc/PEzsuxMwYyr8/zCKFhTOhgEjPNdf9IoV/qnr1\nHA1JiEtk4Kvl6hrTrl2k1DxjLl+ATFQFe551YRY1nCYQ8RnCD39XmMEE3zhM\nl9OQVYH9Eh1tZ9JiFSnMNvGqZPynPwkf9xvw5RIewuEAFLjqNht34yPc4RYi\n6HCzZIahiAqxYUEW9GXKpFqlPDTy+8Aje72sQJzP+hu8F7Qioggh/a2x9jil\nLhIcn6FcSRdWftk0ufzsbP7kd9sE7W8bGi039L12PNzgV69OWsOS8+OafFR8\nTSH/dU1ppuiBD9DWEdOSMkoqrH2fVPfArarKOF9oOKSrOc09Qy7ZxVSJb7oe\nTQ6SoiYPQbGQwEKIJYlE/Ce6/jQ/vIkXiHn0tGPFW2DemK9ZsmEoBnPvMfWC\n1hLwMYMQSMy2OdFSAlvw7KNZauzVwQwv5+Mk2guwtsTsQrCAYQI+1Zr1Zd6s\nN9MXQcBYM748XcuwDXr8a3xhU+qV3/cW3MQLzxtORcFh1U+7/F51CouKEjec\nzDi7\r\n=sXyh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.56.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.15","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.18.3","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.56.0","@fluidframework/map":"^0.56.0","@fluidframework/cell":"^0.56.0","@fluidframework/matrix":"^0.56.0","@fluidframework/counter":"^0.56.0","@fluidframework/aqueduct":"^0.56.0","@fluidframework/sequence":"^0.56.0","@fluidframework/test-utils":"^0.56.0","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.56.0","@fluidframework/test-drivers":"^0.56.0","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"^0.56.0","@fluidframework/mocha-test-setup":"^0.56.0","@fluidframework/container-runtime":"^0.56.0","@fluidframework/driver-definitions":"^0.44.0","@fluidframework/ordered-collection":"^0.56.0","@fluidframework/register-collection":"^0.56.0","@fluidframework/runtime-definitions":"^0.56.0","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.45.0","@fluidframework/datastore-definitions":"^0.56.0","@fluidframework/test-driver-definitions":"^0.56.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.56.0_1643416528387_0.3323496006313793","host":"s3://npm-registry-packages"}},"0.54.3":{"name":"@fluidframework/test-version-utils","version":"0.54.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.54.3","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"1109a7a8efa9aebc20ea7f7a8fd7df34fa5df706","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.54.3.tgz","fileCount":41,"integrity":"sha512-Euyw3h0vvo1wQhWO97ypvLKbTL8OJEdoRE8Wu2VS2vBfT5BbbtJZAXY2EBOv7BKTUQ1bOz3Iz8BG2+KaB+7UPA==","signatures":[{"sig":"MEQCIArPa3TPujqrjFGMJFYnN22rQy1C1KoWzDJ6nEZjQ2V2AiAC4ubPIR7L9X/sKz7g22+TbflYKLfSrVJTew76RrAEjw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147813,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+zzUCRA9TVsSAnZWagAAClkP+wXNgG2jIcaWBhaxA8Yd\nyUM9+NrN6hf31L6Kl7H/iq8tmSVWwuNWTrxGdTPdgMKmhfA28Q6Gz6HPiv3n\nqc3nsxCnJUqOTgP33zuGkwLfuuyWtNzoU7ivp0N5/PXmFeTa8jDS0HHD1T8S\n/G4wd111LWa/zbDGnj1HbIHnMX+uyt1tLVsMTH70nBb5J8p3q2LDBM0pWfEY\nNuXf82Z25R36/Up+G0H9DTPhsR/HE8Z+QYieq5uhrTXQy5Enxq0CD+R5MiCQ\nM3RNqwjt6hZfYxqE4UskyivoR6XODpC9apsgp8dckps6BmM68FMYLUnahwXT\nF2jhECN4RLGwaxhK3evZKTCQDsVOybWJTOxQrokjdok4JQd9cT74MJc4/jVb\nl/6HnKKDmUts/t6hRwT9Mq3dh/1uF3MvKs3woZ5bbVILwxoNQWytUfao9itV\n2gPDyBJZHp3QOxLowhEsWesNkjSbWBT8tKvq7sFzd0S7hhDicojdwoYb2e4m\nMn1RfqT+6B4yBdTBkGKOYmWg8MTj1XgnnZ3pQQpGDuIUrCfahInLygZ0fgyf\n/M+T+rU57Pd1tvRTeaakU5J1dlYP0xEuTfZo5gf+V0fh7aWdo4waVGxyBoPG\n1KaJJzbfh2VBPGIZH0OjJ+UedJ9Mo8fFS4D9gWDhue3Pcj4ALwb2cIgzLaxd\nCbQn\r\n=Pi0H\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.54.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.0","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.54.3","@fluidframework/map":"^0.54.3","@fluidframework/cell":"^0.54.3","@fluidframework/matrix":"^0.54.3","@fluidframework/counter":"^0.54.3","@fluidframework/aqueduct":"^0.54.3","@fluidframework/sequence":"^0.54.3","@fluidframework/test-utils":"^0.54.3","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.54.3","@fluidframework/test-drivers":"^0.54.3","@fluidframework/core-interfaces":"^0.41.0","@fluidframework/container-loader":"^0.54.3","@fluidframework/mocha-test-setup":"^0.54.3","@fluidframework/container-runtime":"^0.54.3","@fluidframework/driver-definitions":"^0.43.0","@fluidframework/ordered-collection":"^0.54.3","@fluidframework/register-collection":"^0.54.3","@fluidframework/runtime-definitions":"^0.54.3","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.44.0","@fluidframework/datastore-definitions":"^0.54.3","@fluidframework/test-driver-definitions":"^0.54.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~7.18.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.22.0","eslint-plugin-import":"~2.22.1","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~26.0.1","@typescript-eslint/parser":"~4.14.0","eslint-plugin-prefer-arrow":"~1.2.2","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~4.14.0","@fluidframework/eslint-config-fluid":"^0.24.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.54.3_1643855060479_0.7117147244510893","host":"s3://npm-registry-packages"}},"0.56.1":{"name":"@fluidframework/test-version-utils","version":"0.56.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.56.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"4f48cd5d37f5dbeb86bae6fd70f95e26e5446285","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.56.1.tgz","fileCount":41,"integrity":"sha512-8Bg8wnUWUyoi9yHOuzMOHm+VhqbQXuHDDtKwxpCuXt2Pb98r3m9RMD74M8k4RKke1iOqnMtkjUohJdTcfY0/YQ==","signatures":[{"sig":"MEUCIQCoonAytlu7fz7uXHl86pO7D2/EI8oj0IiybhC0BXGUZgIgFjDRPY8CU/XSizMfKL9gY2i+3I7QP+Wk8mXx/Rd7Vdo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+z/QCRA9TVsSAnZWagAAL/YP/2dpnKNEatZerVhpLhIZ\nNh4SoFpl0Et8h3902dJYlsLs7ctqCow1y2BMZ1PUVLlSF7HOp58mLqMh3jRO\nOXCAEdZW2+aT9BAc83hz2Zb2H0VKRAFvtDMdGGAjkbsqK864XXJAAbDKZ6xx\nMm9dxsWGZSkOh9UDrF+JT24br8Oj0ViWRlV6F8s9Y78SL6nXP5FcPFZaQsJ1\nAtz40mXb0EsQYH3dYBfmwZYEB59rcF+capa1s85G716NpVSjS+URqs2fHMQI\npXcBtmyvGLwQaz58/2/Gn4nelbx3zESYr7MqV4L5CCmYwPREovcsx82eELA3\nBJLvQcHWFM04g80jBGGLfytFDNiVUzRJ6tedKXE4A/1oc35GR5QYwvr/EiXS\nSAzIa7NoI+g1MFwY2G7l9tkjRVIkeb/EYkKuyRxb7fRrO0nL6x14T+W/kPdN\nXx3mm8y6tTEVOqSG9DSWkyp7ZMcWfuSRmFRYjGnnn8wY9jZ65+RIOJY+mK8p\nMAoHNmsyM97qf8ABEoN1WEb85Dh6UZEZN6fvow5fLrwfDjAeLGS+UnyZd0qd\nTVKLKfDi13LVMe4j+hQ7L64InJ0scuzg63jRwyDrUaQYgVqMuGpqsbwCS9GE\njW7Ngh0DEMAthJbuH+vFmhTk/kjdr7+SF6fO32kvgj1TMthPvy90RxHcl7vs\nU3mW\r\n=sS0E\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.56.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.0","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.56.1","@fluidframework/map":"^0.56.1","@fluidframework/cell":"^0.56.1","@fluidframework/matrix":"^0.56.1","@fluidframework/counter":"^0.56.1","@fluidframework/aqueduct":"^0.56.1","@fluidframework/sequence":"^0.56.1","@fluidframework/test-utils":"^0.56.1","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.56.1","@fluidframework/test-drivers":"^0.56.1","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"^0.56.1","@fluidframework/mocha-test-setup":"^0.56.1","@fluidframework/container-runtime":"^0.56.1","@fluidframework/driver-definitions":"^0.44.0","@fluidframework/ordered-collection":"^0.56.1","@fluidframework/register-collection":"^0.56.1","@fluidframework/runtime-definitions":"^0.56.1","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.45.0","@fluidframework/datastore-definitions":"^0.56.1","@fluidframework/test-driver-definitions":"^0.56.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.56.1_1643855824176_0.4807878431050423","host":"s3://npm-registry-packages"}},"0.55.2":{"name":"@fluidframework/test-version-utils","version":"0.55.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.55.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"},{"name":"danroney","email":"daroney@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"82a7b2476c2ade7c3447318e1e144e44ca400ba4","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.55.2.tgz","fileCount":41,"integrity":"sha512-6bConrA6b8dT+5Aa2nZP5eAFFruNSrRq6YcZYrDZZiN6psvgNyI25ejBb1DQiPdKjzt/n+yXqzDOMYTGOTYYHA==","signatures":[{"sig":"MEQCIBM8o1sM9/chQzu+FWCEWtjBO9vgWoDiJgQx/kCMh9ujAiBER00yGsgZq2UZD/bDcnqR3f7/KJyJxBptelL7oGQPWQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+0ATCRA9TVsSAnZWagAAYy8QAIGiwCCHeuhFHiIrsDAS\nd6SInHUL1Wu5pzklAHzrzwI2qMAi44dmkp3XGbEbOqK4NlZQZA9J2cgIzoAQ\neRi8ClGV5iL5r5ObuSnPjqqfzTwSgAH9o/3ZDy3lsSojg7m06e5cWZ+g6GYi\nx9/nvaxePWiGpB4XDhcWh+cR7My/gtq1JNgBQ4dd/FGt0FTLK527jd1nTwoo\ntfOYVAlOVQw9HIDGKQzbyHYMYcgk9F94KFTOIUAO394TdYaBBpb5TXz2Zm51\nBbRr8CKPwUFLFIdo5IUFHG89lwZUt1+06SwRZRfZomv1t/1uVW7txVDd/5Yf\nOPRIqSFAYtaohONh5Xk13M7VWrN/n6vccuDMuI9nepkEy9jWzGFkEUTncp7O\nLvg/ACqYDODNX2nsgsBjgG8gjzPPvSth9I5BS5GalZwaDpt4xvrbbTArFB8w\n0mKkS4QDQcYfoL6eTR5k/TiooDnvYVyHdpKhVpv7RMyqeJEFPBl8mJ/ZmF1m\nd46bWxy3TVnsXlDOIbUFvLjAlQiq1ABU9pDODLvwQcM2WHY77Lsu85tc7l7M\nOfCo9Du/PDkRbOhAyk6zjluvsnMAcUZXLM9fa83pH7gjAyW1SJkKqINyBdCQ\nxpTYM+42ik8TAXcPJ/dOwf/fGp1oLxDnAzeBJc+Q43ynXNnadGg5HTEhJWsP\nsguz\r\n=DObk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.55.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.0","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.55.2","@fluidframework/map":"^0.55.2","@fluidframework/cell":"^0.55.2","@fluidframework/matrix":"^0.55.2","@fluidframework/counter":"^0.55.2","@fluidframework/aqueduct":"^0.55.2","@fluidframework/sequence":"^0.55.2","@fluidframework/test-utils":"^0.55.2","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.55.2","@fluidframework/test-drivers":"^0.55.2","@fluidframework/core-interfaces":"^0.41.0","@fluidframework/container-loader":"^0.55.2","@fluidframework/mocha-test-setup":"^0.55.2","@fluidframework/container-runtime":"^0.55.2","@fluidframework/driver-definitions":"^0.43.0","@fluidframework/ordered-collection":"^0.55.2","@fluidframework/register-collection":"^0.55.2","@fluidframework/runtime-definitions":"^0.55.2","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.44.0","@fluidframework/datastore-definitions":"^0.55.2","@fluidframework/test-driver-definitions":"^0.55.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.55.2_1643855891447_0.5849188367868021","host":"s3://npm-registry-packages"}},"0.56.2":{"name":"@fluidframework/test-version-utils","version":"0.56.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.56.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"8a4e3c42795c641a301f38ee841369ddb70733e7","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.56.2.tgz","fileCount":41,"integrity":"sha512-1A5my3ytUIS/+snAWlXq00pw7fybcvFYAwgQedm/YzR8r/4Vz+roPAUkr7J/eTi2FnPH1OzndwTeeeX14+OFgw==","signatures":[{"sig":"MEUCIQDV7sKxb7W09Ernevs0INqaqedPpMQjbzEoaWU2Q6uGaQIgHNdoykAjJcoFABBkRpYQbtlkQk/tPZ+ameWLRi/o97o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBFXVCRA9TVsSAnZWagAAqi8P/0nl5igtmpSgsucZaaNe\nAYSZDAzR9EjHOzZVr6YK16gKILX4ufuT2NPrcgpa9b2Q7nWvUYq+b1ZNa4jy\nGhdM5/oFNr/DflViwmBRlBX41dkAhdujVAKs2zWuBCD3OJBKmYl+Tq6lJrEn\nGG5a1R2k/5OOpD3f+UIf/XFX6UVKFoCwSmmcpgtHSsUTYgpbqUQlM2anLDnq\n9SMEurS6GU3g2O9crXLn4BC6ITrgQkVvl0i5ckSmPGErTOXLxEx1/IZekoKN\nkU9h+Q2VN5OeBaoYJnxd3Lexgx87PkqqNuNxYz+gDQKDc8MEMRrGK7Fv8T49\njqJh6GiELdLVtnEyBab7d6RHLrypHjrAJyzGOxnBAbY3FiP8OPtyI9osI0YB\n2UCU0WpkgqnO/kRe0YrMa4T12pa+yAf7krP9cLOFDXwms7+D7NBx02YJUexE\nPFilGa2UJGUWs3ov+2Xlpoq7hya9jCx1oYMSgrOEexa4S+MrHRNsBZZ7gdSu\nNbUi8EY9CFi7hm4zf8Y+qtwlovdwQOUal7gyrZ7cutgph3tYwh2RLG/V1ZBi\nwuXRi2FfqvsxkxYqv8qoTDUZBlWaqfzIUTfAFHwAJauGzZ9Xln7lYUOxcQ3Q\nmfIRmSHPxnDiyaYsEJi5bUcouZdwGmhNnsA2/Pfp7AtyoMGQAUTL3/bBzc2e\n1N5r\r\n=AIUx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.56.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.0","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.56.2","@fluidframework/map":"^0.56.2","@fluidframework/cell":"^0.56.2","@fluidframework/matrix":"^0.56.2","@fluidframework/counter":"^0.56.2","@fluidframework/aqueduct":"^0.56.2","@fluidframework/sequence":"^0.56.2","@fluidframework/test-utils":"^0.56.2","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.56.2","@fluidframework/test-drivers":"^0.56.2","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"^0.56.2","@fluidframework/mocha-test-setup":"^0.56.2","@fluidframework/container-runtime":"^0.56.2","@fluidframework/driver-definitions":"^0.44.0","@fluidframework/ordered-collection":"^0.56.2","@fluidframework/register-collection":"^0.56.2","@fluidframework/runtime-definitions":"^0.56.2","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.45.0","@fluidframework/datastore-definitions":"^0.56.2","@fluidframework/test-driver-definitions":"^0.56.2"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.56.2_1644451285473_0.1014634983972722","host":"s3://npm-registry-packages"}},"0.55.3":{"name":"@fluidframework/test-version-utils","version":"0.55.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.55.3","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"b5811af4b1d03e0b10932e744b94fa5d92ae9649","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.55.3.tgz","fileCount":41,"integrity":"sha512-Tj0wFAMmfr+EWjAlTb9tUoE8uALZL/wWnXPNp4UhVAbyuvMLjsl3LtnmI7Si72AKK9ZuzWE/kHL0MN+fMko9Lg==","signatures":[{"sig":"MEUCIQC/vTQZoOzq1JWR9WI7fam5D2gbJw62hCVRB7W7NdXIUAIgR0vDtNWG37wwhHzX0Ol43QwhOqfCBT/G7YLafKnqp9U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBbyMCRA9TVsSAnZWagAAZWkP/31cCDFcMl6GQjB7MUtJ\ndkPHXtKziTUpdqunnDQlXwHvXgxzZhs5R/dwDnI+cCz7q1dcEPZn2qB+Erid\nPsWyYUrqr0K1gR7zLllm+c190peRZAU8n+1IHn9C9Md/HaCjpfLnvkf1gr5l\nNuiEFzkNs4krq24JPElpRZA4XZNGUbIzMkE4vxaghO2wUNl1cMXMkGlOUUDf\nKkUT0hk5j3puAx0HtC3GNUY+uIvehhoPUEOx73OQutdjuFmM+p1PjBgmaCBA\nuBCYaenqTlDlMgNv++/Qn1JTEFm8dZbrghUYdA9vXXtnz8GzROxQBfmYsMuh\nLmu0sQeXDIoXmue8xsxLG6ZrWlf97HtAZathRKcwPIjSdAlmqAf4dXCr5YU2\nxaEF0AHlLRG6AuxOR2wevasRLpuL6rCMxxvLwmMzpYKzD1ej+pFRBGKomW87\nhcjSiCjSj4RyTYC/voKrIrXnYNePCBI36QYUxJ1zjUXjGCV94lhb4JpzwGNH\namPcB8BmtBSKPKy8pZvSE6d9AdnJdiMR9oZtunD7Fh5S6xKRJ8XmTyqX1xC+\ny/tDNb7Jt82fddFRetYfywoLnd1YW3ZuPXKiTPPpfk4LFYZ2F1ytSPT9ClT5\nu3nHXuMiL1SNPRLnczkYllF4Ou+f76DEb5vCn3gpqpuTvNZGSgj700rGJa7S\nUmf5\r\n=zeqp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.55.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.0","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.55.3","@fluidframework/map":"^0.55.3","@fluidframework/cell":"^0.55.3","@fluidframework/matrix":"^0.55.3","@fluidframework/counter":"^0.55.3","@fluidframework/aqueduct":"^0.55.3","@fluidframework/sequence":"^0.55.3","@fluidframework/test-utils":"^0.55.3","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.55.3","@fluidframework/test-drivers":"^0.55.3","@fluidframework/core-interfaces":"^0.41.0","@fluidframework/container-loader":"^0.55.3","@fluidframework/mocha-test-setup":"^0.55.3","@fluidframework/container-runtime":"^0.55.3","@fluidframework/driver-definitions":"^0.43.0","@fluidframework/ordered-collection":"^0.55.3","@fluidframework/register-collection":"^0.55.3","@fluidframework/runtime-definitions":"^0.55.3","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.44.0","@fluidframework/datastore-definitions":"^0.55.3","@fluidframework/test-driver-definitions":"^0.55.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.55.3_1644543116017_0.18578252855867294","host":"s3://npm-registry-packages"}},"0.56.3":{"name":"@fluidframework/test-version-utils","version":"0.56.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.56.3","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"8a663b358b2e0042583b601a76b0fca2edcd1760","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.56.3.tgz","fileCount":41,"integrity":"sha512-eGX9zTeqQA3hWTj8Gx8BsrsRezok46Smd/GO6KMLS5rf8ZNc0lfzJybxwWxO9CSHBJ/h607Kug0fSHE8JyBG6g==","signatures":[{"sig":"MEQCHyAz9SxhHpJ+KszvddmlzVZWuUoiueu36cYOFBGDH64CIQCcXCM5mcDYLSQEtZMsFZzFGg+0EOo938DcF+bk9YT9Vw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBb1SCRA9TVsSAnZWagAAQssQAJwJiV80tMz0/hmWfhDa\njDgGKQeFvJiAS5EQelVToZhFVvOsqsE4sOFbwlIhYU32rCmx4jhjiE3nvMwZ\nvMNB7Xe8Egx4dQthuX7IadsxIV92Ao+qt6boryFz1MjahOzKI6lwjwt2ewNN\nrHw32G4GmsfH0nO1H5njnFs0f51rAVBEENg2ciAdpLi0ou7jggQ8dtFegC3g\ndA/pa4EA3vCd61eFUl7/PIhUpn4Finsl9SyAUNMU6mEAPrlemniwy3bSuX6q\nzbSF8v8eGOnhWHUVA3TL5W5SjIZp65o76zMeg8a/JsU9eQk3uD1OH0bq+jQG\ntLLUB64A5GD5fxR44dy/7u6oe9GqIU9N4pihJPyXsa6d66kj4Z5DOlZfvLH8\nWkGVruwGab+Q/9vtBMMm1CXjnfLtAhePu4jo5QFYo8furzCfTrrKlcH/UVsg\nkFmYNnbGH1/4Hp7jPWbvTpmjLtog6chI9iyTKZWQLUZshWPTs9mTQivfpQbn\nbMhcwbS6pHV0eFo+B77DoDKqejjbPMY3cZbbF5lcgU3uEd9YeTi0x0tDcRW1\n1bsco7LhG7Q5ljoTOlm4OXsDJhJ3s56FlQcW2PrDtrb88FWFiOqHZiF1WTOL\nKhlBYDNV/dG9LdfoJ/XNZ0+dDSwbG2cB+k16M09BGpNVXLxDgN7HG8HndJ8Y\nDTDv\r\n=r6ck\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.56.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.0","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.56.3","@fluidframework/map":"^0.56.3","@fluidframework/cell":"^0.56.3","@fluidframework/matrix":"^0.56.3","@fluidframework/counter":"^0.56.3","@fluidframework/aqueduct":"^0.56.3","@fluidframework/sequence":"^0.56.3","@fluidframework/test-utils":"^0.56.3","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.56.3","@fluidframework/test-drivers":"^0.56.3","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"^0.56.3","@fluidframework/mocha-test-setup":"^0.56.3","@fluidframework/container-runtime":"^0.56.3","@fluidframework/driver-definitions":"^0.44.0","@fluidframework/ordered-collection":"^0.56.3","@fluidframework/register-collection":"^0.56.3","@fluidframework/runtime-definitions":"^0.56.3","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.45.0","@fluidframework/datastore-definitions":"^0.56.3","@fluidframework/test-driver-definitions":"^0.56.3"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.56.3_1644543314125_0.19714518819054683","host":"s3://npm-registry-packages"}},"0.57.0-51086":{"name":"@fluidframework/test-version-utils","version":"0.57.0-51086","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.57.0-51086","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"63ec2eba9c382d765a0e65a311d3437e96c7cbd3","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.57.0-51086.tgz","fileCount":41,"integrity":"sha512-7tGvBybo3P761cEDfKqRdJMcX8qUtsE5z6cLpgDqHcYey9Qg1oB1Odsu9FBxNB6ApAq4+fYre4k2vQBoxT/5bw==","signatures":[{"sig":"MEUCIB0bjeV8qR7UtPb+b6jogp62i6+UIknyWYPj8fPWceEIAiEA23SorhZzA2tiXOBZbbq1TlXHuvPSrcTfXbpM97WdD54=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148836,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBwpNCRA9TVsSAnZWagAAuBIP/1Ipi0Y3Mc8BgDYJoQO0\nltNG3ZIKY4bX/2kpQjasPIi1PtMzLQGPUwVI8ttplDT9Aw2xslbljN8nrPDF\nfPMBes6S10otdRGId9FZdoJ3ou7tQS+PqpZKepZhp2x1Qkd0vMRL/DCPbl4s\nI8Btmtj9f5ptzugYPx5/IHbmrEFP6Nl5cH1Rn9HH+9nWPgGP/IHQi4l2o8xs\nisHHbu14gpOhJ0cScu3KNi3lXGgN6WdLkDNM+ScicJmg2uchljGoPt+V+Tou\nz63aJRlhmQcXXN9hG5va5X1NwQiZ0a76slpsMxmP92YquwRKo+8GGcCRTqTI\n2bfcO7ChsOK2s2t7VYJ+0pL1EkAXkDArePbZx44vIyTMLJlSId3ZJojG6iwR\nZDHNCtWljkLdJbf1celIEyxfSjsoTGa7TedNZZsZqJfqhfzcL4lSK/P7mjKL\nY7QZs+f8D8Pcz014wCh4WuUYC8Qaajj0bCy4lQFQUuWzKHmwf3I7tL4e0ANW\nhmwjzyae6Cmb4I3q7836DjGLQ+cW71P0zJWv7RinjoPlFt4Hyv0TKNQCHxdn\nbPryRxzZ6Fq83FscDs/y2Q4B4dsgajyn3s9NCQ9PI/6OPbjfNId0oXZlKXfV\nbI0VV1ZWINypJCnV1sHJxRiVOZvGriz6hE1ehGSRTWwoa8IpIUBEEOL+BpTj\nlLxt\r\n=h73X\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.57.0-51086.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.0","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.57.0-51086","@fluidframework/map":"0.57.0-51086","@fluidframework/cell":"0.57.0-51086","@fluidframework/matrix":"0.57.0-51086","@fluidframework/counter":"0.57.0-51086","@fluidframework/aqueduct":"0.57.0-51086","@fluidframework/sequence":"0.57.0-51086","@fluidframework/test-utils":"0.57.0-51086","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.57.0-51086","@fluidframework/test-drivers":"0.57.0-51086","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"0.57.0-51086","@fluidframework/mocha-test-setup":"0.57.0-51086","@fluidframework/container-runtime":"0.57.0-51086","@fluidframework/driver-definitions":"^0.44.0","@fluidframework/ordered-collection":"0.57.0-51086","@fluidframework/register-collection":"0.57.0-51086","@fluidframework/runtime-definitions":"0.57.0-51086","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.46.0-0","@fluidframework/datastore-definitions":"0.57.0-51086","@fluidframework/test-driver-definitions":"0.57.0-51086"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.26.0-0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.57.0-51086_1644628557135_0.24219388686181298","host":"s3://npm-registry-packages"}},"0.56.4":{"name":"@fluidframework/test-version-utils","version":"0.56.4","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.56.4","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"72fa88c8a05259693b0ccf6c36b38bb12fdef095","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.56.4.tgz","fileCount":41,"integrity":"sha512-kCXUzPVCP/euASIBWxpcLcp+d6SKDbpxyBKIxEag3dfP29hKNxAaaJY/midrM2moDDFFQlH4cGDofRK7cLoEgA==","signatures":[{"sig":"MEUCIFc9URkg/FIwM43TSUwZKRPdLquKH9cCBTjW8plspC7EAiEAkjyKtsnzpOdulTQD6YYXgRc2pzVroox8vn20CAkRMY4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiDqlxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoM2w/7Bne9ZEgg8SDky7dJHoFHwxGsEXSXhJ54cGWs8dl+FIeWVmIV\r\nqdrxYRaEDwYMqQCIkQgqhlUcuvXTrRuOVIdI/EcepEPMvA2YCZdym0pi2xDx\r\nZ0Tr6POvVQktxunZxk2C7nLcFBagzHBDMlpZRCtyV0oB9mqBgK6dsMiLzqXt\r\n/d3FFXnJwn0U6JZYJF5/6Vw2XN+JcJJoGlxOZFzz54vjMJmK5h7nwtT+Rl8k\r\nj34Chlf4WfzcUaDicDcTqIXRdnb1OsyuETMpQQjmVx3R8Zp1sRIIsfqBGRBq\r\nFFCWxVaTV44HuDmvvUBv2djk90Ekxa/W3tp7VQaVBM6auoFeI3gFC1Qhip8O\r\nOPUMdDd70USdX4HY3/Fmn9TSEJD68AHiaVnnZ5WfnZeXx3yLsCNjPwylzrTH\r\nb2BumG4icSCKZ8uHdfirj+PQ/gC2dp9hDSup18PIYXVpLexdOVDUMhbtTG3R\r\nUVeoabq1/FeDuI3/NoTDVqunSsb8nVeMELPvQE/YZNB+Mbvh/SNgEoCkqUnN\r\nSfTczsqPPZ0zBYM5sdcTm6TPIZwzZsQC0VcrGHj/qYAvBgzPPsO0j7rACxVx\r\nxsyYsAe32CkaTkFWHS/nj/JXUvjiJ4JUbL8Pf2moG2JAz3DLEvd4jHaQROKc\r\npz5OB7WeubhYJRPMGVdvZ4yIb11joLlXe3g=\r\n=apd7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.56.4.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.0","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.56.4","@fluidframework/map":"^0.56.4","@fluidframework/cell":"^0.56.4","@fluidframework/matrix":"^0.56.4","@fluidframework/counter":"^0.56.4","@fluidframework/aqueduct":"^0.56.4","@fluidframework/sequence":"^0.56.4","@fluidframework/test-utils":"^0.56.4","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.56.4","@fluidframework/test-drivers":"^0.56.4","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"^0.56.4","@fluidframework/mocha-test-setup":"^0.56.4","@fluidframework/container-runtime":"^0.56.4","@fluidframework/driver-definitions":"^0.44.0","@fluidframework/ordered-collection":"^0.56.4","@fluidframework/register-collection":"^0.56.4","@fluidframework/runtime-definitions":"^0.56.4","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.45.0","@fluidframework/datastore-definitions":"^0.56.4","@fluidframework/test-driver-definitions":"^0.56.4"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.56.4_1645128049230_0.3186910175261424","host":"s3://npm-registry-packages"}},"0.55.4":{"name":"@fluidframework/test-version-utils","version":"0.55.4","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.55.4","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"11c2a5619c76fd039d409677656de7ccd023903b","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.55.4.tgz","fileCount":41,"integrity":"sha512-nHXyQyBVCTieAOmag1yRGV6yT+8KL+exeK2OqVT7orsmzfajMJfAUOFX+b4ketU8/TZ5Yg53b2cJA6dqmhg7Yg==","signatures":[{"sig":"MEUCIEMa4UToXj0b0xKijQ4aLEvPbWFLO8sFpFeBIsLRyI9HAiEAzMpjgYiQ35lErklE0ghR3qDt7L8jBnnqbNBmBTTEA2o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiDrtEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqVKRAAhTVHPoFo9XlD5bo6t8UAv7WlxEc1Ckghu8orARmnolYpNeSO\r\nMCrH0t7tnaQiXGr3c8aAHgFF84TB68AXqGk5TBrBJ+8mDbKF1t2L1DMqxr1I\r\nrCAjy22HKoUR/P12jGkVhPmvqzhDNxeq3rhncsONwMyJM0+q7jYBvYU0I3j9\r\nuHTLH0k5D7VXOx8Icxi7+oEcBG+E77Ggj5CbnHkJNJcC51HkAQU/LmdT6LLI\r\nQfsdb6bJo7mzZstQdH6/31NdP/vvA3YmEZ8KZJcDG5mfTlrx/sz4VqCoD4gd\r\nbR3labJFUIjyZEAj2Mzeip40RWcKJijoCgeKWvccPJrG09PI6QrWy4hSp/tG\r\ntVJbsj0ZB3Um+CkE9TsC5A5G54E3H3+dxPiP6C/JgYRNiLwRfLTVrcIJLbFQ\r\n9gzKrKq15BcDPwDPD8Sbo0OpLlBuviwfe+Zr89xCSqQH/KQLooK8hx6JgTW2\r\nPyXqpakLkKhP/vaGID3XMSiCXj6LwSz2MoaSZ+XmwOw4Slw2Ct1hA7JTYl6X\r\n7JyIB1U+McxKVj2DzGaAjzJ2W1c79xH7aUY/G9g9NVzRqFuvfyUukeej+74e\r\neTRL5HDunCvGI56ZSmEL/N6P/uUsB4i7VXp59KHUfck39SWCiLmw02GMIz6C\r\nMDZF+/h213FqrMfmf78jdxO+2V81cnnPLFY=\r\n=+7vw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.55.4.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.0","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.55.4","@fluidframework/map":"^0.55.4","@fluidframework/cell":"^0.55.4","@fluidframework/matrix":"^0.55.4","@fluidframework/counter":"^0.55.4","@fluidframework/aqueduct":"^0.55.4","@fluidframework/sequence":"^0.55.4","@fluidframework/test-utils":"^0.55.4","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.55.4","@fluidframework/test-drivers":"^0.55.4","@fluidframework/core-interfaces":"^0.41.0","@fluidframework/container-loader":"^0.55.4","@fluidframework/mocha-test-setup":"^0.55.4","@fluidframework/container-runtime":"^0.55.4","@fluidframework/driver-definitions":"^0.43.0","@fluidframework/ordered-collection":"^0.55.4","@fluidframework/register-collection":"^0.55.4","@fluidframework/runtime-definitions":"^0.55.4","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.44.0","@fluidframework/datastore-definitions":"^0.55.4","@fluidframework/test-driver-definitions":"^0.55.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.55.4_1645132612753_0.2738527094717389","host":"s3://npm-registry-packages"}},"0.56.5":{"name":"@fluidframework/test-version-utils","version":"0.56.5","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.56.5","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"9cb7a955c566666fc0b51aaa9b96abc6130a0471","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.56.5.tgz","fileCount":41,"integrity":"sha512-MDHUKgAOHRtcGVQNdQfHI+8BbrU+YwEyw7Z90CW/rPOvWnvNgq6FXNfB3cLVDH8x6Yu+RPW4si8EYHTWPn4ilw==","signatures":[{"sig":"MEUCIH4zz2ZqDbevaubCf2N6C3jl7QwJPNc4ODgCwQ3SGRvjAiEAzjl2cJufqGb0kcSaYq4q1vrcMBs4ritWRdLWYHQoJUo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiED07ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpDUg//RsaTrGskZf567w1rW7MT8scGv2S417ERl8yMCTSWWx8J0zHw\r\nkJq28+brKpj/GGzIg9TsnAham7Ot6VJZObkCJiHf1eIzs5TNAK6xxv4S3EFR\r\nipREkfPTK7rJIkMEMKXNqNAaefrKs3tFDghE2u11wjQypy1RJkAZEySkxy8D\r\nlsZU0Zqzvn3YNrlaRPtRZz1Kn+NLoDs4i++D8LN+tBSzePpgYH0YXqiWWuMW\r\nohw6uru2EHdHzRiK54SoSoFHZAqJHdTtovXr8MyG4nRhPd2EhKBDXVUKhCO5\r\nGWyHA70R2S3dHX/99Reks7dUFIPYW//1bU+hRJ3arb+gplYLq5elqKnKKKbg\r\nqd/kkIrubV2F/uQg6dmMAsIAF32yLWjhD9lpJNZPtxLk79Q6kabxarguxEHR\r\nHzGp7vDn9DIlqasjzAUMqsgD9jRS5fneTSAVxrz+jn8PU+crOoM2iwO9M7nj\r\nEGjmldjwgO9gLAszzQ5s/v1KgftymdJtoYmwWjAf0SQPLnB+DX3deSkFGc9G\r\nHetNnjCECHGEb7do8ZBCLU0keIUjQNR4ZcD6XilTsRjMYSdWK+GIJ8Xh6D8O\r\n+TM8pWzCOJ8T7zCLnqQXG3DSI6TbuHdvoreko9gJRsAiPm5kElqTOsWykE9j\r\npF2/BHPcTUA5/xPt4sqhPdwd1OwHm7V2ywg=\r\n=ON+9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.56.5.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.0","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.56.5","@fluidframework/map":"^0.56.5","@fluidframework/cell":"^0.56.5","@fluidframework/matrix":"^0.56.5","@fluidframework/counter":"^0.56.5","@fluidframework/aqueduct":"^0.56.5","@fluidframework/sequence":"^0.56.5","@fluidframework/test-utils":"^0.56.5","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.56.5","@fluidframework/test-drivers":"^0.56.5","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"^0.56.5","@fluidframework/mocha-test-setup":"^0.56.5","@fluidframework/container-runtime":"^0.56.5","@fluidframework/driver-definitions":"^0.44.0","@fluidframework/ordered-collection":"^0.56.5","@fluidframework/register-collection":"^0.56.5","@fluidframework/runtime-definitions":"^0.56.5","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.45.0","@fluidframework/datastore-definitions":"^0.56.5","@fluidframework/test-driver-definitions":"^0.56.5"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.56.5_1645231419270_0.30403013432477755","host":"s3://npm-registry-packages"}},"0.56.6":{"name":"@fluidframework/test-version-utils","version":"0.56.6","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.56.6","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"7c2556a58ea61a62e42de5f04302a20bfb856d4b","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.56.6.tgz","fileCount":41,"integrity":"sha512-VMzb67vwDAAqRLq4MHAivwhWLB+CqJSM5JpAxjpiu3KIK3mp/gTwF+X0vVux3ZQrRiOmMjOMwAsHeBKIB0BKiQ==","signatures":[{"sig":"MEYCIQDnkuYasMuXJxeNOD7FpcC31PEQIlepzLOZjIJEBlDD0wIhAIImD1XzHDGgLKXICMQPeT/J8gsTqhxvjT2y+LLNpu7J","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiH/n8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpLtQ//QO93JBo3hi/hDXpBSJRXLM/tL9Ik7/SZ5tJ9PyFgZjF37nAs\r\nWElYaLnz9PcQ3+oVV5C0Kpr0l0frmuzj3D78U/BmQ+ysZtGeBXheSBDb2M+V\r\npHmaRCwex2ipdBxHqxnUoWoUuwdp4YbXZWyqxoDEFbK9vKdkDBwc6fLdvvzN\r\nnuKXiaBp3lp+oQfIF+O0o621CFPKucl0JuNBQMmagVnqXVu1cLRwEb5huaq2\r\nQ9UwMMDKQwiPlb6MmISTLJTBWi+PFIr7AUoIaeRvSgivglI3WmcdBxC9P2Ow\r\nbcWDsRn9STtb2566SyNQRVilfymJriFelUHUPYV6BLAIOJqeVurhbEkRF0TQ\r\nRBhdiYgWLwIpvJnsHllP9e4F+NrNLkhJhMfyNWn+o5zejBwCHutwztwior7B\r\n4vSUgFuAS9TQnMELnl/5J4Zj8Xijy8CpweTHnJHB74UJhVIKaUchVOBj+7/c\r\nxJqOgVH222MdfvXLhhSUv4UrMRihlNgcUrZuEmyPX8ARmZfYw70pnMBUPnEc\r\n+bvYw4m6FUwf41ATiRXTbsJzidHKVhnxuhsCHwN70mziVI8z1nWghth9Qs57\r\nmkVU2NGGOSYL4CO9hOtRHyhrwCRtYaRw2Ryg4aZdlfmc4e40cxcN2ZllJgLz\r\n7aCN5ybioNDhqZy/WRxyhsGfw4u1+auOen0=\r\n=cwWG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.56.6.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.0","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.56.6","@fluidframework/map":"^0.56.6","@fluidframework/cell":"^0.56.6","@fluidframework/matrix":"^0.56.6","@fluidframework/counter":"^0.56.6","@fluidframework/aqueduct":"^0.56.6","@fluidframework/sequence":"^0.56.6","@fluidframework/test-utils":"^0.56.6","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.56.6","@fluidframework/test-drivers":"^0.56.6","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"^0.56.6","@fluidframework/mocha-test-setup":"^0.56.6","@fluidframework/container-runtime":"^0.56.6","@fluidframework/driver-definitions":"^0.44.0","@fluidframework/ordered-collection":"^0.56.6","@fluidframework/register-collection":"^0.56.6","@fluidframework/runtime-definitions":"^0.56.6","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.45.0","@fluidframework/datastore-definitions":"^0.56.6","@fluidframework/test-driver-definitions":"^0.56.6"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.56.6_1646262780421_0.7154858234710479","host":"s3://npm-registry-packages"}},"0.57.0":{"name":"@fluidframework/test-version-utils","version":"0.57.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.57.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"7883c1edbd8f15c27e7a01065704e667a188c188","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.57.0.tgz","fileCount":41,"integrity":"sha512-5aeVXJ9kFKGujDAEKYqTAPTeeH9YJ7SAyJRNzjkIIstfBptvISrHN1QU6kQ+LMJZCVO0OWG5yfg6W7eeiCsCWg==","signatures":[{"sig":"MEUCIQCkzDWuPt58I3SBPSt2OGiqcO8r9PctX1c0RrbD3VkWwwIgUlrxuclkZ80/ha31FGpqX8LdylgF408gEEMP/duQYF8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148710,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiIAU4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpJPw/8CR1TAfKhhr4QE9XMdqsfLlj0gpfuqbLZ9LwYAIYyKT9TZ3Dx\r\n8lcebdFhQTJ2UVwRKU2U+atQNWnp1vqD6Aghvh7qZfwLOQJbCcUSfy2oZmPy\r\nxb0SpH+lp3fY9+It0550cUbbXQQJsfK8jP0jlv247VMh3WW7Z4mqjfTcb8GJ\r\nwVztum8h9x8Nz+ddF/k8b+5luVnH6bhmg85dYvkp1eF2ZheHwOt0kR6G24sD\r\n/p/Ddp0xEuMBG5dd2UCd/PQ1xNwWzzJ5nc8dNjPps6ctGkHiJ4TtvkxO11p7\r\nlIBNfIpLczdwtoVDI7M34TCpmeoyi/Hru241aZEUJc0TMg202OMwrGnAMvRl\r\nuWbazEwVmG5sHVMqOrl9kRL0R0Je79ErUmcdvBD7seSq8HUY4I8bhs1c7hJO\r\nIEtsM3h6N+3M39R7fpfXtk90fmz+meW8a1E7yKd1/YzC0i4cI3/dWZdwBdhH\r\n71gmY9awXXlexs3PDp2rL8abfdISA/hTacX0FMSxU84d5DtBCK1AMDDdrKCx\r\nlx4kcwXRDSAdl6RTRJfE/6cbcYk7gtjVxhflZK6u5azYdQFYGzf1t9dev0Po\r\nF88ZZL2McAiizCkhzEvkym2/resq+Fk/746OZESzhE9Yh64C4B3KAP9nRiOa\r\n0iiRBXq3vvyEowfEo/0KHlPObABqNhf1vJ4=\r\n=+nv9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.57.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.0","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.57.0","@fluidframework/map":"^0.57.0","@fluidframework/cell":"^0.57.0","@fluidframework/matrix":"^0.57.0","@fluidframework/counter":"^0.57.0","@fluidframework/aqueduct":"^0.57.0","@fluidframework/sequence":"^0.57.0","@fluidframework/test-utils":"^0.57.0","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.57.0","@fluidframework/test-drivers":"^0.57.0","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"^0.57.0","@fluidframework/mocha-test-setup":"^0.57.0","@fluidframework/container-runtime":"^0.57.0","@fluidframework/driver-definitions":"^0.44.0","@fluidframework/ordered-collection":"^0.57.0","@fluidframework/register-collection":"^0.57.0","@fluidframework/runtime-definitions":"^0.57.0","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.46.0","@fluidframework/datastore-definitions":"^0.57.0","@fluidframework/test-driver-definitions":"^0.57.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.26.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.57.0_1646265655837_0.9050886924335513","host":"s3://npm-registry-packages"}},"0.56.7":{"name":"@fluidframework/test-version-utils","version":"0.56.7","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.56.7","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"8983d1066cdcdd8ffcbda18970511b85a88e15e5","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.56.7.tgz","fileCount":41,"integrity":"sha512-yA3I9XqysNx789T5flSX3R9U8GTcegCoA+Wh6nO13w99kFm6ti4h3v8NOuTyFYjTbDk+1CFhEL5ZvjUiwlB06g==","signatures":[{"sig":"MEQCID+KL0yNsJrr7X57Groowloxnkmc3F5ttrVfX2v3ICK5AiASidLH5KhmSKwsxk2OJ7Oa+Y0aIWnyr6uIs5GoUYGI2g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiISLBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr6Yg//XbflMojwvKiPUDKxlpC+eWoOp/2TPdqQKCf0sSx4BnVvMDO2\r\n+HzWGeNmHSqyG337VbxGu2Dw7PmUIcraaaZeaz2wC/ZczcmwBKZhbeEvSjMX\r\nsOsKBgafwuLfJwWG4inRWRliFqUHQgPwz8uqmTNDVxeoBzP1rSCRAqhQneOj\r\niXaratRoculZa0zgPVX+4F35ojBhk7yDPO1U3c1PnxQYb1KDcmZrfaq8TjU6\r\nUgOen8j2GURoe1dRHZy0EarQLI4By1fmhvympUrwCi6DlCEvSwo4AMkw0CA2\r\nKVAC3QoohrZL7Rz0y9I4hgnqY9bAYE/+QivFpDw1QtVrSrkBc9oNaxzY+iHo\r\n1xX1jH+0rFMfh83euCZMsi4dEoG/8UmC/FUXLghC3EM4BILO2RgL1e/rJkpc\r\nyT4x26MGXl1c+gqKRilt5MOr0mwWO4rYjrCjZiFCVW6MdaPhT/xUBLiLT/SH\r\nrBNisPhqvF2NJD9hyyDbUltwm6etsc8NuBoPnFw3b3mqh/29F+3LUqOjz0d/\r\nm5mYlUYi2RoZOY+U4Hjo+7OwKe3Aqr2Inn7grGCwveMrEFS6sGLvu1HpfqGb\r\nmlCFsCk3k4J24s5TxJJMS5octTcrtAmW/AelwNsoTC5ZaQ/v8Er3zIKzlU73\r\nNjBlnUsqeCc0eEP2MA382P/i2MSGxtDNo24=\r\n=L0AR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.56.7.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.0","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.56.7","@fluidframework/map":"^0.56.7","@fluidframework/cell":"^0.56.7","@fluidframework/matrix":"^0.56.7","@fluidframework/counter":"^0.56.7","@fluidframework/aqueduct":"^0.56.7","@fluidframework/sequence":"^0.56.7","@fluidframework/test-utils":"^0.56.7","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.56.7","@fluidframework/test-drivers":"^0.56.7","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"^0.56.7","@fluidframework/mocha-test-setup":"^0.56.7","@fluidframework/container-runtime":"^0.56.7","@fluidframework/driver-definitions":"^0.44.0","@fluidframework/ordered-collection":"^0.56.7","@fluidframework/register-collection":"^0.56.7","@fluidframework/runtime-definitions":"^0.56.7","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.45.0","@fluidframework/datastore-definitions":"^0.56.7","@fluidframework/test-driver-definitions":"^0.56.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.56.7_1646338753373_0.6198180145288428","host":"s3://npm-registry-packages"}},"0.57.1":{"name":"@fluidframework/test-version-utils","version":"0.57.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.57.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"f5fd56666d4da0b7dde24c3d3bf241df44013ea3","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.57.1.tgz","fileCount":41,"integrity":"sha512-L/7ox6buEQUpwqDgb6VF1H3H4SbgZ42Me5eIAA81UIaV0HcKjv/tAtBHqLLHTWkYIt4QvZR0zlY7kkicbclqnA==","signatures":[{"sig":"MEQCIFVvrPaKLe+TTx4okTQz7CI8w20Mw+gGoxfpAkS4uYH9AiBjlOYzNLluLF5GSCXrPGFcDlkZZ+ouJP9wwxIbM2euug==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148710,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiIXAWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoNOA//YoIwtmLIeQ8FtG3FmOt5OnEiZ6LgpkTr6lFp7k5AxAoHMoIz\r\nWXCT/GYYGr9ll9AbolC86EaF9soDuoDZejy/X0eelyyjET0gI8WPPfv/gCLT\r\nC6KWnkBP2+1C1HSo+NNl7/3UAISpFSxnCo79CdWQykT7ogqH+2CXiT1tkQS2\r\nMVB90/wjrOR8Yk34m9T9BnVGXfFnaGfOL9ZaIOqbOEJ14yXmblFVNU/Dva2/\r\nJ7mutvbKeVm5A/WEt2N1xpk+ne35tX+GKAiRFMOCFhDbRJIzsUzQtzMzXEAS\r\nGVpklbzzrugKRXLZ/yncA5za22PHIqpThAjWDRCSsqGeIDG0d2Hv7rujkwyD\r\nE/V6mA+H7hcPxn3lDtDsT4wrm3P/Omuu3gwqTwK3rq26VB3OaTIb/fKeFfrG\r\nEvG6F+srhDhpzMdHssByHCGnIQb1Uphwt7dTNfdyHWhY3akEugUfV26h5NIA\r\nZpP5cRxE109r/HHqL3lFRjIltrBQCZkBmKHT7LbopGjvBTzHiHgxmq1gsBqw\r\nnxI8zhT/vQdhZFLwG4M+PLWu6wfVgM1tHUvGHybNauH/QxMr9b7D8QrulbUu\r\n0S5lQ5wUgO01mdLM/PrzThuC8VqEEYofRqR0RT3wuNJLKht/0Y6a8V3EVhoo\r\n+Noo7m7IrVBCMpOk9tP8Jw1/QXZV6FulJzM=\r\n=U+9Y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.57.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.0","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.57.1","@fluidframework/map":"^0.57.1","@fluidframework/cell":"^0.57.1","@fluidframework/matrix":"^0.57.1","@fluidframework/counter":"^0.57.1","@fluidframework/aqueduct":"^0.57.1","@fluidframework/sequence":"^0.57.1","@fluidframework/test-utils":"^0.57.1","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.57.1","@fluidframework/test-drivers":"^0.57.1","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"^0.57.1","@fluidframework/mocha-test-setup":"^0.57.1","@fluidframework/container-runtime":"^0.57.1","@fluidframework/driver-definitions":"^0.44.0","@fluidframework/ordered-collection":"^0.57.1","@fluidframework/register-collection":"^0.57.1","@fluidframework/runtime-definitions":"^0.57.1","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.46.0","@fluidframework/datastore-definitions":"^0.57.1","@fluidframework/test-driver-definitions":"^0.57.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.26.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.57.1_1646358550171_0.4290131161624626","host":"s3://npm-registry-packages"}},"0.56.8":{"name":"@fluidframework/test-version-utils","version":"0.56.8","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.56.8","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"7c39c649be5f21e6189255b01fabab030bc5212c","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.56.8.tgz","fileCount":41,"integrity":"sha512-5GTMt0+8STpc0JWgvJykP01RasmN0nW5H2+ZFnHQfnDh5IaAynfYYf6SFCtbuinD1tSCi5aea6WKZDGtW+LRkA==","signatures":[{"sig":"MEQCIAcXtKyXgz3ff9mjZSBU5qlfUDQiuxwfkK6icppRDVB0AiBraJ445725PopwPs81rZTwbiCRRaze+Bx0IH6MqM5OkA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiIl76ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoYag//WGgoOUeHjGwyJ8aaJoxjVXGfbtEe9wIMRiQfOpLOSm6XOIys\r\nSxF3uRlKIYjPOw6w+D0SuRkfvBXyaUcLjGyhM5Ky50oDorSSmytwUUbwuCMe\r\nn3BBdaWS6LBMNW96KYy7a6BQU8gKHa+5ea9XsanA/NpNF72LE2ALE7cBYw8G\r\n96SPXNhajsbxlbwsxmilThm9RThobp5+WD1uRxFWfq6jqHebsUZpX52n3TSw\r\nvA9ChqHHzgPOvBHm8b4RWRRVHXNfIGcgGy4feFSVwlRiBIkEC/X+MNmoPhA6\r\nhwc85CuozXhGownimF/27v3H8ujFAKdZoToqR77ke6xW6+bIcIm6xr3ZsRbM\r\nzGVhbcOYPU7Wdw4ZMBO8smnWSDj73Kh6urZ+UEemYAgwfeOVXiLGv5LtkK1G\r\njX+u4xwTebL+UDKWfckVxLfA2squLOhd3Dy4sAZ0QZhTTgBBDHf7ePhwo+Da\r\nOybKev2E255fiJNuISqcrj7F6EaJMzVN89ksvXMK/uy9ar8D8QneFUySUNVb\r\nS7s1WVlgJVcIOxxmGnCHQiWqsKkdt9kCvl5IRwb5kEyN0GrZGOZAR6FEKfoU\r\nxd951cwMjZEQB8cUWS1JMS8ObEBid3Gr4yKO10MNxLy1EfVTHs6MXOqKErb7\r\nRmXs3FMTygkCWVSTxB7/T0YvBXspKdi6gpo=\r\n=NOdc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.56.8.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.0","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.56.8","@fluidframework/map":"^0.56.8","@fluidframework/cell":"^0.56.8","@fluidframework/matrix":"^0.56.8","@fluidframework/counter":"^0.56.8","@fluidframework/aqueduct":"^0.56.8","@fluidframework/sequence":"^0.56.8","@fluidframework/test-utils":"^0.56.8","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.56.8","@fluidframework/test-drivers":"^0.56.8","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"^0.56.8","@fluidframework/mocha-test-setup":"^0.56.8","@fluidframework/container-runtime":"^0.56.8","@fluidframework/driver-definitions":"^0.44.0","@fluidframework/ordered-collection":"^0.56.8","@fluidframework/register-collection":"^0.56.8","@fluidframework/runtime-definitions":"^0.56.8","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.45.0","@fluidframework/datastore-definitions":"^0.56.8","@fluidframework/test-driver-definitions":"^0.56.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.56.8_1646419705921_0.32857283712830543","host":"s3://npm-registry-packages"}},"0.58.0-55561":{"name":"@fluidframework/test-version-utils","version":"0.58.0-55561","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.58.0-55561","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"02bff76527f963cdee9f643b05a7a34ae48be694","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.58.0-55561.tgz","fileCount":51,"integrity":"sha512-svf1TZI+9vWXfwr54seVB2qQ59m26SedEI4+wtZ0F3noMW1aTDlvlClxzC9seQETD68CGUqrnQartgeVHKpMlA==","signatures":[{"sig":"MEQCIEKZmIBblblrb1h6Uuihea08Y4hCMbIgci1mUYtFDOWFAiBHxly7oV3k3G5dAN47WPdvGvhTSjXgpGY86IToNK9G9Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164201,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiInGkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoKPQ//Rf2UN9M61j2lpwzckUbbZseuYzi8493TCeYeWSeLAs0uMOBz\r\ncYxK7es/6yDwkFUc1Z7fwcHN8sf1Hl+OyYAFw8RKmEi6bWZqPyvqROsvzBZa\r\nGgzNR46fr3b8IXyEK3PUhIlTM2fooTNusR4Fnoli+mjHyUZmH9J6uMG3+nOh\r\nM+u4Wg/SFi0nk9JaC3x9coxZMJIoCwiMS5RvpbqNaLfZcXXlydApDtK4Mwrv\r\nc54F8QRWYpCx0kJZdJVwJzmPVzed50BkM+PLAsE9Q+ZhGMUHnsdQDok1nv+k\r\n72HRg01k9wGoomQk6+pkTYGSpM0DBbYgFVMR76lJRb+O/iNtBcMM9joWbQrD\r\n+FpI/Tpfby07eqRq5UrUAriSEq2LgvW0bcUItS6Ft6koetfiREQfT6MJlqEH\r\nNGb9XxYjaTlOQtuYGp6hjkphsS1bAPTrN2mXYFU0r3YGC0m6ppnPg6++nMUh\r\nFqoPHaqcoPqfdVsDzsPEMfk5y/rVCaec+PGCR2zCOj5aH4SV9yPV3rvwaZoB\r\nAsGe7szTyzgCDnD7avbGPU+wkGGrp11AyR21fuMIkPULurHYNopmuvCjxTfv\r\n4lacIgEwtJIpmmxd2uHHdMU8xZPgpru8CMLTW9uUelXg1uZg+Od29zJZMfXP\r\nHu/zRqr8SDRAF/WuljfcBqg+I120YSuOws0=\r\n=MxQA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.58.0-55561.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.0","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.58.0-55561","@fluidframework/map":"0.58.0-55561","@fluidframework/cell":"0.58.0-55561","@fluidframework/matrix":"0.58.0-55561","@fluidframework/counter":"0.58.0-55561","@fluidframework/aqueduct":"0.58.0-55561","@fluidframework/sequence":"0.58.0-55561","@fluidframework/test-utils":"0.58.0-55561","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.58.0-55561","@fluidframework/test-drivers":"0.58.0-55561","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"0.58.0-55561","@fluidframework/mocha-test-setup":"0.58.0-55561","@fluidframework/container-runtime":"0.58.0-55561","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.45.0-0","@fluidframework/ordered-collection":"0.58.0-55561","@fluidframework/register-collection":"0.58.0-55561","@fluidframework/runtime-definitions":"0.58.0-55561","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.46.0-0","@fluidframework/datastore-definitions":"0.58.0-55561","@fluidframework/test-driver-definitions":"0.58.0-55561"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.26.0-0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.58.0-55561_1646424483906_0.8239562959521385","host":"s3://npm-registry-packages"}},"0.58.0-55983":{"name":"@fluidframework/test-version-utils","version":"0.58.0-55983","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.58.0-55983","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"75576b80f051506f1b1a1c730819be6a7f1f0265","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.58.0-55983.tgz","fileCount":51,"integrity":"sha512-qyJHjrE32tSaYmm/nWTznoNEJRdjmjxd63D2NTUMTLCAtTf0dJRB8dlQEPor5p8BqO1F4FOZUoheuZiphns1iQ==","signatures":[{"sig":"MEQCIFL9+CkyySvgN8CYOvwe3TFPxdxbuql/Gg/Ig7JK5RycAiA8G3Raf4iJKA3S6EYCoKSj3Ugx3/RPmCeqWr07pBUXSA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164203,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiIrSOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq8hg//aEShAbSG2rkLPAPFFd4bg/GQTg5eVN4Xm61BxrXYKtPG95o6\r\nwmZRqUouBheAAnBZnd4N4G9bpeGNYLeH8oa6hHhiY//jlRxufQt7gEe7fee7\r\nK3w9A+M91pNWtvdnhFHoxyc4UzqyD6gRP8GsKALo2zfb3HXbJaDTH0w9Y3+i\r\n0g02YnWiHCDCen8f5l3B1PZnKSKcThTGnu1Fx/mc+D8lMBK9yIATVWMrpAQc\r\n+qpNYo/X47FRiELZXffk5SfH8ttZdFy0LUMVJPeoo5QAVhIIIalmLn1qXvAz\r\nGeB0b278dYufBTBtkWadtWBKr2YbWpTDoIIH725hhDCFcfO42Row+J/eOeNF\r\nTc3JLnjgDeRO5ykMlpDB6SzQsg8fIIbkeJo03nbz6HqLXyohqOza8/kfsVC6\r\nw0dvCEsDXu+cqs4+uE3R/TaZA9OenVF9ubcrJvOhUKzEq+xbaAllRY7NlDba\r\nz+8zKEiEbgJW1MUM5BSMyHXAGKUfZWR5Px2gxOjcM8R7lybKUzv7qaRgtioz\r\nR9gslDiaADRpU6QaQpxklh0jSXnJTEWXO04VGYN+TT6VvnD05T5UB3I+WOty\r\nqVkEuo46jqpTLZ/XnzT43oCU8ZlvpmnfttxXtLK24Tf7TEpqrWU1FNHdlpTM\r\npWOJ+UtQ7m5ke6BM8f1//C3zEu5/kcVFFP8=\r\n=FLe0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.58.0-55983.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.0","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.58.0-55983","@fluidframework/map":"0.58.0-55983","@fluidframework/cell":"0.58.0-55983","@fluidframework/matrix":"0.58.0-55983","@fluidframework/counter":"0.58.0-55983","@fluidframework/aqueduct":"0.58.0-55983","@fluidframework/sequence":"0.58.0-55983","@fluidframework/test-utils":"0.58.0-55983","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.58.0-55983","@fluidframework/test-drivers":"0.58.0-55983","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"0.58.0-55983","@fluidframework/mocha-test-setup":"0.58.0-55983","@fluidframework/container-runtime":"0.58.0-55983","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.45.0-0","@fluidframework/ordered-collection":"0.58.0-55983","@fluidframework/register-collection":"0.58.0-55983","@fluidframework/runtime-definitions":"0.58.0-55983","@fluidframework/protocol-definitions":"^0.1027.0-0","@fluidframework/container-definitions":"^0.47.0-0","@fluidframework/datastore-definitions":"0.58.0-55983","@fluidframework/test-driver-definitions":"0.58.0-55983"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.26.0-0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.58.0-55983_1646441614727_0.6401701652865242","host":"s3://npm-registry-packages"}},"0.56.9":{"name":"@fluidframework/test-version-utils","version":"0.56.9","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.56.9","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"df7ec6291cdd37aaf34d176bee935e4d7d4be543","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.56.9.tgz","fileCount":41,"integrity":"sha512-M4LtQ1LKtaKIyui+9ubtnZrt7MtjSmif8mkrdwbiV7NTgAk9p0IsW3tSK906pT3o2Zx1OCFBM0BMLoGQUeDZZw==","signatures":[{"sig":"MEQCIDITE8lztlLA5/2NbqcCe3z14dVjxCDPSVqNE8IQKh6tAiATygj+lDyd46l+zb2KPgMapxLMJAZCie69NHfS9/M2ag==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiK7ldACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo0Dw//f/r0fPUlFOYy9foUBGxnhc9e/VUx1aycAoGAYoBxuGsy0iAn\r\nsaQ0uFUWdiUYrrpziK0V7eBkk0oUPZMVmMnsrmfHmptxmpYbXlQBi+u9Fs76\r\n73p6haQKUarXx1u6Xm3TDHdPDF6hEeq6N+TScONqo2TPQQhqtMBd6IbCMyDt\r\nhVVJQWd88megO38eRutmLQ6PC1ZxE1ZFrDgsgVsUh0z33aXJxwYC7JJD7YGD\r\ntJZWZcck0cPgIQCLbm5wGMnNKW4SWbgHuNTZ93MiKHeGM5Ee5r/DPc5zLyCC\r\npgmyxaLgv/4q5ulbjFQn0URQkIiUPho9Cvn+/niYeP9S0WBeyccrcs91LAwN\r\nr6gIgPTQgN9xSS2JU6nRKwjPc7mhp1TukryjDlUj8GHuVS1OtlPo8RPzcnVC\r\n32mO9u0lG1+AzG/6w6odn87doMXYqKIG/dceoMGHD8pKmPFIZW/Fo8n4vcmB\r\nytQvCG+HOaPQpG7uMCGan3y5BcOTWd56rudxdnDJ+wDXEoAZIcwLydFZgtCT\r\npwxdGLYP4xM/Quiakmz/7ZXiK14cCjgtvmFbo53+raIXm4GL+Eua4DzdVuif\r\nxWS8ZMhEAjfaDBs9NygT79+Qm0qpTR2wpsVX1+CuQi1fhQ0JUEVLzRhSC9vh\r\nXdadSGrCEdmLoimSGYfhzsDzP2Sb5xr34XY=\r\n=80id\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.56.9.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.0","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.56.9","@fluidframework/map":"^0.56.9","@fluidframework/cell":"^0.56.9","@fluidframework/matrix":"^0.56.9","@fluidframework/counter":"^0.56.9","@fluidframework/aqueduct":"^0.56.9","@fluidframework/sequence":"^0.56.9","@fluidframework/test-utils":"^0.56.9","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.56.9","@fluidframework/test-drivers":"^0.56.9","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"^0.56.9","@fluidframework/mocha-test-setup":"^0.56.9","@fluidframework/container-runtime":"^0.56.9","@fluidframework/driver-definitions":"^0.44.0","@fluidframework/ordered-collection":"^0.56.9","@fluidframework/register-collection":"^0.56.9","@fluidframework/runtime-definitions":"^0.56.9","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.45.0","@fluidframework/datastore-definitions":"^0.56.9","@fluidframework/test-driver-definitions":"^0.56.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.56.9_1647032668919_0.5197126785098458","host":"s3://npm-registry-packages"}},"0.57.2":{"name":"@fluidframework/test-version-utils","version":"0.57.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.57.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"dec293f8961fb129e30af879ee2165a98942d5b9","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.57.2.tgz","fileCount":41,"integrity":"sha512-G8kvSsX23E9HrAlOT+Unk8/90LH6myXAYnvjiiTfFFG/bOGCgV3VwpFvGTiS8ytwhC3JpPp23fVoirbPh25T1g==","signatures":[{"sig":"MEUCID8JQ12ceJJo3cRGZuxVgemfuoLQKnr6uG/1PkYuoxeDAiEAmSKnKwrqVYBv4fwBWSGPQCajni2d/NMp5S+kou4+obw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148710,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiK+HEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqxGA/9FfTy/XaJnUgdLUXjtsSmS9bP35JIm03YvCn2vyzLhZHUVchq\r\n4DlZ3oxzBkceDdJkCvfSz7MAVA5nNIf+JmdgzkuRKxsuimtSo0GVhtUA5SYj\r\ni8V1vvnt7/DfWjhw52gP6UHGRMhNfJKgBDgSI+ZaQO7JHnS+mmPMMcSDoKxr\r\nHRlBO1CaoHjRW2EkqVwHcJANjolWXzz6dQlYRQXSqild/OnT+jHKPRMvrf5G\r\nvJNQOo2V/XM8xYs2AgU/6jhRuEqS5HcaX6vDKbwL02lY0p95YSqxm5gwtqLT\r\nfGJQBsx7pmPp4HXLx8osccDJEl8pB/K7o/AW5Lv7zggSs3luraaYYCYN07KG\r\n8pDP7XneGn8Lcwk6rRlfhMqckrOmL+AZRBRc95ftUaGGzHy662NQxH2aIpTE\r\n1v6n9lzICw+9jKYh1KeD/aesC+4brWeGcI+chTDts3scG5JANZJtmV9G5HFI\r\nx2vQVo9k2Ea9F9UZRMOagu55mAiVV3J8ma2hno8e1zT2f7LRl+H+17dwuexc\r\n2p3ZsqtH+ddYpADza+Cd9S2idbotYmyl3h3hSuz/okjofwwQD+xzLl/kPCj+\r\n+vf/7g7BEj+cQ4PXwt3Qe8/HxRZjXd3tpaST5LJHFRlcXJ0R9s3CMEYL8Ftn\r\ngJcpnhUNua1Pk9UQgR6/q0cKr1fzr5ApQQQ=\r\n=IVq7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.57.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.0","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.57.2","@fluidframework/map":"^0.57.2","@fluidframework/cell":"^0.57.2","@fluidframework/matrix":"^0.57.2","@fluidframework/counter":"^0.57.2","@fluidframework/aqueduct":"^0.57.2","@fluidframework/sequence":"^0.57.2","@fluidframework/test-utils":"^0.57.2","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.57.2","@fluidframework/test-drivers":"^0.57.2","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"^0.57.2","@fluidframework/mocha-test-setup":"^0.57.2","@fluidframework/container-runtime":"^0.57.2","@fluidframework/driver-definitions":"^0.44.0","@fluidframework/ordered-collection":"^0.57.2","@fluidframework/register-collection":"^0.57.2","@fluidframework/runtime-definitions":"^0.57.2","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.46.0","@fluidframework/datastore-definitions":"^0.57.2","@fluidframework/test-driver-definitions":"^0.57.2"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.26.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.57.2_1647043012265_0.04443748886342003","host":"s3://npm-registry-packages"}},"0.58.1000":{"name":"@fluidframework/test-version-utils","version":"0.58.1000","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.58.1000","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"403d5498a2601bf724aa8f61c95976ff29eafde4","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.58.1000.tgz","fileCount":51,"integrity":"sha512-d5qYycLdJFtshVK59RLSMPi1XPTQjRWU444lD+SbCHVIzMskWkifrnPi3JNINLPvtvphpbmN4XV2AzbiP+dKdQ==","signatures":[{"sig":"MEUCIBW7aO3OuVgFhl92gMpPeVErso8HtB8I64rqWu3uDF+DAiEA3yODNU9ps7GBZg6GTZ81ZBZ2YGvlbZx5q1oCiymds+g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164151,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiL6U8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrhlRAAhNwdmAHs0Q3L4cAxycxJXdJKlycit+ytpN2b3zY09atwA5eT\r\nxpa3Z0LcHZanIpe7SrQY1js0kzCQBO6pLnL6ydFFQ4vTjtzjSqq+phD5DtOJ\r\nWyzsUJJeP2G+iKhG0PHbOCctR5gDgxPjXrr/olQDwuqPDYSFtNFMktfitAAb\r\n6G5oHgOlIU2TaRRPSvtGZ42BJyBZA7GaF3AJPCE0c/t3Hdmq39zj5nC5M4OD\r\nHc71uhyAqzrAK3wQ3ii+ljiNKoGpyh0w8uCr6tgG+iWhdMCKuBJuDFmjDxNn\r\n5P8VwNM92FYKSM4yL57T7Wu6lRhJBC6zWFptlMapcyYVeUoWFLkwBdW5PHmK\r\ndZSh387izLitDt70Yfll2Ibt4T7iPhgR795b5WhACoWLtT1tHmIY1Db/ILiX\r\n87q+SrTs5uUJh/Yzm4/25am9ufvmpzkTbqZyEkJL3yk4d7Th93kcpvf08Jue\r\nj8lNd3QKiEjjYr3fN/UAEoxHiWEjMtv3vL9cDyCBXo1Aw+edcz5encLlq7Y8\r\nMvdQg7oZuj7Yg/625UQ4KlM3SmdLLPJmw8ifOvkDaEW1JHGUzcuagIbabu1b\r\nhRpMTQtWyafGG0G5y4yZN9+gO0x16WFxxnZJ0WAvjVNpI0H3ZW65q+ghCqqg\r\npDi8lGKXgqdYemQqU/CYBPy0l7WO3N8JKyQ=\r\n=r4BC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.58.1000.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.0","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.58.1000","@fluidframework/map":"^0.58.1000","@fluidframework/cell":"^0.58.1000","@fluidframework/matrix":"^0.58.1000","@fluidframework/counter":"^0.58.1000","@fluidframework/aqueduct":"^0.58.1000","@fluidframework/sequence":"^0.58.1000","@fluidframework/test-utils":"^0.58.1000","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.58.1000","@fluidframework/test-drivers":"^0.58.1000","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"^0.58.1000","@fluidframework/mocha-test-setup":"^0.58.1000","@fluidframework/container-runtime":"^0.58.1000","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.45.1000","@fluidframework/ordered-collection":"^0.58.1000","@fluidframework/register-collection":"^0.58.1000","@fluidframework/runtime-definitions":"^0.58.1000","@fluidframework/protocol-definitions":"^0.1027.1000","@fluidframework/container-definitions":"^0.47.1000","@fluidframework/datastore-definitions":"^0.58.1000","@fluidframework/test-driver-definitions":"^0.58.1000"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.26.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.58.1000_1647289659940_0.3226434499731634","host":"s3://npm-registry-packages"}},"0.58.1001":{"name":"@fluidframework/test-version-utils","version":"0.58.1001","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.58.1001","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"54cbbea184f2fab5e653659c57a53f36f8c4d28a","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.58.1001.tgz","fileCount":51,"integrity":"sha512-wNhfPSvXyXR0hEQodRgo9kv0Y7td/ZcvolY4YgZRlM+ZLKTVAp7/m6KYGLljw2NWk6mH0EotSTlj+JFIK6KrJA==","signatures":[{"sig":"MEUCIAx6fwAYl58Bk9KHE//LKNQ8hkgrg05yybu+rC2cS/UuAiEAoDPJaq4x6B7zR0mqxvYPR0Q3+b5dX0XWOyrAZHzo2Ss=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164151,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiM+RLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrhcBAAk65dgXX7cZMQBeSEgkDlR/MfOkzCHFWVDGpvhdb46eI+73+2\r\nTflEUni95LHPXWmtjsx3SDSfNgPtW1JX5uyU9b/J0phgMI/2wbCohBw+WdJW\r\nAH6RJ0jgjrG4X4VkfDw+h1jugWM6xOhXUwlA4tTHhdGqNlpfJJf2U4uaeGau\r\n3VhVO1NZCA5e4wz1nzxzIqnTirRtzr4aFd5PQ7uR529W4+8a+sr3lYd99gbT\r\nnxmRusX3cDji6hwBEH73NVlR0JpwE6+9YICWuLHQOXJphH7h6jHVXMyu7sH2\r\neLyxKTfKssLkuPk3se00vhSZ2Cpt/3s7W9jLJVnGdV5Q6SrckIde99zZU40p\r\nOwOUeWvYWYabBtE1DUkJwBrAdA2uaKrHIvqO00p/FY5ehSPCjdblaAZ8MmVO\r\nwQS1PHGEtqnyze8NWL9AJYWSFpNG108qQYsAFRW6amZfygkv9iE993cRRV43\r\norL9Mgc7FdCUE0iY0gQnwd6HVYs1BiSv7Mod49lfmscrtr7iKLgYYvFEdkxN\r\ntKa4GBAHRYAeqK6IWahZjNCGuHzyoYaM9Qtlx3ZhKOrB6yGicj5mbaBsCRbB\r\numOGyAq/LT9shA/AcKvKExij+QzVSSB8GY/zFZw39bPJdM6E6hm+VMtNJxCg\r\nrH/Gs58pEzpmVunVCwFKgHLG06rO+/75cW8=\r\n=Ka/I\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.58.1001.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.1","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.58.1001","@fluidframework/map":"^0.58.1001","@fluidframework/cell":"^0.58.1001","@fluidframework/matrix":"^0.58.1001","@fluidframework/counter":"^0.58.1001","@fluidframework/aqueduct":"^0.58.1001","@fluidframework/sequence":"^0.58.1001","@fluidframework/test-utils":"^0.58.1001","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.58.1001","@fluidframework/test-drivers":"^0.58.1001","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"^0.58.1001","@fluidframework/mocha-test-setup":"^0.58.1001","@fluidframework/container-runtime":"^0.58.1001","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.45.1000","@fluidframework/ordered-collection":"^0.58.1001","@fluidframework/register-collection":"^0.58.1001","@fluidframework/runtime-definitions":"^0.58.1001","@fluidframework/protocol-definitions":"^0.1027.1000","@fluidframework/container-definitions":"^0.47.1000","@fluidframework/datastore-definitions":"^0.58.1001","@fluidframework/test-driver-definitions":"^0.58.1001"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.26.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.58.1001_1647567946876_0.059992510023662016","host":"s3://npm-registry-packages"}},"0.58.2000-58133":{"name":"@fluidframework/test-version-utils","version":"0.58.2000-58133","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.58.2000-58133","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"077232ce4ee6aaabe8bb00963bf55d27c39307a5","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.58.2000-58133.tgz","fileCount":51,"integrity":"sha512-QKb+ypHqD8kJdZPSae2uBzUbNHCWa89uUem9aSEbqdQ31gITSK382/Uaj1lHQwS2EKTYGgIZxgWUhJhLE7wEKA==","signatures":[{"sig":"MEQCIGflmS0+Ry5qJ3gqFe6lsssRf6FCp6cNoPPKMPeB1DZaAiBHYJrhqTOaP3DN8bir/bNjJrmiU4Zt3iTAr8oAz9CXqA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164909,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiNQR9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqyDg/9G0REZqD0/uNPF2DLXyWv96iCrCovAhigBqQTWafAu46SKYDH\r\nclPXmfo0N10EFV8JqkflHP3JBL9O/FxEgfvNO4Q6ZUOhxKoiiUveRiwFps00\r\nOnGkcO1r1A9zB9YaR+GDjN4ty1vneiFHiDEAjKsxnn9B4bIxQ431Epwl7by2\r\n0Go88fw2bEYdPmL4aG3SJ0KN9ifTWFW4jA96aFGN3qP2wgaWi1F2rBugrGVN\r\n38Oknfs99+uh3ptyEpgvJ8W+qy7fkikobVdshhOsfDxJhbDnAIQL4nE+33rA\r\n1ao/2PlmnX89gLXnXaTldhV6kUkmnEdGaxg2BFQPqRHs0pFoiqeCPfany8lH\r\ncjduOtmn0uQpVC6TNrUY+DssKuEUaP6q3/CEhmmYmjT6Hmf66AcMYoSh4AdY\r\nKzMkYF31rVhTLEx5McOdSWbsLZyJYIoZArK9kaIWh1mkXcJmI88HAHF/3n68\r\nvwQuBzQ4cstR0m6ar193uELvlJ+yqnmuMohx4h2CjTEZdU3MU7vKxTgcoeEP\r\npfuDoVpJkdNN+jb2zjieqqsdPgvqseZREt/d9A90dcooITw1qb+HPtoDQ7QD\r\npEzVcwPjAd8VfB2MHtVXxWj+HWzMc829tjnyE8OSpCpeiO7mzEEbjO9d7i0A\r\nhlyoxMXrEyQb9e57muvIu5hcr4m8kgvElNI=\r\n=7hhb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.58.2000-58133.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.1","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.58.2000-58133","@fluidframework/map":"0.58.2000-58133","@fluidframework/cell":"0.58.2000-58133","@fluidframework/matrix":"0.58.2000-58133","@fluidframework/counter":"0.58.2000-58133","@fluidframework/aqueduct":"0.58.2000-58133","@fluidframework/sequence":"0.58.2000-58133","@fluidframework/test-utils":"0.58.2000-58133","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.58.2000-58133","@fluidframework/test-drivers":"0.58.2000-58133","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"0.58.2000-58133","@fluidframework/mocha-test-setup":"0.58.2000-58133","@fluidframework/container-runtime":"0.58.2000-58133","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.45.1000","@fluidframework/ordered-collection":"0.58.2000-58133","@fluidframework/register-collection":"0.58.2000-58133","@fluidframework/runtime-definitions":"0.58.2000-58133","@fluidframework/protocol-definitions":"^0.1027.1000","@fluidframework/container-definitions":"^0.47.1000","@fluidframework/datastore-definitions":"0.58.2000-58133","@fluidframework/test-driver-definitions":"0.58.2000-58133"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.27.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.58.2000-58133_1647641725321_0.31692547100036195","host":"s3://npm-registry-packages"}},"0.58.2000":{"name":"@fluidframework/test-version-utils","version":"0.58.2000","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.58.2000","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"a43f2c648a19730f9a67300856a57a4704bd0562","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.58.2000.tgz","fileCount":51,"integrity":"sha512-XjxR0U41QaF6bq4c+8rar8pN/Xf/XjePJLr0xCpb8mjOIUuF8zCkpBFKSJczr4CpfOeFnn5CaqWWdu9Qz+332w==","signatures":[{"sig":"MEUCIQCWx7rrrH84xQf01HtMykIZQFd9rRsIdkxLyoTqAY4M6QIgPZu4Hk0CrHESvgsi9j0gPWB+Rym97l+6O2Qu5s6NsfE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164785,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiO4apACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpbdBAAjBXyZ9bnPADpSz02lQnAoPZCVf2l3eB7lEbD5neMkIQN29eZ\r\n1K4tG1185uT5MbQzj/i8tQUutZrHkSUxwfqyWqamCl1rcay/cVk0ogYYJDPN\r\ngy5wjGr7v61WY3xYiDrAgnr7St8A4rcsdIWprpUxKYOyNtfKvU2nfqO9utIN\r\nlQYsY94mnfUQz40uG5Hn8yyN59GFlaKBaLB5OBy2JOm22+kKscOFgdTokwEw\r\nhldFoI0BvzVy4Rg3mZB1DnwcoJ+3mV4Yf08TOpJSVG3Ua0pZpjwgKl6u7kMg\r\nxQYcOvOxO/Zx9S4nBdeXjtslJyTzQJKErJDgRUP77vRn1FV4WU11uK2mRTgW\r\nmr6d8K1ZTnQq4b3PrLl43PGApfF+ap0DU08SjJ7xsqs63RIifRvfXIJii32k\r\noKtZ6oMOHV2yT2ER+55CjSOBeR4nsfeL7W47cWtOczPWJoSDBFn13wCkgqux\r\n5Go7cmGJoATgNs9JdlHsL+mkNRvcXWSuAiX8NzhKwMAkAuc8eSvr5SQ721QP\r\nzOX7CHZQhA7rqbwI+KB8tc1MovW8KZ5eDUjM/kLCp8ZIev2g399SV3+6v4Hx\r\n4BeMvtNAftogzCfHvgaog3N/7+MYwaoqRrnUtZ8R6XIrEf56BR1px4LAgRKE\r\n4dJoj3w1e03GtYKz4ILKLLMeyz63/4jnYTA=\r\n=2muc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.58.2000.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.1","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.58.2000","@fluidframework/map":"^0.58.2000","@fluidframework/cell":"^0.58.2000","@fluidframework/matrix":"^0.58.2000","@fluidframework/counter":"^0.58.2000","@fluidframework/aqueduct":"^0.58.2000","@fluidframework/sequence":"^0.58.2000","@fluidframework/test-utils":"^0.58.2000","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.58.2000","@fluidframework/test-drivers":"^0.58.2000","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"^0.58.2000","@fluidframework/mocha-test-setup":"^0.58.2000","@fluidframework/container-runtime":"^0.58.2000","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.45.1000","@fluidframework/ordered-collection":"^0.58.2000","@fluidframework/register-collection":"^0.58.2000","@fluidframework/runtime-definitions":"^0.58.2000","@fluidframework/protocol-definitions":"^0.1027.1000","@fluidframework/container-definitions":"^0.47.1000","@fluidframework/datastore-definitions":"^0.58.2000","@fluidframework/test-driver-definitions":"^0.58.2000"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.27.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.58.2000_1648068265225_0.2112438499413265","host":"s3://npm-registry-packages"}},"0.58.2001":{"name":"@fluidframework/test-version-utils","version":"0.58.2001","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.58.2001","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"40b6d42446d9833deb70722d61ad8c1d7bd3eac0","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.58.2001.tgz","fileCount":51,"integrity":"sha512-3ip9lQowMDwfjvt85SIllTlHhN0P1sDJC6pwY0SckN/8sZ8XtCOcu8J1x5fmdRdmn/gGGWnKu22xxC9qCgzLSg==","signatures":[{"sig":"MEQCIGrCby7BBmDVbxbaW7d004tyoeD7YmNjCaBg1j1iCj/5AiBs7LR0BRwszGXGZBLHBgtNAa7z16KKAL7/voDSjG7nzg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164785,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPRY6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmorQA/8CKMcYZKiDwMFWNkPRFvBtlve+XPEjBqCEowNtViiq4BMImBN\r\nEk7cuUuDuq2nlbOBsK67GDDUuILyKA1mgCz9a3VYMX2rRCN25uU0zYO/O8nb\r\nZSK80ScMyOIwaeNKMuZ88EqPRbfwNfQ/ky8t0ig7hX6kWshhnX4blFajuzxb\r\nEZb+A/IKwquGSbk113YdyM8Me8UciTz9Tuz+tZys5nujA3vEVjxV3EqO7fPH\r\n+vOgqanvsGLI+t4ESQ43TnKh3BCme+kIsCf1s0Vi+qvYCiAAbO13abMAx+uJ\r\nvQRl5lRh7TVsm3qaEpCBQLcg//9rFu9wJIE+zTb79ZGBg2hA/v8U9LIo47xX\r\n5do/zWo8RrE7W9FXZCJm9bO6OtOF6IIY5FYf8d6qbKBuyGCfe5gqQsKJrEvn\r\npvGxfpXsqQSBOJcvAEXyH64nfjqpPtewfgrLJp1otZ+3H9VYa9mFtLQx4oC/\r\nrKxx2qjZ/2dczwWVgcL2aC+DsbIMQGE1DsVRZKHdhFHXLVD54KFLLJLZH2p7\r\nIZFkqmGwiz3qKV+ZC34lwANlmFsQD3cDrB6mFUGhAO5TWEgjQQe2ebz1XhNy\r\nrfQAWFAH22tjckgHhCLoY5SNkC1mVSKvZE3+EM+dGFHi7EWOnMuBtfXyH0+/\r\nqINmSN/vCn/YvkNP3l59DENcSMNV3aWxA3Y=\r\n=fwvv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.58.2001.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.1","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.58.2001","@fluidframework/map":"^0.58.2001","@fluidframework/cell":"^0.58.2001","@fluidframework/matrix":"^0.58.2001","@fluidframework/counter":"^0.58.2001","@fluidframework/aqueduct":"^0.58.2001","@fluidframework/sequence":"^0.58.2001","@fluidframework/test-utils":"^0.58.2001","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.58.2001","@fluidframework/test-drivers":"^0.58.2001","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"^0.58.2001","@fluidframework/mocha-test-setup":"^0.58.2001","@fluidframework/container-runtime":"^0.58.2001","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.45.1000","@fluidframework/ordered-collection":"^0.58.2001","@fluidframework/register-collection":"^0.58.2001","@fluidframework/runtime-definitions":"^0.58.2001","@fluidframework/protocol-definitions":"^0.1027.1000","@fluidframework/container-definitions":"^0.47.1000","@fluidframework/datastore-definitions":"^0.58.2001","@fluidframework/test-driver-definitions":"^0.58.2001"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.27.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.58.2001_1648170554280_0.6623673148105831","host":"s3://npm-registry-packages"}},"0.58.2002":{"name":"@fluidframework/test-version-utils","version":"0.58.2002","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.58.2002","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"563da6a70b1c2983fa3cb4df2f1e1857b8eac534","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.58.2002.tgz","fileCount":51,"integrity":"sha512-oB3q9yoQgtJCscl+FODF01Fh9kdzVMZTXJwMF1jzNnn03GcjTsAlGOazjuNUEoIPIRSbjLX6oLLgGohyZFFh/A==","signatures":[{"sig":"MEQCIAfsDQ+r2IoXxJUmj3AJATYup3lrBjZ/VvFzrQJnLrjvAiBO6NdNq3MydyIrtX6u8AOHbSoblwfFOUkwPgvh62eeDw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164785,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQgVzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq4GxAAnpDk2PX6Qh3NNjm/nXmgPESO4jhqzxOPRBQDBashQnMGJ4rh\r\no29kl6jjsL0z8U3bc4YIRDBX72/jNW+H0ngbn9QIw4lW7E8pdoeBtwxwXlBd\r\nNHi4BL2XfPbygSXc6yQveWypLvjKaEEKKzNbaaPJIfVRJ9aL3Gb9t3QMYYOv\r\nRJabx6IFy00933LZMUHpZW5ZQ9C8yUMvfRtm86WZrU2T+ssEKYjN3RAIeAmv\r\nmuXUsbVUQLGsHI3/R1gXsPeGOzM6PlQoVdh3fUY0ZxLU8vy9/H3+okLfj2NW\r\nZuNL8jIvRz1I85X9/envc1oody4zNFfygo9xxH8qH1kVNlpB/5x2LIWNL53K\r\nDMR37nL/9ogB/AGNN0ABmQALO0loGoSrpei1CECvEFAJDaZG+cFKGi2GMpWg\r\nX4pZaksRVlPnaEHuibf7AsOVlFl7nZJtNAp6jmoyqqDw6gWT7Meyzp1/CeJd\r\nmQJCRHq+prHkr8ue6jn9sbqfVfr5zBvxgQHmuKtST9ZFGVP4rkEJUMJyZVBb\r\naL5g5rM6Moitz2E8Im1B/8Ii4J4Ztb1+pl9xvZvbIEPa5EVzBTYfgdqxVQOG\r\nC+PcLAkXOeUcfRw90CIAiziqKBzFGSB+m/WiZRJCAk1cnix7IQKZ4LTBK13R\r\nHNQJRRP7hoUbTeSHGDRTWz923vbHWU74hUo=\r\n=sEZg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.58.2002.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.1","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.58.2002","@fluidframework/map":"^0.58.2002","@fluidframework/cell":"^0.58.2002","@fluidframework/matrix":"^0.58.2002","@fluidframework/counter":"^0.58.2002","@fluidframework/aqueduct":"^0.58.2002","@fluidframework/sequence":"^0.58.2002","@fluidframework/test-utils":"^0.58.2002","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.58.2002","@fluidframework/test-drivers":"^0.58.2002","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"^0.58.2002","@fluidframework/mocha-test-setup":"^0.58.2002","@fluidframework/container-runtime":"^0.58.2002","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.45.1000","@fluidframework/ordered-collection":"^0.58.2002","@fluidframework/register-collection":"^0.58.2002","@fluidframework/runtime-definitions":"^0.58.2002","@fluidframework/protocol-definitions":"^0.1027.1000","@fluidframework/container-definitions":"^0.47.1000","@fluidframework/datastore-definitions":"^0.58.2002","@fluidframework/test-driver-definitions":"^0.58.2002"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.27.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.58.2002_1648493938833_0.5555923460628835","host":"s3://npm-registry-packages"}},"0.56.10":{"name":"@fluidframework/test-version-utils","version":"0.56.10","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.56.10","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"51269d1c52aaeae1efe1d0ad8b474d75f063b0a8","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.56.10.tgz","fileCount":41,"integrity":"sha512-uAH9xTOiDjKExady+Q24Pctjfqx3LIeY0MaQEuRA0os95+aBCUbP9hbGmkU6yhzUK0LfrgwdJDEk5rBHDdYjNg==","signatures":[{"sig":"MEUCIFDLwGLcm1bLmgE1tgQlTw60/QJBf+9XaBcDVsUi+wdJAiEAuv1VqkcwdK9OxmVBBiG9/YXV2k01bue37tToZIRNVoo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148401,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQjHHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp2dxAAimIq8Dd49e2R1OYExv7eZ5q9jjk46FbO1Dfq162aj25xoRQ3\r\nacKoV8C8aENnQH6ldTP7PacLMX2n9bFB2LrQcdZQsaI86aysr+xeTM8N9csL\r\n7peJ2uCVAFueBPGSpSj0IeTPp3RCOpfuQzOVXzcvHFGR1gn5TviuZbkqqqyJ\r\nz3M9e/F5WJFXDOgL4ApZgVkXS6wmvbT5aiQgVAlYHwoAxHWbVoD57zCLgC/C\r\nbcl4yR1GLnTWsGhZ+vCTB2e2vv/D6s4fm+TCWz3vw8E9YkTqeSoK+rtiJkKA\r\nJFG9i5bbrxhcGBmqaesfPbfP7CAz9VkoFySk2W+1ZIIfkuqtVw3M/qP/iRKm\r\ntQwc/t+NRCHF/r1owP6AbLUSmxE/EWzKjc4hgFW1jBuISEM02+umoC/oo9/f\r\nhwVZAAMsQ4AyftX5qr4u9kdOBe9vIV/m7E71k00i2mKZhyr3sBaOaukFmbfn\r\nLtTDcnzyw0IaTwG2FdmcbWHdk2S6juHySR7ddNvwKeRrJdxOdiWoSgTS0Z6S\r\nmOWJoWoasBJiOs6gT+0i1pdTNFwNxvm7vMsQ4+iBMN3kwLlHvCNz+qxEefP4\r\nVkxKGApWchQBoHrrEgwJnBoxLq4XecsK90IjGn1a9dW2p0AAcc9YoufVB92c\r\nyP68yWns5lGVgd4krkVRzXtGCq5UX5r8EMk=\r\n=/WSu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.56.10.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.1","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.56.10","@fluidframework/map":"^0.56.10","@fluidframework/cell":"^0.56.10","@fluidframework/matrix":"^0.56.10","@fluidframework/counter":"^0.56.10","@fluidframework/aqueduct":"^0.56.10","@fluidframework/sequence":"^0.56.10","@fluidframework/test-utils":"^0.56.10","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.56.10","@fluidframework/test-drivers":"^0.56.10","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"^0.56.10","@fluidframework/mocha-test-setup":"^0.56.10","@fluidframework/container-runtime":"^0.56.10","@fluidframework/driver-definitions":"^0.44.0","@fluidframework/ordered-collection":"^0.56.10","@fluidframework/register-collection":"^0.56.10","@fluidframework/runtime-definitions":"^0.56.10","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.45.0","@fluidframework/datastore-definitions":"^0.56.10","@fluidframework/test-driver-definitions":"^0.56.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.56.10_1648505287248_0.9338874640361641","host":"s3://npm-registry-packages"}},"0.56.11":{"name":"@fluidframework/test-version-utils","version":"0.56.11","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.56.11","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"8e9fcdce47ca792972874624596f898c4b93c534","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.56.11.tgz","fileCount":41,"integrity":"sha512-7sy1Yp8nTF5vD8fKnEKd58iaP2/7ptA7tUvZw07bZVyVtPIKkkhDbYPHOs9nwCnATLYs6f+gqpCRfaZ7Sz4iMA==","signatures":[{"sig":"MEYCIQCMzWaCzpTaNoSMWn1GWYMGrUm+NuBPv98CsvVdDsHPWgIhALNt2lM6nPljEXZoWnDiB8eaIK8aPJ13MKopks5kONV6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148401,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQlHSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmorUxAAle/cJJhuajAH7i2Ou7PJP7E+L0FexEXXFUmlsSLn2xdNTEcV\r\n2rqNsrt27kVokqkWorsFHD748kUfXRVQLbsW3tMXMwUqrIJJ9JPRgda2HYfd\r\naOkJWayaZkMMYBF81Kv0c/p6YQIlNbHkNu5kbpOWobqMPEWtJXWgjGifp4ZA\r\nK41QJtkjYMgCG+HjE3NAdOygo5zPGWzR2TZ+dy1RygcxlKzxQImdSfHTn2cs\r\n7mwMBnkx5eRi7XEmAG6RjNGLX7Qvp46AF2KDTc7HU0PdJv426ydJD/zkhee6\r\nfVs+PpIvIqB7WPJhb0wJXWwHeDxbs5i9nA/d/87qV7vTJMPbCsWtWq4ERSXs\r\n9btCJF8OuS19ikesFvaEHzGXPyGHyG/X8tKgWaylWU33O7y+bcBy75mQf9lc\r\nW2/iEij8p3mOrq72/ze02S3QtyDbFeJIMnHiP9Ud3fSqd8LC08cVTD3tZAkl\r\nLqc+n0jh55sNbPiruzpTMK5b39jZEvmGwcegXs51k00atCXQYuTtXDVVG2sP\r\nYcgH7Hf9IN8LSsCE8Cx5aI9FbHgI+0aFaKPofOh4nTfklhDAQp02fNYmqdlw\r\ndc5bwVpELovP3J5nQasHwcP56ay3vBD1ACYx/TCiqQw+TZra45xAXKFEZ+CS\r\nKLILk3VdNElZ1+cgtt6Kmcao0YkUPbg7l6k=\r\n=qWIr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.56.11.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nProvide Fluid APIs in different version for testing.\nSeparate into Loader/ContainerRuntime/DataObject+DDS category for now.\n- getLoaderApi\n- getContainerRuntimeApi\n- getDataRuntimeApi\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (^0.<current+requested>.0).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nThe legacy version are installed in their own version folder\n./../node_modules/.legacy/<version> (current package root's node_module directory).\n\nAll legacy package for all API category are installed all at once regardless of what category is requested.\n(See `packageList` variable below).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n\nThis file also define a mocha hook so that N-1 and N-2 versions are install for our e2e test. This will likely\nbe split once we move this file to some utils library to be shared with tests outside of the e2e directory.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.1","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.56.11","@fluidframework/map":"^0.56.11","@fluidframework/cell":"^0.56.11","@fluidframework/matrix":"^0.56.11","@fluidframework/counter":"^0.56.11","@fluidframework/aqueduct":"^0.56.11","@fluidframework/sequence":"^0.56.11","@fluidframework/test-utils":"^0.56.11","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.56.11","@fluidframework/test-drivers":"^0.56.11","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"^0.56.11","@fluidframework/mocha-test-setup":"^0.56.11","@fluidframework/container-runtime":"^0.56.11","@fluidframework/driver-definitions":"^0.44.0","@fluidframework/ordered-collection":"^0.56.11","@fluidframework/register-collection":"^0.56.11","@fluidframework/runtime-definitions":"^0.56.11","@fluidframework/protocol-definitions":"^0.1026.0","@fluidframework/container-definitions":"^0.45.0","@fluidframework/datastore-definitions":"^0.56.11","@fluidframework/test-driver-definitions":"^0.56.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","moniker":"^0.1.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.56.11_1648513490698_0.11861081725375167","host":"s3://npm-registry-packages"}},"0.58.3000-61081":{"name":"@fluidframework/test-version-utils","version":"0.58.3000-61081","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.58.3000-61081","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"8d2f42ce9a2bc772a361329b83b31a4d58df0b99","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.58.3000-61081.tgz","fileCount":53,"integrity":"sha512-mzOsG+16k99cxJ/U6MdZ9VJJVFVK5xikPCMFYDwZRvksu9EzZ82UVjsLJPqIrdSIXpPj1kx7rBrffvtyl72KTQ==","signatures":[{"sig":"MEUCIDsPL6cS6cTOl+hzi8v7vkltK3ZYg5hjqdSykJql2ZhPAiEA1+EM0nt4MJOmQVMtblw5TTFM2dJOoJsiMm2qyDvuVyE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194075,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVNxnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoKIRAAotR1sLv9angsFCms6xlT5X0vOaKZMaCIm5O/puemSodH+lkZ\r\nMpOfS1LNsrH8EZR6Pvr/+5GcO9Ca48KYu6L8deqjeKH78qrdMs6aC31Mp2nz\r\nHZYbPdxKODoYN+mzCHG+WwPFfz/BJMBjwadBO9YNKolTAIWRehi2KdoJpvBD\r\nqfNQyr8F78JQ1UNKp6lRUQc+3glfocrPZwEWOJmlchAbSYvcL4iu2iGOHnvu\r\nxExj0vM5to33YV2M4y948gnJ5AaNv7vJw6RSxPFBIXx17IBtjJerFufDmxcv\r\nE0kMJfaphnTPehv7LD5E49K5VlT6afR4JfjkPInJwAq8Smfka81dyxfv/4CB\r\niKWuyL4jdIXNu1P016Wex9F1xG8SZIDs0ymLl+4elcHarSv3Vouixgd030G9\r\n/DLdWViCDxoyTFn3ekhYcElorcKujC9qcJVEvMegO42nOYvcZTzdz0OKcUZg\r\nZgW2FzWHEFC8uB9fla+XjrKudC8wr7kR9Wsay0l7H+aVWpGzndh7DTveXcPE\r\nx5kHrcvRb2Y5TjvOg+UgQMG7hFYHASdAFOkMVOGHW+TjQ7HfMralj+pVRjVD\r\nFP6nebNfBMTqbjwGg7yFhC/q/Ld9LdpLjkKl44ccg+zmdMI8ILX4ylI8y3YN\r\nojq6qkvfp4qrQpYNpYJaC2Xs2V/vWCsbpeI=\r\n=aIyj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.58.3000-61081.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.1","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.58.3000-61081","@fluidframework/map":"0.58.3000-61081","@fluidframework/cell":"0.58.3000-61081","@fluidframework/matrix":"0.58.3000-61081","@fluidframework/counter":"0.58.3000-61081","@fluidframework/aqueduct":"0.58.3000-61081","@fluidframework/sequence":"0.58.3000-61081","@fluidframework/test-utils":"0.58.3000-61081","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.58.3000-61081","@fluidframework/test-drivers":"0.58.3000-61081","@fluidframework/core-interfaces":"^0.42.0","@fluidframework/container-loader":"0.58.3000-61081","@fluidframework/mocha-test-setup":"0.58.3000-61081","@fluidframework/container-runtime":"0.58.3000-61081","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.45.2000-0","@fluidframework/ordered-collection":"0.58.3000-61081","@fluidframework/register-collection":"0.58.3000-61081","@fluidframework/runtime-definitions":"0.58.3000-61081","@fluidframework/protocol-definitions":"^0.1027.1000","@fluidframework/container-definitions":"^0.47.1000","@fluidframework/datastore-definitions":"0.58.3000-61081","@fluidframework/test-driver-definitions":"0.58.3000-61081"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"0.58.2000":{"RemovedVariableDeclaration_pkgName":{"backCompat":false,"forwardCompat":false},"RemovedVariableDeclaration_pkgVersion":{"backCompat":false,"forwardCompat":false}}},"version":"0.58.3000"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.27.2000-59622","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@0.58.2000"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.58.3000-61081_1649728614789_0.6168642610764632","host":"s3://npm-registry-packages"}},"0.59.2000-61729":{"name":"@fluidframework/test-version-utils","version":"0.59.2000-61729","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.2000-61729","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"eba4acd8e62b7eee92d9a21a626449803fb0320a","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.2000-61729.tgz","fileCount":53,"integrity":"sha512-yd8/SbIt9lK2I7w0HT9qP8BDePlvMJ3vp4QEd/9o0haE240bY8Rp2fMW0s6KtRsVRhReAWtbzi9WEV7dBFMswg==","signatures":[{"sig":"MEUCIQDK17yD+acetkFsd8Z/d1OwxS0PX2QXfmzLwiR5VJZLwQIgAz4JIp91nyTnra37XwAsathPBvPpX2iRdDJ7fRz/A08=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194232,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiWIbnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq6iA/9EmX0Vr0JGHYFxF+YuoB54C4Gv8/snW8PhRCg2s8vhD3BN3NV\r\nDLFQVEc1Y5CmTW2CcMKHQb7G0oF8QfAqm0NQ0FZv2HD/DV6GxRM4Fs/9k4Uv\r\n65612qW8hfeqgL3AU1LUjMtJq7RJ3t/utfhARofnJJOck/vnFLzJHHN+VsNC\r\nnQTRfRRiNtO9xojx03BxABJyoI1Ky8LAi6VE+AhQHZtl6r9LgfZDJphCqnJa\r\n7SZk8KKhFMuF7QmArV/n7627bEUUCAwPBNzk+sVL5o/GsvSMdpFQQye1gcnq\r\nwoU7UYkeRCR3cnGuWX/dLXAK491AVFNcEvgYg8hbXKmSildneaGtfucTWf4d\r\nxSVtoT4HUv36pRLPI/TCEMPfMsSlpHlO0eAlXYWESZCAIFttHlDe+RcjMlcB\r\nYlmjNrFpHqrEebHIYknmzza2gnxEqIsHfxIvSHdIZSVVCNBruIMNQUtaJIX2\r\n3nPtS+kJd7AF97o2JdBcOCOrB49iWElFZpq+6Vd/g1d4zFxWRN87wclPohC3\r\nZ/itHkeRxI8rOqv0NKZkIAXjVmCNuvaqS0COLeoOJIIA7JW6eTgF7nhtCa1m\r\nWsHIKXbGn/kheeV+9/GYB5jw5i1qdPGVbHjMFlzijLmhkroHySGcOAqnk0Je\r\nIigTy4IP1LSuNgZdSF2z5pX+KqkJoLCm/rY=\r\n=THVx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.2000-61729.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.1","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.59.2000-61729","@fluidframework/map":"0.59.2000-61729","@fluidframework/cell":"0.59.2000-61729","@fluidframework/matrix":"0.59.2000-61729","@fluidframework/counter":"0.59.2000-61729","@fluidframework/aqueduct":"0.59.2000-61729","@fluidframework/sequence":"0.59.2000-61729","@fluidframework/test-utils":"0.59.2000-61729","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.59.2000-61729","@fluidframework/test-drivers":"0.59.2000-61729","@fluidframework/core-interfaces":"^0.43.1000-0","@fluidframework/container-loader":"0.59.2000-61729","@fluidframework/mocha-test-setup":"0.59.2000-61729","@fluidframework/container-runtime":"0.59.2000-61729","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.1000-0","@fluidframework/ordered-collection":"0.59.2000-61729","@fluidframework/register-collection":"0.59.2000-61729","@fluidframework/runtime-definitions":"0.59.2000-61729","@fluidframework/protocol-definitions":"^0.1028.1000-0","@fluidframework/container-definitions":"^0.48.1000-0","@fluidframework/datastore-definitions":"0.59.2000-61729","@fluidframework/test-driver-definitions":"0.59.2000-61729"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"0.58.2002":{"RemovedVariableDeclaration_pkgName":{"backCompat":false,"forwardCompat":false},"InterfaceDeclaration_ITestDataObject":{"backCompat":false},"RemovedVariableDeclaration_pkgVersion":{"backCompat":false,"forwardCompat":false}}},"version":"0.59.1000"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^4.46.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.1000-61189","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^0.58.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.2000-61729_1649968870869_0.08963033848633106","host":"s3://npm-registry-packages"}},"0.59.1000-61898":{"name":"@fluidframework/test-version-utils","version":"0.59.1000-61898","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.1000-61898","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"0497a350c9a2f3e40a3674cfd551b47ee629a3dd","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.1000-61898.tgz","fileCount":53,"integrity":"sha512-VEA15kp56ldjw5dQfLDl6lKhPp6+gYt0ip5SEXDp2tvrQS0WDGMlJaMLsSej2A/swedKLlXt4ongJw4rIWtTKw==","signatures":[{"sig":"MEQCIG1tXN7KQxtaRdjhRv6gXLhvvIv5x40Z0pp57k6eRim2AiAPkpo/5H/RFCHmrwu6IcQSy2hK/thXjBPXAixCDQNQhA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194233,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiWf1NACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqYKBAAh1AwjJtft25CVOtl7BdG8tknqvknHEzyxRzHded6p32zbW68\r\nXZj6JtFsKwMuWDJSyG2zt472rFstTF2m2UOGLZxsn4ZIeACxwZ+xsZJnPIPG\r\nt8ZYI5pgMhMuxsCH/sFdK0bX0g4t7n9J2NBlLj62HV0raLI3Pqw0/BMXdOV9\r\nJCr7lxQ0Zi1uvQTFrscZeejj0F8vLrNo0h2qE10eQv3P4INLVIBuT8NW9UTJ\r\n6mS7nV51FnOEYy8e5IRLj+AAVKu65vELldvsxM4nhn524h/IMzhyOPZxWM/x\r\nanKTj2AQ7M0tt23kyMXWO4NGZbLKRHZXNh/oSya8jpmqIGlN135541Lucc06\r\nhldvSXlAoeJdT45OU9d2beJ7G/fFtOaWxpFIUfHwhecCY513fi2PIvOIk9/n\r\niEdNMlCw/QSdr5ZN8pFdc+WoXV9+6BA+vhvoxx1E0Dso3WWlE0pjwSPLhQtu\r\n/WbeM4Md7BekmPW9CipJNlQ4s0z+tppEEt1svZtr3xk62i7+eqvTROt0jUfc\r\nptT6OzgR3zDPsGGw2HqmEjCxHMAzNVYQWtIOm/WnGW/txAmeMXDwxDPsHZR3\r\nNMDShcPtfkzvPrGoqXz9BXypg7iSGDAgix9p+aZAVFETZamQ1kyJsM1mXU/b\r\nbvy17/kp+2ljq6C5dhvfmXkG0TeLKIt70Rg=\r\n=0uT2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.1000-61898.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.1","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.59.1000-61898","@fluidframework/map":"0.59.1000-61898","@fluidframework/cell":"0.59.1000-61898","@fluidframework/matrix":"0.59.1000-61898","@fluidframework/counter":"0.59.1000-61898","@fluidframework/aqueduct":"0.59.1000-61898","@fluidframework/sequence":"0.59.1000-61898","@fluidframework/test-utils":"0.59.1000-61898","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.59.1000-61898","@fluidframework/test-drivers":"0.59.1000-61898","@fluidframework/core-interfaces":"^0.43.1000-0","@fluidframework/container-loader":"0.59.1000-61898","@fluidframework/mocha-test-setup":"0.59.1000-61898","@fluidframework/container-runtime":"0.59.1000-61898","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.1000-0","@fluidframework/ordered-collection":"0.59.1000-61898","@fluidframework/register-collection":"0.59.1000-61898","@fluidframework/runtime-definitions":"0.59.1000-61898","@fluidframework/protocol-definitions":"^0.1028.1000-0","@fluidframework/container-definitions":"^0.48.1000-0","@fluidframework/datastore-definitions":"0.59.1000-61898","@fluidframework/test-driver-definitions":"0.59.1000-61898"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"0.58.2002":{"RemovedVariableDeclaration_pkgName":{"backCompat":false,"forwardCompat":false},"InterfaceDeclaration_ITestDataObject":{"backCompat":false},"RemovedVariableDeclaration_pkgVersion":{"backCompat":false,"forwardCompat":false}}},"version":"0.59.1000"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.1000-61189","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^0.58.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.1000-61898_1650064717095_0.5284753983581052","host":"s3://npm-registry-packages"}},"0.59.1000":{"name":"@fluidframework/test-version-utils","version":"0.59.1000","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.1000","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"60967362e6af2fe67ad8cc62960af28824b5f1e1","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.1000.tgz","fileCount":53,"integrity":"sha512-fUvGpKfQu/Aj7ZllUy7fCh1H8EWVq9HBKofMiKcrd4WVfXmrlL//h1lBQkNj0h2onlmlbqSRLPio9z63Lq34OA==","signatures":[{"sig":"MEUCIHCk33tnmNVCNMEc5fAg6x322jg1whGXxRCyhfmO9JXaAiEAt0p2aJ2SkrGG9KWwv1RS3Y4+MLmYdlKxUb8n5wuh9w8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194095,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiWnIUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoi0w/8CpdQLt4pEN5CbX5wnuqFHjoZKW65UORrLPI+/cP052h5Vb9T\r\n7UualFXowBR1Mb7OrdjJ2eV3z0n+DPtKOVQjAP8qCJBsfhKmbuC0Ag7vtBJc\r\nwclVkmuIMCzezRS5jXd32K/75DlpAeEYeO0xTx/wszSxr3kZaLahKgn/+er6\r\nTfasQK2uFjjQWrKlqRUbCCsb2Knyes+V/6hyvWRSarBpO5RcZslhxoEGZRl6\r\ngvgtHpAnA5gtJksXNBMNqyb+QNOeAuNQ0tr9KOvICloCycnpI0Cq8v4xgfKT\r\nDw7H12lHnjwwdtsFGZAKEyz0/W47MU1anZy7Z2OvkIVOekaojegC45Gcg0yw\r\nFdkggz8GLRqn/3DJgGamy0fsQkZXDjkZmNd8hckd4QFwTsWpY6aOpct+WTlH\r\nBJ5XwBarETW3eg6b18LewjFEvRFyUP0eRiWFFyZ66CEyadMPqoolH/LRjVz3\r\nWmatiJ9YvLL9FqvUuet2niW+OUo5jff3DKkde56tqtdHD+i3elZybo46F5+4\r\neS3gn0OYB4owJN8ZSP1mfoI+zYLBepe4pSsVIdCm3pwH2LpGYaWWFvFMNlGz\r\nZVuCuoPXcxybGRrayD0OeIMfw8c3OB5b67WCqUwzhSH0KxEgDg2r5gLR6QVG\r\nn6SFRo3vT6fvq7CcRHkKjBz32LYlBe7dGGk=\r\n=NArU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.1000.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.1","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.59.1000","@fluidframework/map":"^0.59.1000","@fluidframework/cell":"^0.59.1000","@fluidframework/matrix":"^0.59.1000","@fluidframework/counter":"^0.59.1000","@fluidframework/aqueduct":"^0.59.1000","@fluidframework/sequence":"^0.59.1000","@fluidframework/test-utils":"^0.59.1000","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.59.1000","@fluidframework/test-drivers":"^0.59.1000","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"^0.59.1000","@fluidframework/mocha-test-setup":"^0.59.1000","@fluidframework/container-runtime":"^0.59.1000","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.1000","@fluidframework/ordered-collection":"^0.59.1000","@fluidframework/register-collection":"^0.59.1000","@fluidframework/runtime-definitions":"^0.59.1000","@fluidframework/protocol-definitions":"^0.1028.1000","@fluidframework/container-definitions":"^0.48.1000","@fluidframework/datastore-definitions":"^0.59.1000","@fluidframework/test-driver-definitions":"^0.59.1000"},"_hasShrinkwrap":false,"typeValidation":{"broken":{"0.58.2002":{"RemovedVariableDeclaration_pkgName":{"backCompat":false,"forwardCompat":false},"InterfaceDeclaration_ITestDataObject":{"backCompat":false},"RemovedVariableDeclaration_pkgVersion":{"backCompat":false,"forwardCompat":false}}},"version":"0.59.1000"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.1000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^0.58.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.1000_1650094612699_0.8905232658704756","host":"s3://npm-registry-packages"}},"0.59.1001-62246":{"name":"@fluidframework/test-version-utils","version":"0.59.1001-62246","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.1001-62246","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"a8f76fdd1a081a6f96724c83f955fc2945027d13","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.1001-62246.tgz","fileCount":53,"integrity":"sha512-MLQdmlY3179fkOqgqz8DVSiTxK4hxE6+GJ7pV2zhBqTIeU/AN1ykd+JWFziUZEWAMY8znDKCxmuTDbJMGMy1+Q==","signatures":[{"sig":"MEYCIQCH8hDV3s5pUnY91BmsVc6hVKHsQuSyr+40Rlfa6wo1BAIhAKcKmnVpZMd9PwBSj1Q6piZ9Fuub0R/JRtA9si/YcjwO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiXbgIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpC4Q//QEMvkM7by1QGy3XFSwvsQTXrR9g0h1byVWxSAi9GiP7O9RCa\r\nbYiTCgmqIExOi1NESNwrSqrFS0eK0PxsWfEv5Uw42h+u5FMM+l9Nx16G/mZG\r\nOptVtW/x4PDZ9jQh/yE9QKEgucDrKlfRY/+116JMjIsdEJeKrwju3sDDPjEl\r\ny4o+UBC0OSzXU+J/kQmQWMeBTaVSl9BITR3Puk15DrdJm61271f3ZNytDoG0\r\nf8QN2RF7zmZAU0flI95iTVnYYomhaCsvfsDepc6xOZQMP92riiyUxt0SDOnZ\r\n35sVVM/IAtealfVDsO7ZgWQA018jQz/DgVILnQSnvJNeA5t30PKB5Dih8TgQ\r\nvlIpKfw5KWclT+BU35lkdmbkQUtFi/Jgavkw1kmJKNjzAZ6lYltuDTw3RwX0\r\njQaid9M0+gfn2msFCA6Y22hI4yYXvCqXyRrXA37pKKt4G50xFjTz4/VSogND\r\nUR0871PRj28yTu3f9Q8fsTtIhGFQYxPk5lUO+3reL7eSdkY5PqRm9fu8PMIf\r\naTKvUp9Bc3qW7HgXo1p7MJ9p05Sv1fhqIyE1RMOl0RyqrvTyORfHlhYaL97g\r\nI56JIhgHNve/DR1eNIFY2jHix82vCjL+bmT7u33fTwQoeMSPWmNSuzHqmMGt\r\n8uZHKgKwfJuOY6y8Jjhdn61vjris/FDfLPY=\r\n=vDFN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.1001-62246.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.1","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.59.1001-62246","@fluidframework/map":"0.59.1001-62246","@fluidframework/cell":"0.59.1001-62246","@fluidframework/matrix":"0.59.1001-62246","@fluidframework/counter":"0.59.1001-62246","@fluidframework/aqueduct":"0.59.1001-62246","@fluidframework/sequence":"0.59.1001-62246","@fluidframework/test-utils":"0.59.1001-62246","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.59.1001-62246","@fluidframework/test-drivers":"0.59.1001-62246","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"0.59.1001-62246","@fluidframework/mocha-test-setup":"0.59.1001-62246","@fluidframework/container-runtime":"0.59.1001-62246","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.1000","@fluidframework/ordered-collection":"0.59.1001-62246","@fluidframework/register-collection":"0.59.1001-62246","@fluidframework/runtime-definitions":"0.59.1001-62246","@fluidframework/protocol-definitions":"^0.1028.1000","@fluidframework/container-definitions":"^0.48.1000","@fluidframework/datastore-definitions":"0.59.1001-62246","@fluidframework/test-driver-definitions":"0.59.1001-62246"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"0.58.2002":{"RemovedVariableDeclaration_pkgName":{"backCompat":false,"forwardCompat":false},"InterfaceDeclaration_ITestDataObject":{"backCompat":false},"RemovedVariableDeclaration_pkgVersion":{"backCompat":false,"forwardCompat":false}}},"version":"0.59.1000"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.1000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^0.58.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.1001-62246_1650309128598_0.39052617022936764","host":"s3://npm-registry-packages"}},"0.59.2000-63294":{"name":"@fluidframework/test-version-utils","version":"0.59.2000-63294","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.2000-63294","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"707e1376c421580c2bcc878cacf6161c0505e5a5","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.2000-63294.tgz","fileCount":53,"integrity":"sha512-KZGbw8IuW5POLUneWRn0aH6D+irltqgtu7f+YkhtzMBJFOlHMBxJIH4GQUlx/N5wysXfQ4E5uyFC6zVOeTg2gA==","signatures":[{"sig":"MEUCIDA/muHdkd8c1+P96AwFkLDMeG/tEcFsF0OaZTw87PnyAiEA5T0vd74w5rNSLbDKGnqO/ujYK5Gqlbwk/OQlstgDX+M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":191162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYxpbACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqAqw/9FlG0qm1XMwGGmOxbpcGw9Urctg6m4W8bingi7bNySJ+5MllR\r\nEjru8WC1tEdxD8+T1gPAfcBkA3FS0bsuiU/3ZVLbxoCQ5wsocMXB1Ymoy1en\r\n1WCc9raIDAF9VpQY1YSij448kIFGRrBzepCtrL1AbxkNkrih/L7A3YJ3wT7y\r\nvOpQajhn0L1eJ234WMkPaphSjquky/oAB7KX2zLY4Os91jDpQF3Q1FSKRwvG\r\nzN5v9xJ4Ua8CKTqUXf20pz3dbyBDJxzwuNiI+FzJuwCQ5IgV9lf43jy5zoUN\r\ngSiv9hiDleTXXjWNLQoTNJC5OuFt2LftLjb2jjBylqEO9LDZg+Z8JabJc/yS\r\nkJ9LvvmA/y06b3NySe+6hoe+w/PL/JiuEV7njgQaKtkyxUKKc3DKcT7gStAI\r\n+LCinjJugPWvLbs8Q/MXcrykQJdWsYDViGdOG3pmGgGWUhwr5j4W+e0VXIoN\r\nSc8mA9hMYdgzYZdRSyEHXqxVzWSCpoH48GGBgpZqFqTQb3d+1h5TjgqYl4OQ\r\nQQ8/1MkPkdzahsafUOLVy7ciCWDp0iYU4uPu1lBhjl/QHxPdCGAxCJkjoISy\r\nS50gS/Txkb9nMdTLHyHlTIiDBsM7ABz2a+ojR44xGoH69rjxA/zNkkFt3YQ7\r\n+TUUQG/sWzhU/swqpcLmS9xMfL+96JkHgwY=\r\n=mVsp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.2000-63294.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.59.2000-63294","@fluidframework/map":"0.59.2000-63294","@fluidframework/cell":"0.59.2000-63294","@fluidframework/matrix":"0.59.2000-63294","@fluidframework/counter":"0.59.2000-63294","@fluidframework/aqueduct":"0.59.2000-63294","@fluidframework/sequence":"0.59.2000-63294","@fluidframework/test-utils":"0.59.2000-63294","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.59.2000-63294","@fluidframework/test-drivers":"0.59.2000-63294","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"0.59.2000-63294","@fluidframework/mocha-test-setup":"0.59.2000-63294","@fluidframework/container-runtime":"0.59.2000-63294","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.1000","@fluidframework/ordered-collection":"0.59.2000-63294","@fluidframework/register-collection":"0.59.2000-63294","@fluidframework/runtime-definitions":"0.59.2000-63294","@fluidframework/protocol-definitions":"^0.1028.1000","@fluidframework/container-definitions":"^0.48.1000","@fluidframework/datastore-definitions":"0.59.2000-63294","@fluidframework/test-driver-definitions":"0.59.2000-63294"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"0.59.2000"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^4.46.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-jest":"~26.1.3","eslint-plugin-mocha":"~10.0.3","eslint-plugin-react":"~7.28.0","eslint-plugin-tsdoc":"~0.2.14","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-promise":"~6.0.0","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.1000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@0.59.1000"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.2000-63294_1650661979056_0.4833513060077068","host":"s3://npm-registry-packages"}},"0.59.2000":{"name":"@fluidframework/test-version-utils","version":"0.59.2000","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.2000","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"4ef335ad286cc62ceb08b178ec2429bb6851cafd","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.2000.tgz","fileCount":53,"integrity":"sha512-OkW+xnS9tmTs+LwiWrvkAQMwP+za507QdSyhX70DE8yC+jCkvnkYMFXUCd91aEd/xDyDN29mbgqFyiSCrV56RQ==","signatures":[{"sig":"MEUCIQDhOezpugULB6a/9sZgKq9wN4d2eWqeRCx/pfL29ZdZnAIgf2m4dRVR20tqfzA8BsPbxx2YqTzZnt7aTSkkU7EpydY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":192271,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiabdnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrWoA//Ttcpap1SsM0OmmkUHzj1S+EzpNiw4SXHaxLaKypsOMOUTqvy\r\nSL4VSppAt5OepSAwT68bK+Gq7ck7umiRPVuDGL2GwRxHNef77kkm6icIg9CR\r\neBgOuGtcAJoPoTrDlSpwfus3sMU11lLllX1oOIRpRgzwImbaCdqdXPwngTIj\r\n0GaAVXvIiXcRfmsL4i2YPOrcE9x2ZjJDTnZKHYT5o3D5njis2UX4y3Ii26zL\r\ncSVrWWuaRQSM1KGsGmsfxZZaq8enKRq5vpgwd64e8UHyjoozwUOnQlxJviLB\r\nzdV/4oQ4C7rzHgIw95jdoyKAhKyLmpUDS3V+b96Ia8/Vcf8xCwm4Kn64ol4X\r\nV5ICte+yXnMvIv4DhhqrAoAnLouyQctI/j2zp1arxe3u7TRO3jdvBBvRJMW5\r\nvUW2yLpJar80vMcBjuBvOL/RNTrqs013f5+nfbGsh5Q0GazDgICcQySeTATG\r\nXcnHwQLN4bvsAxINVPYIKXR1dtqOK62wQqmZRrTtEmXzzMMLUyLCW4IpyiTl\r\nWU7+p6BVffN1EYJlrmltGRabkk1nDl+ZReaWBSXb2ikhFKcjqkUqzjqkzuGi\r\nxSTRrzjf1XWobaU4prlYF3iRQmn9yJDXvAakUs7Ao2JdfjvakIGrhuIFCPGF\r\nVMNjevNKslDa9kELzpzQmwkwyERj9kHyeUY=\r\n=iSVG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.2000.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.59.2000","@fluidframework/map":"^0.59.2000","@fluidframework/cell":"^0.59.2000","@fluidframework/matrix":"^0.59.2000","@fluidframework/counter":"^0.59.2000","@fluidframework/aqueduct":"^0.59.2000","@fluidframework/sequence":"^0.59.2000","@fluidframework/test-utils":"^0.59.2000","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.59.2000","@fluidframework/test-drivers":"^0.59.2000","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"^0.59.2000","@fluidframework/mocha-test-setup":"^0.59.2000","@fluidframework/container-runtime":"^0.59.2000","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.1000","@fluidframework/ordered-collection":"^0.59.2000","@fluidframework/register-collection":"^0.59.2000","@fluidframework/runtime-definitions":"^0.59.2000","@fluidframework/protocol-definitions":"^0.1028.1000","@fluidframework/container-definitions":"^0.48.1000","@fluidframework/datastore-definitions":"^0.59.2000","@fluidframework/test-driver-definitions":"^0.59.2000"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"0.59.2000"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^4.46.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-jest":"~26.1.3","eslint-plugin-mocha":"~10.0.3","eslint-plugin-react":"~7.28.0","eslint-plugin-tsdoc":"~0.2.14","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-promise":"~6.0.0","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.1000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@0.59.1000"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.2000_1651095399619_0.5222967112863515","host":"s3://npm-registry-packages"}},"0.59.2001":{"name":"@fluidframework/test-version-utils","version":"0.59.2001","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.2001","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"3ab96bc34ff9762027611081d6c907116fa238f7","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.2001.tgz","fileCount":53,"integrity":"sha512-Z4KHGohux2PUSq+E2iT0c+ucDuDuldcJtYhEEpTqde7ovjndP99oBRbjWrfIa3sNnvxLF3iau6bm47Vw1VUpgA==","signatures":[{"sig":"MEYCIQDjpUFJZ2xaJ7wQOjo9ZdENCCfKUClaI7VuEwLsgcWsCwIhAIpcgMKYW2r3UiaUrncC/PBMQEXwRuz3u+zFPYHtFfjA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":192271,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicaFJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqW+w/+IISzRz7wQKmCOocUG+5g4LgKnPsWZ0mjNAOF20ZKpTSM8zpS\r\nSfILo5rTHuGYF6TmoSqbrRjVPULN+Shtq6LIQtk6VBgrjLtXqpxGB33WO3gN\r\nonEMDNk7moJZDcEr1UOYMESvGx0m5JUOP37XPTIUKrFyO0Ab/GSvjsr/gEBh\r\n9YU2hHh1ja3JmOJ6HMR+W5edWTEE9xPLKJZxoG2ufmwq0zrfYBLblNgFZIed\r\nmFGTue+Pu8uO8+BSLLwm0amdt74/VrrfbMunld4Clsv+978cZnBssYQWxJEC\r\ne6faLJabQ+2tzcYFsmeH71Z9+7rqg+uEzmjgiuzaqCeOYmzwrf9+mnmhuJ9l\r\n8Z+v7AeC6GuxmcC7SqPjuNZAqoi/r4VDCBLpTGpETsGT2M6hz+Vwh2dfqRJO\r\nFcwSSXrG0JOKih/7iy5hshY9FVNMsmMBLHlNIdzD88JxSKfsP7HYnVVLS7Zi\r\nxJzBor1224fo/TsS8ChsxlCqFMkWBZL2Le+qOjJXzjKI7ikz9BWorM4LVNJt\r\n21kA5s/Eu2/VrHOodIVLkVSfYKGai/6LSDrKjqpGxrPcasnVpwB8LNhdot8/\r\nXM/v8qUTqbxpLAxjUgb4VcMHdWHUHjP0YQUFykpYtIigYC7zfj/oJeyT5R6l\r\nuGO5avX2FgU6EwA/3YdHabg+d4pJLXdU+RU=\r\n=ziZr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.2001.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.16","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.59.2001","@fluidframework/map":"^0.59.2001","@fluidframework/cell":"^0.59.2001","@fluidframework/matrix":"^0.59.2001","@fluidframework/counter":"^0.59.2001","@fluidframework/aqueduct":"^0.59.2001","@fluidframework/sequence":"^0.59.2001","@fluidframework/test-utils":"^0.59.2001","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.59.2001","@fluidframework/test-drivers":"^0.59.2001","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"^0.59.2001","@fluidframework/mocha-test-setup":"^0.59.2001","@fluidframework/container-runtime":"^0.59.2001","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.1000","@fluidframework/ordered-collection":"^0.59.2001","@fluidframework/register-collection":"^0.59.2001","@fluidframework/runtime-definitions":"^0.59.2001","@fluidframework/protocol-definitions":"^0.1028.1000","@fluidframework/container-definitions":"^0.48.1000","@fluidframework/datastore-definitions":"^0.59.2001","@fluidframework/test-driver-definitions":"^0.59.2001"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"0.59.2000"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^4.46.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-jest":"~26.1.3","eslint-plugin-mocha":"~10.0.3","eslint-plugin-react":"~7.28.0","eslint-plugin-tsdoc":"~0.2.14","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-promise":"~6.0.0","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.1000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@0.59.1000"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.2001_1651614024938_0.19518994585623073","host":"s3://npm-registry-packages"}},"0.59.3000-66610":{"name":"@fluidframework/test-version-utils","version":"0.59.3000-66610","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.3000-66610","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"76d8095701d17f3f5d6933825b73badd21131928","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.3000-66610.tgz","fileCount":53,"integrity":"sha512-CrLfo7iWQE+3ucSTfN1j4niivTQ7MOAYzJrT9J9mkwIH7KH26OqD9ykynAKdl7B1zUaOEIepq5tQCQ7IzpQXAQ==","signatures":[{"sig":"MEUCIQC02PjVbg6XRcRx+p/NbK6aGBiHmWSn4GDMWHN8mDn2BQIgVWxBeUOylrfyDYQ+VwmG46BlHGXytbcwriaS5qLGOtM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194345,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJifnpiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpgsBAAioKN5I9HX/tbr32lAN+no+hmn4N355YXf75N7rcgIVLRs34w\r\nyMyPGGfDcw37dWIEqvLL6Ip1akUB6NiiEASOGiEvFyG+xfahY9eJ1YCTWjdM\r\ni1vRcuVtWg5kjrVeibk3GvDimhc/tWksuyXI6O0LM9R6cPFBnI7WSptoD52t\r\nO7ku3v7qKopOBQfmCxbV7EAqkDucFs+SXqw80cTBg1TTyieNiSb/Maudf4II\r\nNSEdlOV6PZCKwLOCbTMWbn3/hkE49DDX+nceIIubWjVPGbJP24Jm4+ikWIWg\r\nDugMeIvxlrk87eZGMsZhZGQUJx8YnhhepsM6PaautGjh/vHhzd4jIvDxRFV9\r\np5FUN4wNv3XeUKNHqXnBuPrVpfoKONkTXhb6BDYPLEYPmeDuQV+Bm6WVVkn8\r\nL75xnKxkn5pgUVftJmElw32h4qOLa7QDLc7snImUhKqswEOOby2GzwkI4GVU\r\nc0zY7gfDlUuk/AvqXD45TlnRUTrjh3WrrssOQbpuRVABRP4H6ppbD4gJykAS\r\nyMtT0YAhFrUaFbcgztfY8lC3TEu9KEUCXFllpAWplu/c+1w81LNP3+nG1k7b\r\nyDgNh6SXmKIqXxplvIzO/UPCPzH3t/12LdZC8X4+ezRgbKWHyjV26nvCr8Bf\r\nQX+hvCTx7Ajy1F3rQBZPOQ0gMqrKVdOPA6c=\r\n=ovq4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.3000-66610.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.2","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.59.3000-66610","@fluidframework/map":"0.59.3000-66610","@fluidframework/cell":"0.59.3000-66610","@fluidframework/matrix":"0.59.3000-66610","@fluidframework/counter":"0.59.3000-66610","@fluidframework/aqueduct":"0.59.3000-66610","@fluidframework/sequence":"0.59.3000-66610","@fluidframework/test-utils":"0.59.3000-66610","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.59.3000-66610","@fluidframework/test-drivers":"0.59.3000-66610","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"0.59.3000-66610","@fluidframework/mocha-test-setup":"0.59.3000-66610","@fluidframework/container-runtime":"0.59.3000-66610","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.1000","@fluidframework/ordered-collection":"0.59.3000-66610","@fluidframework/register-collection":"0.59.3000-66610","@fluidframework/runtime-definitions":"0.59.3000-66610","@fluidframework/protocol-definitions":"^0.1028.1000","@fluidframework/container-definitions":"^0.48.1000","@fluidframework/datastore-definitions":"0.59.3000-66610","@fluidframework/test-driver-definitions":"0.59.3000-66610"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"0.59.3000"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-jest":"~26.1.3","eslint-plugin-mocha":"~10.0.3","eslint-plugin-react":"~7.28.0","eslint-plugin-tsdoc":"~0.2.14","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-promise":"~6.0.0","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-tools":"^0.2.66048","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.2000-0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@0.59.2000"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.3000-66610_1652456034201_0.5500330379516962","host":"s3://npm-registry-packages"}},"0.59.3000-67119":{"name":"@fluidframework/test-version-utils","version":"0.59.3000-67119","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.3000-67119","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"cfaf1acd3472630826d9b003f33b835f7438b75f","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.3000-67119.tgz","fileCount":53,"integrity":"sha512-1f6cWeqMHDbntblIDINg6AobsNWttqenYCP3rNbHO8SBydU7HX57lX1z+/DZVZqDneTqB0ZKMF9gdCD6eOWkzQ==","signatures":[{"sig":"MEUCIQD1uN50W9XMJ3vFAWj5QSHuA+OVEhSNvSH7kCa0WFk13wIgYVbKWGWzzN60hag2SH91nYGCVh4TYIvoFIiWqvvFZfc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194261,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJig9duACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqKIg//QqL1FHhKU3GWi9uKUBOKJfByMsPRhwnSsIf7PM8C6Z4cnjAa\r\nAMF7hfCsIvyl20db35PNKxv8sBKVuE7S96qCPAJ2+lAH3/jwiQPKGTJepsPE\r\n+XytxCLUoMNdCDrVCbU8vxVlG6vQpk9laMPha0a9wfKn0tmvef2RUtSNXLX2\r\nK+cDMuZtxTvsPBew47tKy99aTBpzaOS399o5FMh+VmsnFtraWqe6+F47/M9/\r\nVUHQu/H2sSrU4XGQT/3sAVZ2h0SePc76g0pgt20Tiq6mxZrF1a/VvyGoDRmS\r\nyQJHKaq2ujn/0acElm35vtXvEcwnYolVBTtiKIZfLqpmAEOMANXdQ5o5eWRA\r\n6f/7pgXCIlExWiTHNdebpXVRixrZedd4aJZ5vgp8Jew12r/og5n6EKIglTc1\r\n8UYWn/6+sBKYZo6LPt5WV4UgtkmwuqOKnbv0fc8z1AkTtBU+XuvgmQM4EImy\r\naNm25FkDqvgf0Eo1hzDA/vyYsHLBc2ZdTVgSlVpBRQoSeWdRR01NwdcFCJkf\r\nM/zFpc66rZ0SyoZPDJkZ+RGkNuM0XGlXglcHJmfxAx8G5KcavV621cJrBr5v\r\n2av4Z0mL+Kvp+XEYEF6+t7d/Td8V3xuJpER0UC0OVp4lZhXfyHnhNNyqnojT\r\nQEpxuDtEwiNgCbW6efIxzMUWkU/wTjYYOp8=\r\n=w3dr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.3000-67119.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.2","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.59.3000-67119","@fluidframework/map":"0.59.3000-67119","@fluidframework/cell":"0.59.3000-67119","@fluidframework/matrix":"0.59.3000-67119","@fluidframework/counter":"0.59.3000-67119","@fluidframework/aqueduct":"0.59.3000-67119","@fluidframework/sequence":"0.59.3000-67119","@fluidframework/test-utils":"0.59.3000-67119","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.59.3000-67119","@fluidframework/test-drivers":"0.59.3000-67119","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"0.59.3000-67119","@fluidframework/mocha-test-setup":"0.59.3000-67119","@fluidframework/container-runtime":"0.59.3000-67119","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.1000","@fluidframework/ordered-collection":"0.59.3000-67119","@fluidframework/register-collection":"0.59.3000-67119","@fluidframework/runtime-definitions":"0.59.3000-67119","@fluidframework/protocol-definitions":"^0.1028.1000","@fluidframework/container-definitions":"^0.48.1000","@fluidframework/datastore-definitions":"0.59.3000-67119","@fluidframework/test-driver-definitions":"0.59.3000-67119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"0.59.3000"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-jest":"~26.1.3","eslint-plugin-mocha":"~10.0.3","eslint-plugin-react":"~7.28.0","eslint-plugin-tsdoc":"~0.2.14","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-promise":"~6.0.0","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-tools":"^0.2.66793","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.2000-0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@0.59.2000"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.3000-67119_1652807534468_0.8164175181324815","host":"s3://npm-registry-packages"}},"0.59.3000":{"name":"@fluidframework/test-version-utils","version":"0.59.3000","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.3000","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"01f896c07a66c6d11f2b9bc65b28eb9d773b9c56","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.3000.tgz","fileCount":53,"integrity":"sha512-afrZ5i8q2AW7sFUPXM2zC4SS7jrH1w1aS4NbDB6ET0ljmIzqkb3Gh+vDP3oD/VCETqysGxuDj4QUT2qrOUiXcg==","signatures":[{"sig":"MEYCIQCSK6ZfJV5PiofvqahWBIZ8avGabDikYSit6ba7reajTQIhAO7Giyitum7Qt1I8ykmzzwSfiLDgbZgVtpVWA8ieynuk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihTEiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp1pA//Qy7YhNtthaPSkFwF4IeVJ57qRbaVQW3/2E5RN1ex/gcvgPjD\r\nFxdzfy6ezMDfVvs717ypGqpW8vlXxpb6m2ys41YIQIPlVkYLjVi7Oy6DGEOS\r\nvJOMu1zH8SepTSXk9MG8LknT1JqhmXSP64lYzt2YHUJ31bLfoBO59q5zdfu3\r\nhJXojmbdBkycK26b+7q+o9IpyC1NsiDR0IXxQg3cVyxBSZ0V7ZdJvjmbrU1n\r\nMQ4kw6jSP5xSQoOKAyia1Rx5v+h6SA0SW+dnEYG5XaqfRkcEH6JPfCGV67wF\r\ni5IB6dGCZ8dIfD88m5ofWu3JIpGJ/UGNuWiIZS534SUAT2s9xu925csAg2cH\r\nfyRgrbLOW+QTuoZ2XlyJu2NgdbJk0HnvlsRBNL1Xd8K5gFIZiXYhsDOd3EuS\r\nGLXkvVPMMaXEND2fcYrYiFGsm5DPDNvUg0kpFXdV2oDfcfyo8c5pS8lk2z+B\r\n//ozIsrI2D/vwTpqB59t6IpMwWNxDFYiNPyo1H/k1zqxnaPQ36wQMR4o1g7e\r\nHotYbo9s2Sf2Y9s7Ea8IdO8Yo7cL5+D7CdtyOdvY+xIeO7vJRjqKFlel0Vwa\r\n2VPqtsAzGEb5nU1J6hxq/pyaIVim7QaYNwkhfR/y9cb/8L9KrG86PpW5hgX/\r\nmpZp4UW4muHVrhD3rNez6Ddw80ZF1ZoCddo=\r\n=DYPR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.3000.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.3","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.59.3000","@fluidframework/map":"^0.59.3000","@fluidframework/cell":"^0.59.3000","@fluidframework/matrix":"^0.59.3000","@fluidframework/counter":"^0.59.3000","@fluidframework/aqueduct":"^0.59.3000","@fluidframework/sequence":"^0.59.3000","@fluidframework/test-utils":"^0.59.3000","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.59.3000","@fluidframework/test-drivers":"^0.59.3000","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"^0.59.3000","@fluidframework/mocha-test-setup":"^0.59.3000","@fluidframework/container-runtime":"^0.59.3000","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.1000","@fluidframework/ordered-collection":"^0.59.3000","@fluidframework/register-collection":"^0.59.3000","@fluidframework/runtime-definitions":"^0.59.3000","@fluidframework/protocol-definitions":"^0.1028.1000","@fluidframework/container-definitions":"^0.48.1000","@fluidframework/datastore-definitions":"^0.59.3000","@fluidframework/test-driver-definitions":"^0.59.3000"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"0.59.3000"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-jest":"~26.1.3","eslint-plugin-mocha":"~10.0.3","eslint-plugin-react":"~7.28.0","eslint-plugin-tsdoc":"~0.2.14","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-promise":"~6.0.0","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-tools":"^0.2.66793","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@0.59.2000"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.3000_1652896034421_0.8308797446227807","host":"s3://npm-registry-packages"}},"0.59.1001":{"name":"@fluidframework/test-version-utils","version":"0.59.1001","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.1001","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"60338c1d6e46c961328192c6d6002c9b94186660","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.1001.tgz","fileCount":53,"integrity":"sha512-tIwjkvXAFWdNmxr67243MSzP8YkZHBNitPhvngBHKRbbnUwhBP4gCoE70Da7kHT15AZjqz8wC1ndoixZREqL1A==","signatures":[{"sig":"MEQCID4qhu0uEAzg703R2ubcLw33i8GU6vKBzVmXC/ClgaMZAiAYSugjM5WlJoMW5yJ88ijapb8stA7KEzLoRF2n/YFBOw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194095,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihqxJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqQ1g//eVbDF7nawkQXMtXrrldjMwJPybIJeSFP86SzRLYuDnoIF+yo\r\nicUg10riXQJS33fCbX2qGC7oZw6X6tCRtdM/fNoIbOSUqO3UujI3yJSOJ506\r\nqnwKRUX0949BV6HzddBzocWU8z4/vLaZC1vgG6xHtjLsTXH4mXQTI3+rVQEZ\r\nID26qoqqlD136lWfwR/203r/FjgeoAInY06zj1WQbwY8fQHzo+PphAcd/p1i\r\nGtTQJ+h4+Um3iri6rozkrjDA150PKQny1Vo1B0m7FAUrq2vioyHVhRAkoYq+\r\nmuwqh11R7wTGNTqc39il47ex7oioD4v/FL75hfQXs29QBp7sKQ8tybXdJQqU\r\nHoe2fBUN4ZwSjbud9eyL7oz53cWWS9DYm1av/Frpku3/5PDAR1McO+Ls4hEK\r\nsWYlkcYzP5Ga00EPPE0skHkO+Yxymn8SYzo0CxxWLUxBoW+MovkxgulhCzrB\r\nDI7XknHqqfp5q+YsGj1jyN2NmU59jKGokvel8oWCf7ofOgXm4DDqtBAG4hqV\r\ndos/NMUYaNtz4d+8tbFBn9dVK0RWNaOjl7GaNlJrb5fAtd9zw9Tx8TDUCGhQ\r\nFaS9qCLbQMtfndthQOLE1Nj2lITmabT7rYDxrKCJJ944REZCTSMUkv1wthqE\r\n57L5fA2jkR5+J1AYvfsd6RagVnM4rWqEBRI=\r\n=LyL7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.1001.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.3","dependencies":{"nconf":"^0.11.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.59.1001","@fluidframework/map":"^0.59.1001","@fluidframework/cell":"^0.59.1001","@fluidframework/matrix":"^0.59.1001","@fluidframework/counter":"^0.59.1001","@fluidframework/aqueduct":"^0.59.1001","@fluidframework/sequence":"^0.59.1001","@fluidframework/test-utils":"^0.59.1001","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.59.1001","@fluidframework/test-drivers":"^0.59.1001","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"^0.59.1001","@fluidframework/mocha-test-setup":"^0.59.1001","@fluidframework/container-runtime":"^0.59.1001","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.1000","@fluidframework/ordered-collection":"^0.59.1001","@fluidframework/register-collection":"^0.59.1001","@fluidframework/runtime-definitions":"^0.59.1001","@fluidframework/protocol-definitions":"^0.1028.1000","@fluidframework/container-definitions":"^0.48.1000","@fluidframework/datastore-definitions":"^0.59.1001","@fluidframework/test-driver-definitions":"^0.59.1001"},"_hasShrinkwrap":false,"typeValidation":{"broken":{"0.58.2002":{"RemovedVariableDeclaration_pkgName":{"backCompat":false,"forwardCompat":false},"InterfaceDeclaration_ITestDataObject":{"backCompat":false},"RemovedVariableDeclaration_pkgVersion":{"backCompat":false,"forwardCompat":false}}},"version":"0.59.1000"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^4.43.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^3.3.11","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-react":"~7.28.0","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-no-null":"~1.0.2","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.1000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^0.58.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.1001_1652993097613_0.7421186056357878","host":"s3://npm-registry-packages"}},"0.59.2002":{"name":"@fluidframework/test-version-utils","version":"0.59.2002","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.2002","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"911826f1cb92700df5f807e60d2ea0feae1bea5d","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.2002.tgz","fileCount":53,"integrity":"sha512-/s0om0n2Y7+/proWE0iOZjSsMZ/CSd53OmMAxJa/Agvlq9t6Deq6UkHJFDX+oG6Oj7eFWzj6M1jya7YmHsd12g==","signatures":[{"sig":"MEQCIAYl+ZgdQrh8MoIpdxCuJn2T4U98Q+CI5nSLwLMYL1CoAiAZ+DUU5S9n8iksIn5AyPOc5GII8Spvx+1Nk+jLpxn/yQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":192271,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihslRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrYDQ/+LpBiMiPOqkSwhw7mRL8rU+78LJ9TYc/40sM3pDCNtrEGqwmH\r\nrQJC1jm6HNSRCzGUi72VchtUuHK6+VHwT+RA2MxmGnevGFcOdbyIIbFM5Ufn\r\n8UjXTVE5QECODObb2ubvFYv7mbH0kU8RarfGY90YO1wAC++5tvd7mNFtMRJf\r\n8pYFKuIB6wK4C8pAu8h5CeOFMijpShtjZ56C7CQRd6B2ZCvu48gKoj+Ea8v9\r\nLCmNYq35poF0HfSMkdIoDqrjuGz5PAUVdjLvdJgNMZTaVF56KJMD+uU4mZje\r\n3vv8PR0PM5RUwgDTcNRoQQBcT0+jdORGMZSbEvAQL5WDIN943HJRCF0lBS3P\r\n4qhy2FOCQfNlMSvLlokCNpay/jMlisBxKnCN9Px2ezbagH/Pj6xeVYEqdaqQ\r\nf4Kj4YkscTYEQKULYh6ljBprJNFgm/0w+Kskldz+yg6uqPZo+TzShqQc04/v\r\n208QU3yLzCt9evuDP6ZvitByCnhWsEvkVBSwrt2k0oyyO8kkN9D9BR+G7/L9\r\nxaJ3zGB/mHzL2XMbXvYAU6+I5V5Jp6e4phm7SVxy/nxPlu1YHVb3tSL5hGli\r\nd+tFxdZOYCRjvVa6y0pna8O8OXTs0w8hITgdrdSoZwP9m8RYh7hW/8FElnPw\r\n5Ag7xA/gbWETCqqmPV5PmqOl4PIkJqkD/zQ=\r\n=aulA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.2002.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.3","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.59.2002","@fluidframework/map":"^0.59.2002","@fluidframework/cell":"^0.59.2002","@fluidframework/matrix":"^0.59.2002","@fluidframework/counter":"^0.59.2002","@fluidframework/aqueduct":"^0.59.2002","@fluidframework/sequence":"^0.59.2002","@fluidframework/test-utils":"^0.59.2002","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.59.2002","@fluidframework/test-drivers":"^0.59.2002","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"^0.59.2002","@fluidframework/mocha-test-setup":"^0.59.2002","@fluidframework/container-runtime":"^0.59.2002","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.1000","@fluidframework/ordered-collection":"^0.59.2002","@fluidframework/register-collection":"^0.59.2002","@fluidframework/runtime-definitions":"^0.59.2002","@fluidframework/protocol-definitions":"^0.1028.1000","@fluidframework/container-definitions":"^0.48.1000","@fluidframework/datastore-definitions":"^0.59.2002","@fluidframework/test-driver-definitions":"^0.59.2002"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"0.59.2000"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^4.46.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-jest":"~26.1.3","eslint-plugin-mocha":"~10.0.3","eslint-plugin-react":"~7.28.0","eslint-plugin-tsdoc":"~0.2.14","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-promise":"~6.0.0","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.1000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@0.59.1000"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.2002_1653000529598_0.845240833641939","host":"s3://npm-registry-packages"}},"0.59.2003":{"name":"@fluidframework/test-version-utils","version":"0.59.2003","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.2003","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"bd2ba97fd75e9cbdb9f58c9720e10cb4e09821dd","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.2003.tgz","fileCount":53,"integrity":"sha512-JHWrRuRk/6j4O32b1OzkOMehvd6Ghs0rvEY+tnt2Pn0tR0gJERpTFP1Su53PK4Jv8MQHNxNs17iIUPrZ2P7Y+w==","signatures":[{"sig":"MEYCIQDs8Silp3H9V4s5tCvkJVGpHwWn+fb2yYwVEG9V7tpU1QIhAIzNorxvf8aKT0TlSIN7oJEIb4S03zHt0OSik0rHOlwE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":192271,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJijpPMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpz8Q/8D3Dv7ZtA8VuxaP0wA/mRb3d5/xWMQtiHhyvoHb8gYvn7+Pi/\r\nWao0fd5TqLAma3MKQhw/O1PSo8TeqxShvgTfZgfdafmd4q+rB86YJ7KTC+r4\r\nYRNnSsKcQTaQuSTfhac6xhua9ZpKCX+Zflyot87tiCvRIHyp3RfHWHZ0FI1s\r\nWfsv5YNONEmcHDZ+eVVYO29ncr/7/rl0zqNsPQINLC5KdC/XFvE19ij1hRbL\r\nZCITYkBtksDFPzYVrf5EF/GKh4nD15CCyjdaUdeJ7MX6QoTiN5stGYZ6ymMR\r\nyZcPM1R5RJ/Y+QuHoSX3uW1xba5KZ0Z97f45wNzYTSDgmIQufVj+QqgdUYN4\r\npFKrkAifuR10yjcuw+p3y/7bfNxSoSWgx9UdNOv/JhFj3nAI9gnOAVJ1fHdf\r\nkJyzuuuAegsvXS1yJgpNxc6kTE4iDxbksIFjmrjoBz+tpE+Ldb9mdcNYwcjh\r\nzz1Iy6i4PSYpXbQXqYmpM4QpcTEOlvt98n7+yWzpfVJobHPDzs7rcPZ9YSun\r\nwXB6NMAzlPCkO4xDu7YGf82SLyxYTy+RJTpo70yXNeATChDEof4Tj6C/bca2\r\nj4/gteNjMICPbCIImSio4BIm7bE8IAHXnSRjXOZXbMmkuCTvwrJIqm/JGmvS\r\nU66UKZsgWdMX6FjvrbKIx33JEXWM4V9RobA=\r\n=awtk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.2003.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.3","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.59.2003","@fluidframework/map":"^0.59.2003","@fluidframework/cell":"^0.59.2003","@fluidframework/matrix":"^0.59.2003","@fluidframework/counter":"^0.59.2003","@fluidframework/aqueduct":"^0.59.2003","@fluidframework/sequence":"^0.59.2003","@fluidframework/test-utils":"^0.59.2003","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.59.2003","@fluidframework/test-drivers":"^0.59.2003","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"^0.59.2003","@fluidframework/mocha-test-setup":"^0.59.2003","@fluidframework/container-runtime":"^0.59.2003","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.1000","@fluidframework/ordered-collection":"^0.59.2003","@fluidframework/register-collection":"^0.59.2003","@fluidframework/runtime-definitions":"^0.59.2003","@fluidframework/protocol-definitions":"^0.1028.1000","@fluidframework/container-definitions":"^0.48.1000","@fluidframework/datastore-definitions":"^0.59.2003","@fluidframework/test-driver-definitions":"^0.59.2003"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"0.59.2000"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^4.46.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-jest":"~26.1.3","eslint-plugin-mocha":"~10.0.3","eslint-plugin-react":"~7.28.0","eslint-plugin-tsdoc":"~0.2.14","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-promise":"~6.0.0","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.1000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@0.59.1000"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.2003_1653511115878_0.9546102687195133","host":"s3://npm-registry-packages"}},"0.59.3001":{"name":"@fluidframework/test-version-utils","version":"0.59.3001","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.3001","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"5478383655f40292abe8cfd18011bdb80dfa7a9f","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.3001.tgz","fileCount":53,"integrity":"sha512-2yWGZsnnibrHUY/sx1AS1pcbCrZ4oONZvg/gDSGD5XJP6GG3qtAgLRxGxzWHC2BjTMxwqNk59y4xQM+FlnkINQ==","signatures":[{"sig":"MEUCIENeCZJwGQQtOvhF/UcvYUn0BBrVzsWAD6jpIMSrhWnEAiEAwMbbDuk2P8xmzPvn7PFaD6jvxmXHWKcYCF5uO9QlIGA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJijpaNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqd6Q/+N4ViKOamArOlW//Id6qeOQDr9Mb4fQP/DbqkXEXQEWUqjqbp\r\n3rzb9ogSUq/sdCgOxjw2N/IcjLIzxn6xlvBc3vaI2iAIAflv4VEd3yI11Qdu\r\nRQCccNfIQ/Fly9Fk+moo1WIvcw13a9V3Qgh0HWjJTAXErGCeTY91vTFt/tyo\r\nsOFSy2bWc704+1w+ipVRjh3aQvl8Q+orjTvARDhcht3ZM5KBRh1XWPuGGIn1\r\nsLuovozasLAulEAxOoc5BkU3O1pYv7jbQ5mWpLQRMVLOaa36hP5ZOKJz7Vc5\r\nS1A/kn09WBKWZnihf4z5bjS9pdZa2JyK2aLNVAw9OFzQvXu4VYLT6D/tKzT4\r\nmd5d6qISmWtJKfgXjMsyAg6bOSZHBrNkZvM7958AP/uJVJEfdprkqCOUp6H3\r\nZWuDHuUdIsQoQpeTlz4rMDzoZwF9EwuUlXkx1JHG/WYl2s2yXEmDqQU2tEli\r\nX5fIIjp25ik6xTWD5UezgY/n+zBJDRNKX6eN2pGwL7LKm4cl97yY4lJ4KFsu\r\nOA3pqaxhO+cp2XF3di38qpm3rkUdtr+6hx063s8c686JtcBO74Ly5QFvcDp6\r\n9EGUOfB/lFXR7uT2hE1pQJ5U0yve6A7OkbsSYVuWwxBiSTPC6RvP+6HhiYMf\r\ncbOiYIw9o0q364gmpa0YSXW1zmTjHU9+v5M=\r\n=XzUi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.3001.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.3","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.59.3001","@fluidframework/map":"^0.59.3001","@fluidframework/cell":"^0.59.3001","@fluidframework/matrix":"^0.59.3001","@fluidframework/counter":"^0.59.3001","@fluidframework/aqueduct":"^0.59.3001","@fluidframework/sequence":"^0.59.3001","@fluidframework/test-utils":"^0.59.3001","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.59.3001","@fluidframework/test-drivers":"^0.59.3001","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"^0.59.3001","@fluidframework/mocha-test-setup":"^0.59.3001","@fluidframework/container-runtime":"^0.59.3001","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.1000","@fluidframework/ordered-collection":"^0.59.3001","@fluidframework/register-collection":"^0.59.3001","@fluidframework/runtime-definitions":"^0.59.3001","@fluidframework/protocol-definitions":"^0.1028.1000","@fluidframework/container-definitions":"^0.48.1000","@fluidframework/datastore-definitions":"^0.59.3001","@fluidframework/test-driver-definitions":"^0.59.3001"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"0.59.3001"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-jest":"~26.1.3","eslint-plugin-mocha":"~10.0.3","eslint-plugin-react":"~7.28.0","eslint-plugin-tsdoc":"~0.2.14","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-promise":"~6.0.0","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-tools":"^0.2.66793","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@0.59.3000"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.3001_1653511821146_0.38015025900094224","host":"s3://npm-registry-packages"}},"0.59.3002":{"name":"@fluidframework/test-version-utils","version":"0.59.3002","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.3002","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"2a0f5ab025d1a1324ee0b4e7618cdcc035145558","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.3002.tgz","fileCount":53,"integrity":"sha512-RSAq2+NGrBSFA31+jS6MFTvhLWs9S2IVBtTKZ+JZPWgbrmmjwwSU/uwCa20llWNDdh1cHcwxtZ1GksVTxI9IIg==","signatures":[{"sig":"MEUCIQDOPJHt+I4vsrgvg8gcRyaxaygirKXWe5sWwfDEULSvJQIgBarOaCElCQehXpkyOzAM9Zrb5JDV5WHoXa6dz6jyYik=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJij7mOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqC2A//eEjbA4s4gLqoMOAX3LhIHzO14pzJmQdKN9jxwrOgvzIvvO4N\r\n7DO+uGkFCs5zYHinLHituRCVSktWbQCWOEJp1qLvRuQsmnTRWR00SHbNKb37\r\ntePWrMV08x3Ic4cXd0IKtw+bJB+xBnBaeP/Ti7i5/WAgVC4LvbM+edNvsDSg\r\n7a3oSoScdHuOeVf+yhZ5Y4iY19TZGEJX3wY98ac1gQH65gzbeQD61wm8OM6O\r\nx2wD4K+433/iTl8aJp/nTNPUTfIT9hIO0TFF4j1P8o/4KxWXl2tzRem8J0ZK\r\nqJWfVManLT1LVOS25aYDJwsejTa+ioOP02twqZeBhHEmwz1fJ8F+hZiNh2uB\r\nS2NG7Gpjhj6/zBgIedh1Be9AiW20i4iyZ4pz4VyO1kdin9lk0AXcw8GF+zqs\r\ndvMG6G7OO+0Rozu/Sctb0vCBHgj5c6PFQOBR5vffaSvdWKDRajHL0zr2Ulym\r\nIDT+WmE1nkN2vUEvqQJzTR1iXA9oQ8HWcHhLake8ZYdnive/JSgTJaNI3Bsx\r\nYLShlWDw1R7LQ8VnWkjUmtRMSD9IJ+cu6HCunRPT20HPKkUf4GsfKkipYMnV\r\nKHQKhJW14zQ6UB5B0JBRz1q358mrFCjGxh14q/Rpj6WfwXmFn9f1tCJbEm0K\r\nOtsCn81Q8cDTTLG5f5MNAqXzUZqVfk0RVHk=\r\n=2AJF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.3002.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.3","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.59.3002","@fluidframework/map":"^0.59.3002","@fluidframework/cell":"^0.59.3002","@fluidframework/matrix":"^0.59.3002","@fluidframework/counter":"^0.59.3002","@fluidframework/aqueduct":"^0.59.3002","@fluidframework/sequence":"^0.59.3002","@fluidframework/test-utils":"^0.59.3002","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.59.3002","@fluidframework/test-drivers":"^0.59.3002","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"^0.59.3002","@fluidframework/mocha-test-setup":"^0.59.3002","@fluidframework/container-runtime":"^0.59.3002","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.1000","@fluidframework/ordered-collection":"^0.59.3002","@fluidframework/register-collection":"^0.59.3002","@fluidframework/runtime-definitions":"^0.59.3002","@fluidframework/protocol-definitions":"^0.1028.1000","@fluidframework/container-definitions":"^0.48.1000","@fluidframework/datastore-definitions":"^0.59.3002","@fluidframework/test-driver-definitions":"^0.59.3002"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"0.59.3001"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-jest":"~26.1.3","eslint-plugin-mocha":"~10.0.3","eslint-plugin-react":"~7.28.0","eslint-plugin-tsdoc":"~0.2.14","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-promise":"~6.0.0","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-tools":"^0.2.66793","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@0.59.3000"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.3002_1653586318177_0.8614475006095719","host":"s3://npm-registry-packages"}},"0.59.3003":{"name":"@fluidframework/test-version-utils","version":"0.59.3003","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.3003","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"a2af4acbc221b9b8ff44e3a3681249c76be743a3","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.3003.tgz","fileCount":53,"integrity":"sha512-wDgXbsxI3/zUEgdoxyoXlTFHKM67Ww019/drJ5QGog2pgxn0UsF+8vIixElsfHzFzF0PjAmqeH8ytEz7yiJSkw==","signatures":[{"sig":"MEUCIQDyuKnLK1h5uReLhXfuXU+7xLrrp+Yy86csWcGyqbY5DAIgJ1K3wLHZwaodVdl9EaZJICWhylxWb3ssLGPqAprsEUs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJikUAJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqYlQ//T4vR6+yOFyL2harAlB/d0b7dXkrQtPI/LaAsZFrxt+gkcgzs\r\nB5x21ht+nYQhrnKk42xEuSr+1A/pfAFrjHHDHfPCKp0jRBb+oMQiwW/1l07m\r\nyLsrO0WXdK+3NFoIe3yDSJ+DlDAiVrmisxwg4Sg1cHGGf4YrF75T60Ile8Kk\r\nES0fgAxy/aEZQMwLAe4hzLijcSJd8/rkRkC5FTGPxmeLYxau9Dwq5BZFXP6z\r\ndRop0uoIiXheFcMjTUH6CyH7YZa8AXoyBdkFnvLmV2rmfOscc5IXUIu3v65d\r\nG7Jyhw9QvVEHk/egUS2EVBro2bs+fwQKRQfjQiw4flnXhXj7u0kCA87ZhRRO\r\n0S164Sjh4M12EFB3AC7pgXb4tXd8hO2xcw7YSBxQX4DDnI/Q67gvAuwPWzxX\r\nJbDEXy+xWe1LcXM+hi+Puwxz3Cd6s6h24tDPrMWR85tYp0JqU5Qg9RRAtfOQ\r\nrLjAbXoNDrNHk61KEtGTpQETA2hjrJDm40pHFRboIXutQIv+b+04UefpMRQz\r\nSYXLiTLKleEL6r384ZG5TBNewgTWe7joXf//pSiXsDVCxAVjUfCv+zLnO7ya\r\nT/6IG8Hxm1p9uRIKdLDTj2SnmmKNAQ5Bi5N4pSl9DkHdWo1idvxrP4xWBAWS\r\nPVFVc8CD0j/DQMvV5TsQTgDYfn8sOFsKnE4=\r\n=LfUc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.3003.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.3","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.59.3003","@fluidframework/map":"^0.59.3003","@fluidframework/cell":"^0.59.3003","@fluidframework/matrix":"^0.59.3003","@fluidframework/counter":"^0.59.3003","@fluidframework/aqueduct":"^0.59.3003","@fluidframework/sequence":"^0.59.3003","@fluidframework/test-utils":"^0.59.3003","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.59.3003","@fluidframework/test-drivers":"^0.59.3003","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"^0.59.3003","@fluidframework/mocha-test-setup":"^0.59.3003","@fluidframework/container-runtime":"^0.59.3003","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.1000","@fluidframework/ordered-collection":"^0.59.3003","@fluidframework/register-collection":"^0.59.3003","@fluidframework/runtime-definitions":"^0.59.3003","@fluidframework/protocol-definitions":"^0.1028.1000","@fluidframework/container-definitions":"^0.48.1000","@fluidframework/datastore-definitions":"^0.59.3003","@fluidframework/test-driver-definitions":"^0.59.3003"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"0.59.3001"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-jest":"~26.1.3","eslint-plugin-mocha":"~10.0.3","eslint-plugin-react":"~7.28.0","eslint-plugin-tsdoc":"~0.2.14","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-promise":"~6.0.0","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-tools":"^0.2.66793","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@0.59.3000"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.3003_1653686280969_0.16646697395067855","host":"s3://npm-registry-packages"}},"0.59.4000-71128":{"name":"@fluidframework/test-version-utils","version":"0.59.4000-71128","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.4000-71128","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"59c7230a47c2e024ffa5df906aa95463b48dcace","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.4000-71128.tgz","fileCount":53,"integrity":"sha512-GEwnC8Q27XAI7TGptxmNoZEeS7WKom4/74HUQzYnRvV/C+jHUJ4E+OC07Xmpm4lVnDP1zPFwSKHhML+/cekJ7g==","signatures":[{"sig":"MEUCICtWhefOPNEppGus3bKot1o0a1mbvoVuwXdEvBJp24o4AiEAryesLD6QmyCG/CPWSzooOgbXgBzlAbMx8PCRXQFxnUg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194350,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJimQh4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrEIw//Sy5y8hX5nHelvQtfjOg25loZdJBhNlwHbdLL1WWicD29FPGc\r\nFvDSdryRtaTLG2zqimUbOc4oPjqC6ptE9Ur6PiEHzBQut2amLHO8SdjwGaR1\r\n4xwleoNfTJ4B0qknSpqLdP0BXE7cXGJxUkqFODieD1dhgn/+woHWzB8f6deB\r\nSMSmEjFFQnLQoF+H0qDW52CQZ9Q2wmvNBpQRANo/HDcIPya5bCXb5/t4BFnZ\r\nFD2tmPtNUnCScMTKDL7xjPrhxtyoijeKTd1kMz3wbUjEUoPzz3pCFkgqwmlz\r\njw+4xVYvKEeyykMDBV/rTxd7A0s6fSjc8855pGNZrj8SFCA98oyYzppwTHya\r\nz47t+ZvIQUw3/X+/8LuBTOuWfrzweI+tu4hHzKNi+ylgG8c4JJ9W+lVWDOow\r\nbP8O+61PmETbRxkNJ2HsG+GTl2/L9+ex3ouzfYBw+8Fjem6q6hKFyuh7HPbs\r\n3yA+muedp8nbYYc6nws+chQMHbq6PPDvnNZTJRmh+/DD4XUtCXLvhhXrhBNs\r\n+IQt3j0fl8MtYzPvhuoqcUHyeSHZXZmNl6KUk6gZmvPpTm8iWV94xp00Du7l\r\nz7Ht8vJ/jPCYoHz1Trjcajmv80pEI98vU1n2FjYjNMalfPSApoaGpul1uEZe\r\nUCpShYbxHo3u2AAQiMu7FW8bs3yj+AVqtlM=\r\n=YKlv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.4000-71128.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.3","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.59.4000-71128","@fluidframework/map":"0.59.4000-71128","@fluidframework/cell":"0.59.4000-71128","@fluidframework/matrix":"0.59.4000-71128","@fluidframework/counter":"0.59.4000-71128","@fluidframework/aqueduct":"0.59.4000-71128","@fluidframework/sequence":"0.59.4000-71128","@fluidframework/test-utils":"0.59.4000-71128","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.59.4000-71128","@fluidframework/test-drivers":"0.59.4000-71128","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"0.59.4000-71128","@fluidframework/mocha-test-setup":"0.59.4000-71128","@fluidframework/container-runtime":"0.59.4000-71128","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.2000-0","@fluidframework/ordered-collection":"0.59.4000-71128","@fluidframework/register-collection":"0.59.4000-71128","@fluidframework/runtime-definitions":"0.59.4000-71128","@fluidframework/protocol-definitions":"^0.1028.2000-0","@fluidframework/container-definitions":"^0.48.2000-0","@fluidframework/datastore-definitions":"0.59.4000-71128","@fluidframework/test-driver-definitions":"0.59.4000-71128"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"0.59.4000"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","eslint-plugin-jest":"~26.1.3","eslint-plugin-jsdoc":"~39.3.0","eslint-plugin-mocha":"~10.0.3","eslint-plugin-react":"~7.28.0","eslint-plugin-tsdoc":"~0.2.14","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-promise":"~6.0.0","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-tools":"^0.2.70857","@fluidframework/build-common":"^0.23.0","eslint-plugin-unused-imports":"~2.0.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@0.59.3000"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.4000-71128_1654196344015_0.6314352823588831","host":"s3://npm-registry-packages"}},"0.59.4000-71130":{"name":"@fluidframework/test-version-utils","version":"0.59.4000-71130","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.4000-71130","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"09ab44edfac7d9e6cbd6d39de6938c7fb29fc8e7","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.4000-71130.tgz","fileCount":53,"integrity":"sha512-rsOKV2S+vnkZHSLjInY4XvF5UWuz5t6AH1OesLncQouqp+2v3lVfritfufBYtYjWJdmEu33wsDs716dufAcJOQ==","signatures":[{"sig":"MEYCIQCygsHEAhuPWmliRNuY9GvPQ7i+urtkLRdNHmDO9wMXxAIhAMnDiuR7rw6rIdRcD8cTiMSYot4MDqhVuqOByUduiiQy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194350,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJimQt2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpGUA//SNv4d8H1Zc5nei5lYLEU0NSl5aNeB8eReNK3eA+CtiF5gDBo\r\nuvT5bq0f47QQ46fWsY626aKi/Hw8dxi7pzgqmD/zo1bE2kyzGCFnBFihbYIn\r\nYil845U8A6ko2e+2yY10rioK0+Hq5oj7XsCOlgD2mgZWzbhyz6cJ6IXTGjYd\r\nplPZ9k7CLUMcJoKGK9MBtYFGn0iIpCZe4Ga053zMhoJy3O5HBn8Xs6J0jZuV\r\nbliN2uWLVfz/lVwat3+IhB71RKjvdgtSwKfRER5sritVaHsmgmYFZ/ynI/ve\r\nkQT+NNpM9+cNp1W7TgLDxfzQxqM6BnS68Xx6pMMExqsnQqR9ld7qiVJm+czg\r\nn+HKByy9MbHPrAHGkB9ln+0cq//uAtIdICF5p131Vs+MwMB8BwEPDC5YWcNO\r\nX38xrEHRomhzHu/ttgAow/UScrj/aWvpcyiH7+FEFPFyVXmDls/KXt0I0HiS\r\nqUWTvxFgH4yWJSxSxJ0k6p8Krj67U04SS1Pwq9Cxn24QhL+roAGyyLO3R1+t\r\nfvScRFchBkQETDFGwYdMrT5Ty95DuVXoW3+NSy58SJCD/uBOAWq3sdyL4FQz\r\nXAPoMMSW5qst6DRIqtNazhLOkY6yDD3yIjmUnEOaZWYngBe+UXP2EPB9UaQM\r\n19IBPBBpyUmVwO+zLkAcRDSro7CIkKu/NDg=\r\n=7N+g\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.4000-71130.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.3","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"0.59.4000-71130","@fluidframework/map":"0.59.4000-71130","@fluidframework/cell":"0.59.4000-71130","@fluidframework/matrix":"0.59.4000-71130","@fluidframework/counter":"0.59.4000-71130","@fluidframework/aqueduct":"0.59.4000-71130","@fluidframework/sequence":"0.59.4000-71130","@fluidframework/test-utils":"0.59.4000-71130","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"0.59.4000-71130","@fluidframework/test-drivers":"0.59.4000-71130","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"0.59.4000-71130","@fluidframework/mocha-test-setup":"0.59.4000-71130","@fluidframework/container-runtime":"0.59.4000-71130","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.2000-0","@fluidframework/ordered-collection":"0.59.4000-71130","@fluidframework/register-collection":"0.59.4000-71130","@fluidframework/runtime-definitions":"0.59.4000-71130","@fluidframework/protocol-definitions":"^0.1028.2000-0","@fluidframework/container-definitions":"^0.48.2000-0","@fluidframework/datastore-definitions":"0.59.4000-71130","@fluidframework/test-driver-definitions":"0.59.4000-71130"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"0.59.4000"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","eslint-plugin-jest":"~26.1.3","eslint-plugin-jsdoc":"~39.3.0","eslint-plugin-mocha":"~10.0.3","eslint-plugin-react":"~7.28.0","eslint-plugin-tsdoc":"~0.2.14","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-promise":"~6.0.0","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-tools":"^0.2.70857","@fluidframework/build-common":"^0.23.0","eslint-plugin-unused-imports":"~2.0.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@0.59.3000"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.4000-71130_1654197110614_0.4333701828385639","host":"s3://npm-registry-packages"}},"0.59.4000":{"name":"@fluidframework/test-version-utils","version":"0.59.4000","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.4000","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"750bc288d9e01c8ec75ea381d869bd7adf66e0d8","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.4000.tgz","fileCount":53,"integrity":"sha512-0pmOA0ymQR4BR8tVlCJyFowrMNXmQtL8CMB8pJ0AlnRlbI+DkH2KOsekA2UznygNvJddNJcgHCQIZOn0LRg/8w==","signatures":[{"sig":"MEQCIF/WRrctzVTSsL0glPcMXap0VUBWPdneruuBngjdFrgtAiAnBMFb2Vi1PfO2wz5tPd+83/7kycVV3H3ZEKdq4fgBdQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194220,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJimq4EACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoonw//Uh9Ln86grXJxFdeHj/xm+eV1R2caS4I/Go1XhBQG+dp6fBPf\r\na1C3Rvl2ej4mf62PnQyUlz83zlnK4fj5g+WAIshrx9q7paVCsnSKnd05yDC9\r\nfwdJCHOnlnKjjRurt7KMqMsNl6LjiUBWpZbErZp1mxOSOAm45Q3v1fl22HuG\r\nI1CnKipLLhYyy5sazCvAzLx30r8HvaXpzh4jIwfnh2jrZ2BfRVawoRyuQ9XJ\r\n1wSeP+VuSgnexYz57LSRwDNIQyT/p2NLLyX/BJ4WPgufWzaH53FFdfQRBngw\r\nuowNebKDO9jl+k/LhAVkkbbrksC//hM9UUVGk4bfWcXjbfWkr1nD0lZNL/DM\r\nsa3FIUnoDxV7pTT13yyhswmyvnIJmwpk5OaR6BY22Jh4A00FH86pQ8SuMiMW\r\nTRF5eFw4NEDFhZTMlnFhAg6RZW/ZPjmwCcLGB+ocBzG5X2ekHMHe94CSYZqY\r\nl0syk4NzNHR7NwfCAxLSUPaex1pwvZ90Km0Hd+oAc3tqih+EviscU3w/DQwO\r\nhvxZyBCla9vb6IsCp5gbo7HuOIbbD6PiFkPlnXM0x54fLQCBrEJ+ncJ6B4y8\r\nPfI3y5czOiLskSyN1RwJFVrTpE3azr1VChlivqVkOHYNx59PCngN+Lo6pYz+\r\nrsPXFXJH36jjhhsRHEWeiGNen924sxFuflc=\r\n=khyI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.4000.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.3","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.59.4000","@fluidframework/map":"^0.59.4000","@fluidframework/cell":"^0.59.4000","@fluidframework/matrix":"^0.59.4000","@fluidframework/counter":"^0.59.4000","@fluidframework/aqueduct":"^0.59.4000","@fluidframework/sequence":"^0.59.4000","@fluidframework/test-utils":"^0.59.4000","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.59.4000","@fluidframework/test-drivers":"^0.59.4000","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"^0.59.4000","@fluidframework/mocha-test-setup":"^0.59.4000","@fluidframework/container-runtime":"^0.59.4000","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.2000","@fluidframework/ordered-collection":"^0.59.4000","@fluidframework/register-collection":"^0.59.4000","@fluidframework/runtime-definitions":"^0.59.4000","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^0.48.2000","@fluidframework/datastore-definitions":"^0.59.4000","@fluidframework/test-driver-definitions":"^0.59.4000"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"0.59.4000"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","eslint-plugin-jest":"~26.1.3","eslint-plugin-jsdoc":"~39.3.0","eslint-plugin-mocha":"~10.0.3","eslint-plugin-react":"~7.28.0","eslint-plugin-tsdoc":"~0.2.14","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-promise":"~6.0.0","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-tools":"^0.2.70857","@fluidframework/build-common":"^0.23.0","eslint-plugin-unused-imports":"~2.0.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@0.59.3000"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.4000_1654304260445_0.22628265331152742","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@fluidframework/test-version-utils","version":"1.0.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.0.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"c8d5d845564d3c4fdf8435fff82f384f68cbf19e","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.0.0.tgz","fileCount":53,"integrity":"sha512-UqZfqogURBtEvtV26u9hwwGpQ9HRREIkS4/LkC30n0bTD7lpjHh94brEYcYdqFG86bOyfD1uc9xJzXNRmH10Bg==","signatures":[{"sig":"MEYCIQC7Shwgjset/5ZtE9ZpMYq3Bjass0lg0kwKEG2zdWas6wIhAMrPVmURvaanUOj3aCD2cpUL4QQ6Tukedauu+w70/D98","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJioOLcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp4DhAAmhKOk7icCF+fT4nV7sxrBQGi0xRdIhiOrvizDan3FQCM8+tG\r\n6edczXZo1NE9l5Jqz7E6ZhLU4YWWr1srSjLOMhaQ1Hb353Pl3ul860duO0J0\r\nTtnA+xvXQhEZJ7kCcKUuwiG1bcrlFEt8J8oKb+VLbeGLt7iBR56SP1+aRBh4\r\nTJK11hqqsf8vmgdexhycYax66KPwiYw1Re8UJKZm5qqpvluJw01EbFHCFj92\r\n37SjYvmLqtLArB/uJZbSWy7C/W3Dolh0LxDvoCYE36wBj66vXRQ+DZH/iStR\r\ngWnsbK8PcZ9rQ09f7fMzltPAIVPoaYRgv7uGpiZdrVS2ac/dSIYZM0PV7AY0\r\nU0668J8VXHZZzktBvvXyGNTw67MtwPwN7946QHtoj2YqQNci9Er5ryXlJSbv\r\n3l82MLNZfLokUphilHiyn9VHGj41Q1HEueDmLdH7WGH84BDAQMMHvgpwGJI5\r\nYvZpe1EXBin5efl/SGLVjh7lJI4FVGWxZMpltP1jILG7YZxsiqFegfGt0/KN\r\nYJCNUqOOZyOW3eY44Lck2PE1gxePDi76dnf/QyOx5VV4C/d8N+hZHNWF5VK8\r\ne6boYn/TQ0G6H0sgl0Q7lL7t1Y8QALVtEAv2od2UJQvhzTGyl8vfWmnpXEqO\r\naBs7nXloqV+YBw+ck9Q7m62lsvt4Znb/N1I=\r\n=h8hI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.0.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.3","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.0.0","@fluidframework/map":"^1.0.0","@fluidframework/cell":"^1.0.0","@fluidframework/matrix":"^1.0.0","@fluidframework/counter":"^1.0.0","@fluidframework/aqueduct":"^1.0.0","@fluidframework/sequence":"^1.0.0","@fluidframework/test-utils":"^1.0.0","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^1.0.0","@fluidframework/test-drivers":"^1.0.0","@fluidframework/core-interfaces":"^1.0.0","@fluidframework/container-loader":"^1.0.0","@fluidframework/mocha-test-setup":"^1.0.0","@fluidframework/container-runtime":"^1.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.0.0","@fluidframework/ordered-collection":"^1.0.0","@fluidframework/register-collection":"^1.0.0","@fluidframework/runtime-definitions":"^1.0.0","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.0.0","@fluidframework/datastore-definitions":"^1.0.0","@fluidframework/test-driver-definitions":"^1.0.0"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"1.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.71273","@fluidframework/build-common":"^0.23.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^0.59.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.0.0_1654711004087_0.4505439550408368","host":"s3://npm-registry-packages"}},"0.59.4001":{"name":"@fluidframework/test-version-utils","version":"0.59.4001","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.4001","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"927d9f8a46d38afd652a0bc51d8578d3def2a19a","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.4001.tgz","fileCount":53,"integrity":"sha512-r3oNRtQi2MfCsbWCBrhj//A/PqAlhIrv7Ehoi3ZHjz+7Ba+8qfpvbTA+F3M3rHVsZCG/j/8HyaqMDj5LNcXsSg==","signatures":[{"sig":"MEUCIQC3mfAC+tM3A4QPd417lW6as7HNM7ZKlYrEzkNEs99FdwIgG+svY0zekDtQggvpU/O3KWHHTLZJntOxrvinsa5Dkpg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194220,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJioOPzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqLzxAAljdl7r1Tf+pHy/3+Q/WTKXcJ39w8DMnWlYfQzSUVjbejToYh\r\nqjIySCZ2yJzNeL53rPRzK7M0kCZc85vSnRXB6/AmiJ8myl5GmYaCEKiKFcRY\r\naPmFncUPu3XQ1MzaUa223WDRm5FHCV0IOZaX2NhoS+6Z0jJOxYjlrEW4aZ+d\r\niWL7+meuWcXyzimzjZktnc34ylQAMfW8L/ulImLEgduVwWj6JEXmIuwUrKdZ\r\nDjXu0ECpuzieAGLlEnGBiQB43/QLduNFSDRHv40vP6FFqWjk9HVrYKKTRm3l\r\nPdRjlrD0ghYf/ABW2i3Hy8s7VfLPEcpWrKnF56GZ1q9GduTuh3kOTh5Ms0cW\r\naVRvapWrgjuqpFnr5rOf3XqmBPdTJk0y9FJ1iiL4LlmIicUkLxaiPWIreuj+\r\nbeSIEaiUGPPcEsTyumyq3USFKAAOwDSPjgyWkNRMn+zVR2xQkDkhZ+sOgiGQ\r\nnyhxX024ZACMn6zxI5P7dRuikArshuQjda8+KIuR3Tjfsb0gcYgflr6oITuP\r\nIN+OU7iNaviGRnICxyTuW9hz/0HL+FHpKSwRS3sIlIwqSr684xrz4LMiQsc0\r\nN/OmsyDtA9aQLph7XGgn5HKGh2KX8nZ8YiFG7IUDyp+8xDpUkTbHEIiQ++Qs\r\nbCgu1bxQdUWwGu+q9jScZnSncSc5ckz6b78=\r\n=S63h\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.4001.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.3","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.59.4001","@fluidframework/map":"^0.59.4001","@fluidframework/cell":"^0.59.4001","@fluidframework/matrix":"^0.59.4001","@fluidframework/counter":"^0.59.4001","@fluidframework/aqueduct":"^0.59.4001","@fluidframework/sequence":"^0.59.4001","@fluidframework/test-utils":"^0.59.4001","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.59.4001","@fluidframework/test-drivers":"^0.59.4001","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"^0.59.4001","@fluidframework/mocha-test-setup":"^0.59.4001","@fluidframework/container-runtime":"^0.59.4001","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.2000","@fluidframework/ordered-collection":"^0.59.4001","@fluidframework/register-collection":"^0.59.4001","@fluidframework/runtime-definitions":"^0.59.4001","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^0.48.2000","@fluidframework/datastore-definitions":"^0.59.4001","@fluidframework/test-driver-definitions":"^0.59.4001"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"0.59.4001"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","eslint-plugin-jest":"~26.1.3","eslint-plugin-jsdoc":"~39.3.0","eslint-plugin-mocha":"~10.0.3","eslint-plugin-react":"~7.28.0","eslint-plugin-tsdoc":"~0.2.14","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-promise":"~6.0.0","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-tools":"^0.2.70857","@fluidframework/build-common":"^0.23.0","eslint-plugin-unused-imports":"~2.0.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@0.59.4000"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.4001_1654711283063_0.839457673898967","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@fluidframework/test-version-utils","version":"1.0.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.0.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"0e1a68b2ce9de2e0ff58318e992e0ffb70d6d52b","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.0.1.tgz","fileCount":53,"integrity":"sha512-xH351nBi9LCKu1U9wGE+a02CjPCofnBjTwpZExfoGXpvlh2tVc8oA5decYzXFV1YJrWkx4rfbg5hlBfditBpYg==","signatures":[{"sig":"MEUCIQDDuV2G6aVU3Xr15r1diguOyS9RpHM5oaQ31AshCoXsrAIgD51aB0xIwcX9fuGvBX5mmYbje2wi7OmKFYRejN/p3ec=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqm3pACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpPkw/7Bsc6xTuyzd0xAnktAjXzi/3gwu8JaG2yHBq04LDjW0xXCH3a\r\nXBGAWRox2RAJ8yaHTbtclqMF7mi2QfyF8qzJHWjg8/FZ1G2uuWsveQQm9jPJ\r\nog37+AxX8t+ztH2HovZAJqXl0AibDtUt/vFbmXaBfeUR/9QMhBqF+01531Cg\r\nYC0YP/usxvefusWjlWyzvHiflo5y+oe7zkCwUCIRpBklkUaKt0zfdLQ+KSkA\r\n0gpD7sTSU6kScBQUNpPYaoCOQ6XNi/CPHloNGHvWT/WlImC+p2pyZlgAyh7v\r\nOwhuhEUJ73xaNEPICHtKYXi4vDfEbFtHXNfhufbroJIyhkcv1jTYwbzbwboe\r\nnDRf8sTzlPtpuEA53/NdXxke9v44XtjUQgopWeWh9QyNoVMnKOoB6onpWOtz\r\nQJOwncWPn+Om38h9zR5QAeGL3zdmabIJt5x0w2vnm7JnMdAj8mC0RUMuLlNb\r\nLVKTnoDLnFnxuwULQAv+F0GKS/sA1Srij5z+dcxtp0ZRrEHNZnBjUEBWEex0\r\nVY0q3vc8VhL9tGhvGUQ+qDCdxcqRGs/9Q+E/QG6kfRC3lmmvvN92PTYtDFTt\r\nBbbSRPZAzpZKUv9ctK59Drt4jDUUJ87sw3uDPlRfvi4zHpLfkNnSbjtnGyVw\r\nyKmxrfzZgjPSlFU/O3uMQlSUYgmgpEyoyOo=\r\n=mIFR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.0.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.3","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.0.1","@fluidframework/map":"^1.0.1","@fluidframework/cell":"^1.0.1","@fluidframework/matrix":"^1.0.1","@fluidframework/counter":"^1.0.1","@fluidframework/aqueduct":"^1.0.1","@fluidframework/sequence":"^1.0.1","@fluidframework/test-utils":"^1.0.1","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^1.0.1","@fluidframework/test-drivers":"^1.0.1","@fluidframework/core-interfaces":"^1.0.1","@fluidframework/container-loader":"^1.0.1","@fluidframework/mocha-test-setup":"^1.0.1","@fluidframework/container-runtime":"^1.0.1","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.0.1","@fluidframework/ordered-collection":"^1.0.1","@fluidframework/register-collection":"^1.0.1","@fluidframework/runtime-definitions":"^1.0.1","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.0.1","@fluidframework/datastore-definitions":"^1.0.1","@fluidframework/test-driver-definitions":"^1.0.1"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"1.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.71273","@fluidframework/build-common":"^0.23.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^0.59.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.0.1_1655336425671_0.6251507167090669","host":"s3://npm-registry-packages"}},"1.1.0-75972":{"name":"@fluidframework/test-version-utils","version":"1.1.0-75972","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.1.0-75972","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"56973f5cbe8e567b75386021033b720fb9ebae55","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.1.0-75972.tgz","fileCount":53,"integrity":"sha512-bjuxiVKIQtsrlhxVATu5qJ1OaovEqnh4Dby0jD46JTvwrxbjNb8X4Y18VQ7yyqxtdWjndQjW6/ZfOIcOsLAXCQ==","signatures":[{"sig":"MEUCIAJ2wiejasepPz2KSOM1gwvxijiwjcRbqod9WGJkkkXSAiEA0zs349vp2g1e9iYpzh3FWDo+yNYWzFrr/22+0kUXwI8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJitQ2XACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqb6xAAl0ncdpjQppgwpgkYluExpZ5lkfzLkzH6EIpXKCGtCsqBhsns\r\nPNo3KhfQVeCgS65D68k/PHQmrjs1cpgDu3N21ydHZ+y9PHbtlGnsKCRIrLaR\r\nddo9gNTWzQtWRiwLVoe59xPNCo5ApPSy5Yi30smA7kKJ+UmWBvNJ07cpT2ny\r\n5MiYs7QjCQFuTf0NPqtWQey4Qo8X6UxbFhktEeWBAnW8DZFVOMY6HkaYpOgY\r\n/MN40wqAly6K7hM01TkgVbWuTw3KQD41C/FgghT8fPK4VWt44oBoDF73ydru\r\ncjaEMd24F8+6Sk+QjrMV+erZJ/GZo/XVe0aOjlgQyyZ26utug4GTTI++jp3q\r\nOMdXVzdIixqTs2cvo4I6xokFOmnJOW10i5o51q7DFcK0hDTUPWG8LJACMq5P\r\nlqRuFvguBml5cKjIuhU1hhnOSK9uUtyCZZdxNKSBrQOXeEAHo3BJa7pZMe/X\r\nWK8tz+Ggf6QPyA+Mfj5rDg07bQdxrbJ0QIC/CzSZpmmrUjQ76ZabD5PTwkE0\r\nTCpeCZd5+PwavmopZ+iplLfiWe/fy90oAb37icHHsfP5v8oPUr1+rBJoksAH\r\nvckCG3U/NLcs0tvJRFCmkFB13zWjm894bUy1wnJtTLBuXhCx9kxkA4PHpOKf\r\nsDenW7UOrTUXbZkbAXeLTqKFEvjGwugrr4Q=\r\n=r9tP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.1.0-75972.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.3","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"1.1.0-75972","@fluidframework/map":"1.1.0-75972","@fluidframework/cell":"1.1.0-75972","@fluidframework/matrix":"1.1.0-75972","@fluidframework/counter":"1.1.0-75972","@fluidframework/aqueduct":"1.1.0-75972","@fluidframework/sequence":"1.1.0-75972","@fluidframework/test-utils":"1.1.0-75972","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"1.1.0-75972","@fluidframework/test-drivers":"1.1.0-75972","@fluidframework/core-interfaces":"1.1.0-75972","@fluidframework/container-loader":"1.1.0-75972","@fluidframework/mocha-test-setup":"1.1.0-75972","@fluidframework/container-runtime":"1.1.0-75972","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"1.1.0-75972","@fluidframework/ordered-collection":"1.1.0-75972","@fluidframework/register-collection":"1.1.0-75972","@fluidframework/runtime-definitions":"1.1.0-75972","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"1.1.0-75972","@fluidframework/datastore-definitions":"1.1.0-75972","@fluidframework/test-driver-definitions":"1.1.0-75972"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.1.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.71273","@fluidframework/build-common":"^0.24.0-0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.1.0-75972_1656032662909_0.12196684498484167","host":"s3://npm-registry-packages"}},"1.1.0-76254":{"name":"@fluidframework/test-version-utils","version":"1.1.0-76254","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.1.0-76254","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"39a100953715da356af41f5810afb8436e8afeff","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.1.0-76254.tgz","fileCount":53,"integrity":"sha512-ZrwIeKLmsLi58R+JqykXV7wHphkEpOMpzqzkEg02cz1NcKjhlDJd8QGMSJVvpEQDkARAcCPh9L08pQm3ItOpPg==","signatures":[{"sig":"MEUCIQC0aNc2pvTBqrAuMcJ3lrsHkxxQTZP4KcqYYXrX9qe45AIgPYriSh6SUE3/xCKzTdKSfyi4AhcRX98MrrrPk/P8a0c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJitiNKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqCBQ/+IR0VgPaKbCEETYox12tGa6n+Yny3N/toZb3zaTNLJx3Ad+Gv\r\n2lRNXWJKFly6x1EupYF+B05YX20EniaSulKCrTKmIyrOBwojY7iA3052sDFV\r\nlht5nffvxca4W6/NUHn9f26W3dkDqkmgFYmEwFHn72HaX76dLH1iK9A6Lug8\r\nB/fNWp6VuLFcxV1K4pRQGrafVDOgwgDUdeqPs2V2yGLifjPfnn6DLsc+Mej4\r\nS9YGGYhJXefgkWJ6qBj4Za0QqWu8+xH1J9KCE43lUcHyXeuvN+LC9ZphAdgG\r\nSVP6M6P38tDUdbykyvfkKn0yCXHUVB8UyX/UeY9jVJcwEj3BZWmyD0bD/2RQ\r\n+9bIYUURcExBdIxm8Hyy01Y4wx/neJIwpvTvg7jliaCfjgekRVICUIW+YlK/\r\nUUSvqGSxrfXiyZcHNs/bjMlJ3sgzuGMnf9YH2qBfdx9uoeBRnP8jCPMN8tzJ\r\nWnT8GKzNsLN1+1N1VkU03HPjVqRYFdbMs0woVNEaxjofKP7DVvc0sNnIyWJZ\r\nsoRZNDQ0qGh29zfd8HeD+jGZ/ed8+0/ystFctOQMxXbEC9Vf5FpxTm3Thlm1\r\nHwwOFWHyRflkQpoBl8yniX6G2kXzlTW42G8HYr+a4SjmXG+lMj9H0cdMd6cZ\r\nUM8ldNQgtw5aboJbTtQrgO/XT0fAcPSD0mY=\r\n=5ZjY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.1.0-76254.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.3","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"1.1.0-76254","@fluidframework/map":"1.1.0-76254","@fluidframework/cell":"1.1.0-76254","@fluidframework/matrix":"1.1.0-76254","@fluidframework/counter":"1.1.0-76254","@fluidframework/aqueduct":"1.1.0-76254","@fluidframework/sequence":"1.1.0-76254","@fluidframework/test-utils":"1.1.0-76254","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"1.1.0-76254","@fluidframework/test-drivers":"1.1.0-76254","@fluidframework/core-interfaces":"1.1.0-76254","@fluidframework/container-loader":"1.1.0-76254","@fluidframework/mocha-test-setup":"1.1.0-76254","@fluidframework/container-runtime":"1.1.0-76254","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"1.1.0-76254","@fluidframework/ordered-collection":"1.1.0-76254","@fluidframework/register-collection":"1.1.0-76254","@fluidframework/runtime-definitions":"1.1.0-76254","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"1.1.0-76254","@fluidframework/datastore-definitions":"1.1.0-76254","@fluidframework/test-driver-definitions":"1.1.0-76254"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.1.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0-0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.1.0-76254_1656103754672_0.16928691740470025","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@fluidframework/test-version-utils","version":"1.1.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.1.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"431693261460539850d654f748f18e6156bd5959","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.1.0.tgz","fileCount":53,"integrity":"sha512-RjefwQsVETBEDrTxt/ihYTDhTI8uMa8ga67+4GqgrTrRELxXJc4IKpdeWZPoEyxY7hSaFV+GhVDE0JFSSS9vOQ==","signatures":[{"sig":"MEUCIQDL/kBn/BvOM4aoHoXR6idAS0eJMZCZCCxBRG+0fw5wKQIgeVoBArs2J1F93vedM5d/lu5lqXX7TNhlt2si6aKMIkY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199933,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJitoXaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqFRxAAnfTK87G+uJHxUp/rqQvqMufieCqRNss0G7DcndaQ2jOvReto\r\niBidoo7TLryvHMFaHUq6KguOqFK0asw6Hbf9hoVIFInDLqhl2yvcg5dYcfkK\r\n3Bsf1UBIGmSq/+j343fdOl3F4Vqmxi9hNlQHZ+IrsDITNj0hAfZ7GLTnF2W9\r\nlSeMjVBZOEu4KkxuVypeZgZBrvlpmVd7u2rIAozhS9Moq1oNH9mUFqOs34m+\r\nguQ4NLTTnNof64Y4rPyaHIsr5Zn8qAsMX/ob51m1XPa5BRz99tJRyXXrZ7mS\r\nS2vMwxU/KFKG1BDOO7obwpqouwt5J9Oab+VglvDmrtvVCukSUVlSLodW36HS\r\n7J/waXHoOiXlcdrjT1p3qUVEuCdO50ttySvo1MZ6TwNQ0QaT0x9BGVpFpg2j\r\nLlw47bUbcDxThNDFVi40R8tp/dxPht2fIvxhmDXwoh+zfxa825wCIDpt4ElF\r\nIL79op1HCZtyR3UE6CP1Z3ArUjd5yS8b/QuJIP4/kBkX8XdpT7jIQ8sVKMzr\r\n4nBDdKjwXEMWA70bDoaFKhQctahRnh3CZfZm8Dn5sqwNUliDzq6dUtdd7YX+\r\nXK8tliIb6IVSKk2fKtuZCsUgMkPxOo22w9wziv+IMbAnySmZkhh0MogX2qxh\r\ng05u7usQ2XEnNtKv5rKE7iJRL7aoxqcO2xQ=\r\n=T2Lb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.1.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.3","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.1.0","@fluidframework/map":"^1.1.0","@fluidframework/cell":"^1.1.0","@fluidframework/matrix":"^1.1.0","@fluidframework/counter":"^1.1.0","@fluidframework/aqueduct":"^1.1.0","@fluidframework/sequence":"^1.1.0","@fluidframework/test-utils":"^1.1.0","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^1.1.0","@fluidframework/test-drivers":"^1.1.0","@fluidframework/core-interfaces":"^1.1.0","@fluidframework/container-loader":"^1.1.0","@fluidframework/mocha-test-setup":"^1.1.0","@fluidframework/container-runtime":"^1.1.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.1.0","@fluidframework/ordered-collection":"^1.1.0","@fluidframework/register-collection":"^1.1.0","@fluidframework/runtime-definitions":"^1.1.0","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.1.0","@fluidframework/datastore-definitions":"^1.1.0","@fluidframework/test-driver-definitions":"^1.1.0"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"1.1.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.1.0_1656128985837_0.023327621265121","host":"s3://npm-registry-packages"}},"0.59.4002":{"name":"@fluidframework/test-version-utils","version":"0.59.4002","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.4002","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"af8d882bbe3ae7d63fe11b8f39e9f5c3a16b704b","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.4002.tgz","fileCount":53,"integrity":"sha512-m4uVncz+KedGVeeICljszgFZViKlgzSeGKR3cUMMotdsZYdvyybGH1DaQhBhc3jOrAAZ889LAFcxQkFEd1o/RA==","signatures":[{"sig":"MEYCIQDvnKgDbBogGMg1A9qT1nkYviq+ze/35YpP3oHknNTbeAIhAJTfvBJiU+2UEWLhTRfdCoV+M/I9HmCltiW53dM/jLHf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194220,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiu2qxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrMZxAAixYIc4XeoHuJmdL2HZ3GNqLfTYas8maGdDpU1H96M/mCeNHs\r\nKfHDs9Ge9YE5nvAmSaERTZtEOyd9NChNSuZ85bGDEXxvkJA/neVQ/0Gl8K3F\r\n3SNJnqq6A2dN2Uh0h53FCrIS9rNB7MKz+Hxi/8tz6mwKccjL0k/LxiDvWM2+\r\niYgxasGmt1ypmRlW6NCffnEuGJiu4qVYG6O99hTTi7uAzxSppNpa50wUPFcK\r\nOkdviK/eEZSI4mOh8lhL3hny/HE5GQj21LlMSfuJgnRlgrlEcQT8jVjKgxMn\r\nIPmLRQZE8re4khTM4BgyeDQRv+mJoMjLpMk+cEmKj4B45FoGny0OeXuoWPjm\r\nObXyz/DniwWvxj+i/vZ19n7Kecd5ubEQRvd2MYKiYv30Zr2DhpIb2al7Yc1k\r\nEZ34qTKHZDJhdFesN/1sRkzSgSbC1QzeKLvQIwIH3Zaw3o5wADlMa4TjkQgq\r\nKEK736TWtbADwZi1egbULl56UI8AbcWmRHH0WSD21NT2s5ubeetmUfP/G4w/\r\nNhSEWrfADzQeDNNilXFuSOdvSigdE+Hpj8HFVO6rYhTOIdna0ZBiek0FzwLt\r\n20CO0rqNBdvsGLt6y1mx0Qy4exKPz1RUw42fVzPAq6p9jADxz/Y7AsmBIhCI\r\nCBKhQu9gwdHK2U2kfw44+fN4wWpppl6GYl4=\r\n=BAUT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.4002.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.3","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.59.4002","@fluidframework/map":"^0.59.4002","@fluidframework/cell":"^0.59.4002","@fluidframework/matrix":"^0.59.4002","@fluidframework/counter":"^0.59.4002","@fluidframework/aqueduct":"^0.59.4002","@fluidframework/sequence":"^0.59.4002","@fluidframework/test-utils":"^0.59.4002","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.59.4002","@fluidframework/test-drivers":"^0.59.4002","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"^0.59.4002","@fluidframework/mocha-test-setup":"^0.59.4002","@fluidframework/container-runtime":"^0.59.4002","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.2000","@fluidframework/ordered-collection":"^0.59.4002","@fluidframework/register-collection":"^0.59.4002","@fluidframework/runtime-definitions":"^0.59.4002","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^0.48.2000","@fluidframework/datastore-definitions":"^0.59.4002","@fluidframework/test-driver-definitions":"^0.59.4002"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"0.59.4002"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","eslint-plugin-jest":"~26.1.3","eslint-plugin-jsdoc":"~39.3.0","eslint-plugin-mocha":"~10.0.3","eslint-plugin-react":"~7.28.0","eslint-plugin-tsdoc":"~0.2.14","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-promise":"~6.0.0","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-tools":"^0.2.70857","@fluidframework/build-common":"^0.23.0","eslint-plugin-unused-imports":"~2.0.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@0.59.4001"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.4002_1656449713395_0.8912649377455928","host":"s3://npm-registry-packages"}},"1.2.0-77818":{"name":"@fluidframework/test-version-utils","version":"1.2.0-77818","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.2.0-77818","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"31980f00e6feb2bee328eb1452757bcb5c74c4f8","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.2.0-77818.tgz","fileCount":53,"integrity":"sha512-4sNGqPpKeUeDgtLtC8aZNs/apwc2f4CuRgJKr8iUppqdEuGcRvz83ErfBU51LpUe6hIhqB5wPzZVrarQattCow==","signatures":[{"sig":"MEYCIQC0L02JyMC+kVy7R6b9A7J4/tPw/HpDTH/najtOyeP0iAIhALO1HXEVMSULjhABiBbZ9h7dXaaoB3hc39hKaces14eo","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJivjq4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpczhAAmIOEceQ85fA1NDfzWPw3CKI2phIXx/x358X3ZgHtsi4Be8bg\r\nuN3Iabpj0gpuVm6O1vrpCsjsLcm0DOdsHcS3FO3XGTf3UCsgqKafO9D16pfS\r\nu+uKMrSwFJ3CkpxvfHU9nKoKhqn9oBTJRSk5fovQNMAbl+zVIbBRagrQGlxW\r\n/DHhM4KvPWkaNpnuPUEMeJabBdCZ0qztmQl6gWeRfVl8HScboenZaiz/XLwV\r\n4TyX2I3E+RmEXMahckWIOCbPbaWdiugcoMpBPbOzw0EN3UI3ZSCwTGPKRgqz\r\n++/8rixs9SquHX8SMD23RYkfGYXnBiWIMLGsiRyUxVnXDIPJ7HBM5VGABm97\r\nwBu9l/Uit+PBu6EXEjqA8TNl4VjQGqVhXHh7kWUNwFXlSsZ5cr6HwyXB4/L/\r\nT6F7C2kPyJi1u+6OEIL7cC17rLXtQLVs37UkMFSQP1Im4KO7brIuv8uZ6+Fw\r\ndx0tLBz2vK4QzcyCNopFWoM3TzrR2MF31I5NL9D22j3xv6R5DIcuIhQCZ+Bn\r\nBF30499o8OvFu9z8Wk+UbHTy+q6aod8hzI9hhBD6nUgE/tbD3ehNSO/HCJeE\r\nQe6b9nncOqD3v5IvIErCgEwatOiw4PapnWLp0zGU0KoQh1NswJ/1pEQw4FBN\r\nix90Iu3xHDCV+7bixahUWPEjJsSe0NuohCk=\r\n=982z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.2.0-77818.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.19.3","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"1.2.0-77818","@fluidframework/map":"1.2.0-77818","@fluidframework/cell":"1.2.0-77818","@fluidframework/matrix":"1.2.0-77818","@fluidframework/counter":"1.2.0-77818","@fluidframework/aqueduct":"1.2.0-77818","@fluidframework/sequence":"1.2.0-77818","@fluidframework/test-utils":"1.2.0-77818","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"1.2.0-77818","@fluidframework/test-drivers":"1.2.0-77818","@fluidframework/core-interfaces":"1.2.0-77818","@fluidframework/container-loader":"1.2.0-77818","@fluidframework/mocha-test-setup":"1.2.0-77818","@fluidframework/container-runtime":"1.2.0-77818","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"1.2.0-77818","@fluidframework/ordered-collection":"1.2.0-77818","@fluidframework/register-collection":"1.2.0-77818","@fluidframework/runtime-definitions":"1.2.0-77818","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"1.2.0-77818","@fluidframework/datastore-definitions":"1.2.0-77818","@fluidframework/test-driver-definitions":"1.2.0-77818"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.2.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.2.0-77818_1656634040516_0.31252125202662917","host":"s3://npm-registry-packages"}},"1.2.0-78837":{"name":"@fluidframework/test-version-utils","version":"1.2.0-78837","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.2.0-78837","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"5cc7db2d3b38319208af8366c961b548793ab6c5","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.2.0-78837.tgz","fileCount":53,"integrity":"sha512-ycCTt3DrImwdK3Qz/IO4I5eAP93/t4ThLfaQbSVVbQtVuSZm4jKEfq8WH3oMqPtNi+JdeCPv/TFy2CYNL8/pxg==","signatures":[{"sig":"MEUCIACufylZtOxiswx3PEr34DW+G6VAeCeOiJXL7YAT6BS9AiEAtMJ198qC2ssU+n6xxn55n36yKOb0DVew216eXtJvRww=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJix3NZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpCSRAAkagL45NH8NwZr5g5gXIzGfxSK8afWEwcmrBB8LFfRiYw3Ao3\r\nx7FBzzGufUEqtwrRYzDNukWF/3kULLTmHKkhwPJqxMO32uhjdxRv2mt/2MBa\r\nw7gici3971bI8bZpLSZ8Li4M6I1uK/8/zTm6JcAPYefEgjvEmpyUvBGblgJ4\r\nzqmySWimhUEgbl0RexPFBEN4N/N0Zit/v4k1+IaU8rzLJj347PaSgKvr/R5T\r\n1znfCjuds1Ad6jzASWDQYF+fwMam5CRxnkQ9hIlg0j/0kp9d7NyELDtmus/f\r\nySUZuA9Ddbkfh3iLZhhgOM+XBfj824EGACiWy4N6n2fQPYnyoO4hGFmzcvHc\r\nuCyuAWlAif3drysaSpzPtqrbLt7alv5Wt6AGJhJ/oW8uPW055+Mo+HEDCzDk\r\n1/LFERavXCXWjcOg6J+zoyy1142enrk5fV6iNCie/QUK9R3R+8w9JmX8VO0R\r\nK1Jp75vPk7aa76EXZ4uKSOvZJrBC+pwnoZKEer3VOAk2ulfRzGOqdMfUnvWj\r\naainK7BuEJsbPkf4fE3pq5mH8FTVPdCEfVxHXbDDamsWKQvMrA3xZW31Bjxs\r\nIKn14fGmbNh+SidU0eSo4zdBVHtAk4UzVy/y0sBUXtjcpbe+tRDYVKin3YYC\r\ne4GoIv20Uq30ZttJdOpFBoxgn4iRKxcLd2o=\r\n=SDVn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.2.0-78837.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"1.2.0-78837","@fluidframework/map":"1.2.0-78837","@fluidframework/cell":"1.2.0-78837","@fluidframework/matrix":"1.2.0-78837","@fluidframework/counter":"1.2.0-78837","@fluidframework/aqueduct":"1.2.0-78837","@fluidframework/sequence":"1.2.0-78837","@fluidframework/test-utils":"1.2.0-78837","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"1.2.0-78837","@fluidframework/test-drivers":"1.2.0-78837","@fluidframework/core-interfaces":"1.2.0-78837","@fluidframework/container-loader":"1.2.0-78837","@fluidframework/mocha-test-setup":"1.2.0-78837","@fluidframework/container-runtime":"1.2.0-78837","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"1.2.0-78837","@fluidframework/ordered-collection":"1.2.0-78837","@fluidframework/register-collection":"1.2.0-78837","@fluidframework/runtime-definitions":"1.2.0-78837","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"1.2.0-78837","@fluidframework/datastore-definitions":"1.2.0-78837","@fluidframework/test-driver-definitions":"1.2.0-78837"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.2.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.2.0-78837_1657238361384_0.9291584979575886","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@fluidframework/test-version-utils","version":"1.2.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.2.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"481cbec552f395ab9de015a0ba31225b76b09056","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.2.0.tgz","fileCount":53,"integrity":"sha512-/Sma1TMrCSwmQs7az6ieGXmu8NKwC4qiQgRWg15kJbjoHMtw2XqjMwXnGC9Wiuc9ycn0EJM9SmA22UQr3IRvgQ==","signatures":[{"sig":"MEYCIQDKbD30TEiqALUjUWhjG19UxDXQ+flqyOvX7cnvA/lKzwIhAMK9Cfy/lUlV/zGIo4OVh1+RbJFmAOG6r1hKhutH/5z8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJix4BgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrnDw/8DQvMOuEXzVYfqMAHMp4Pblzu7WDyYj38nrGcxZD9eL44DZ7G\r\nJ5oJb8Fi35FHleRF09GZ8CyqiimOx9r0/npka89XwcaBW47s9mmNiaPH1Po8\r\nQNgGcKOMhKngywvGXSVsgWWlN5RCdzNDtsiVHpVy5SCUMquMVD91HdmXUkR+\r\nC0+xX3ww7Y7XiJhVw4qvzZly0H9OGFSqmuh27zEYLh0mvbF5fPsQkiYUZHBV\r\nQ6VPjCUdp/POF8YL9cZYAcxzAuYmcsZsVaU1UD1Zxmovz11oLk7Fnmsztsj3\r\nMtw5A63ZIg2YGOOx451JmhJWr/7/Ai0XjGNswOYFSdPuhY3XuDPo617MAfgQ\r\ncZ6KhJbVIvwke/AQLyLpW3sf409a0uI0A/5PhNXujvzV4iuxY2VQSK0LylPj\r\nGNREAMWQyjgAo0V2fhAQt8zDvdAzGsvHWsGxRQYKA55V7zzofP86V97FZlEb\r\nILUMjHRb7kus5M4DKyaqVfrmgV8Y9PrD6tpNKtaY8HNFquz+NKaVwEHgQOm8\r\nRnQjH2Zcnr6oLQn4NNyd8vRPtguD8hhIpeJlbxgjyLAEViiyAm9hEgT2hm7s\r\nO2LXSyj1tApmfjIQQuOHu+KoqqS37pB6OdeeMlEUVlzzN2hS9Anm0BMDTxqE\r\nN2XrL7z0N22TN2Q1Fet/NYhxN+83qciF7sM=\r\n=4KVY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.2.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.2.0","@fluidframework/map":"^1.2.0","@fluidframework/cell":"^1.2.0","@fluidframework/matrix":"^1.2.0","@fluidframework/counter":"^1.2.0","@fluidframework/aqueduct":"^1.2.0","@fluidframework/sequence":"^1.2.0","@fluidframework/test-utils":"^1.2.0","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^1.2.0","@fluidframework/test-drivers":"^1.2.0","@fluidframework/core-interfaces":"^1.2.0","@fluidframework/container-loader":"^1.2.0","@fluidframework/mocha-test-setup":"^1.2.0","@fluidframework/container-runtime":"^1.2.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.2.0","@fluidframework/ordered-collection":"^1.2.0","@fluidframework/register-collection":"^1.2.0","@fluidframework/runtime-definitions":"^1.2.0","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.2.0","@fluidframework/datastore-definitions":"^1.2.0","@fluidframework/test-driver-definitions":"^1.2.0"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"1.2.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.2.0_1657241696325_0.5458253245091622","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"@fluidframework/test-version-utils","version":"1.1.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.1.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"ec705143cb72d71813237bb4f5155a8849791f1b","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.1.1.tgz","fileCount":53,"integrity":"sha512-wxWVhZZwDx3p8iobHhLubKkQvk/5+6PaMQGDpas2ccfQ0FPoWxKUrZClFGIG/NhwBppSyGz4uTrnCZctJSuk0g==","signatures":[{"sig":"MEUCIBfoQmvQW/ytLwZbH6QabrF2/Wz3DlSlXAuAmBRg+K/bAiEAq4ax+x5yj4AG6lnyXDJ/kOqVwKlW/IlvVqppjFkH4uY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199932,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiz1EyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpFhA/+OjxHEYtPxVNTBur7GTsYq/02cBVstPHleJcc3heephiirUDK\r\nWGj+XpWPjpfwefzg6leCuhWm57dvX3+z7uwXyN5I5ddj6HSY7EwSBWwiBm3D\r\nvPuyuLgM3d5IJbnnP99ck2vygc5lOJ2dHYrW5LWeih4BFhc0lbdaTMAnEBB9\r\nOAgxNUpXiQtbTygGCKxDDVqUZTE35q1mZg3ZosTLv6kX3MLBNxMIB6Xb4FSr\r\nXnJslw/rACp4nhsRN0HBa/yHdwxwqPdDUq3HXzA6HJsKR3BylhoraBL4N91k\r\npRJ+8LzfHaNa/BhCAZCdBpry1xa6HEgspon4dPjEiwFx1QovYdFuxQxnGOQZ\r\nQFi2NyZkPxhZTMvzLqdMFKv7XdyOqB8osIuHZau61E0U6Gxe0RgJ6YSqUdWH\r\nFFgb0oOyiCQj6ueFrYtnEj0ZpI6FTuAZot0NGEmHSsinyyMEewhEMF2z62e1\r\n0Qw6jGRTyMVXOBz5zUiBOJEVGi86IB+kxiQ7BKFyiOoCMq+8p1uUlobCKwAg\r\n5rVQkXWUYR0YJHTtDSr/P4C8Cb5NzPJtOr6nvSQu0c1+GycEOGOJlOeBg2LW\r\nKsJPb0O2DOlyL9d5+LgTD54gobZfT9dSUWhmhbFCe+7McZx5zG6pWA/JuLTA\r\nTOu5UqFn1Wf93xQgWwAmX56LKEmnRvy2fUk=\r\n=W/Uy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.1.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.1.1","@fluidframework/map":"^1.1.1","@fluidframework/cell":"^1.1.1","@fluidframework/matrix":"^1.1.1","@fluidframework/counter":"^1.1.1","@fluidframework/aqueduct":"^1.1.1","@fluidframework/sequence":"^1.1.1","@fluidframework/test-utils":"^1.1.1","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^1.1.1","@fluidframework/test-drivers":"^1.1.1","@fluidframework/core-interfaces":"^1.1.1","@fluidframework/container-loader":"^1.1.1","@fluidframework/mocha-test-setup":"^1.1.1","@fluidframework/container-runtime":"^1.1.1","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.1.1","@fluidframework/ordered-collection":"^1.1.1","@fluidframework/register-collection":"^1.1.1","@fluidframework/runtime-definitions":"^1.1.1","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.1.1","@fluidframework/datastore-definitions":"^1.1.1","@fluidframework/test-driver-definitions":"^1.1.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.1.1"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.1.1_1657753906365_0.16660347062988912","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"@fluidframework/test-version-utils","version":"1.2.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.2.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"a28e58716ec1a7d218315fbf4303b8099c6d2e2b","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.2.1.tgz","fileCount":53,"integrity":"sha512-QKjRsdg/R264TxrWyOhZ1U7t0a5JB/X1c48/hplc971BLpxm6xOL1rd1Q/HanYNbwaKv/JY47q3yl/JcwdIw7g==","signatures":[{"sig":"MEQCIGLk7e8B/6yFlmz1wvpjNVlRVJ9NCPXklwbYB3FtA0HmAiA9HEchdjJKxHGOgSAjB9VVrD9P4ud3CBSXznRip5HNUg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiz1HoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrQAQ//Q89azy/APSLakJcH+HwPLernZp7khHDAkWUdoTaphOPFwxBR\r\nVQBvd6as6ido/Wy9RUu6XUgH+nbVPjPDtC8wAJhSqWsy5exdvWx4KYP3F3Re\r\npGJI1NZADQdJ2r6dPzmmFs0YBAP3FQ0niTMyias3o5T4IuwsgSmVkQc6yGpk\r\nIZa8vpcMCo/86WmXTIU2J0bbrAQ6N3bO5QKfkcK9Qe3P0p88MWepBEvNl9LV\r\ndOPY2MLjvunJ/RNn44/0RcmK9rudhYhGKGlrwTPVmmb0drCBy3Xbg9ywtV3I\r\n2sBYthWGnOFFPrDlTmy2FLnJZvIsD97lVnA6rDdzHv6Q9bzcRa/5T0oq23d2\r\newaISyCjPz0jhYezeYRdtz467J+cvKqcuF2ZUqcH1trICSFDulL5VuMW9UtO\r\n5L9lQsLnocspmpXgiENKEhYyBJolhw8ptsdbV4694z8HVBpCqhMXZtHekLNB\r\nwUwceQZRQVeHu4XQnHhljbCaQiEWTpmBaS0OQHQD2hFqabi5ThL3SP/625e/\r\nmkXJw8P/0GU7H+zpQhagKxV3G033qJyg0N6NFUDiC2C6mbyrwAuMMf7zvS5h\r\nVGFkPmgCl2kpzwoVqW4/rvHoZYWR220eW1xskxtnnnDozrhwZw2x/3Bze0ao\r\nN7vpFDai7qwlbC0v1jH3eG+h8XSzbRSi+g8=\r\n=n/7l\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.2.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.2.1","@fluidframework/map":"^1.2.1","@fluidframework/cell":"^1.2.1","@fluidframework/matrix":"^1.2.1","@fluidframework/counter":"^1.2.1","@fluidframework/aqueduct":"^1.2.1","@fluidframework/sequence":"^1.2.1","@fluidframework/test-utils":"^1.2.1","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^1.2.1","@fluidframework/test-drivers":"^1.2.1","@fluidframework/core-interfaces":"^1.2.1","@fluidframework/container-loader":"^1.2.1","@fluidframework/mocha-test-setup":"^1.2.1","@fluidframework/container-runtime":"^1.2.1","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.2.1","@fluidframework/ordered-collection":"^1.2.1","@fluidframework/register-collection":"^1.2.1","@fluidframework/runtime-definitions":"^1.2.1","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.2.1","@fluidframework/datastore-definitions":"^1.2.1","@fluidframework/test-driver-definitions":"^1.2.1"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"1.2.1"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.2.1_1657754088296_0.0662145925657247","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@fluidframework/test-version-utils","version":"1.0.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.0.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"aa3e7f02ad85ffcbe52a65f41553e48a09f8837c","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.0.2.tgz","fileCount":53,"integrity":"sha512-rNMpkAKthLG3llV8DAPrObsZVAZAb8LRrmtV+405lDynw6IBUzx9WhtZInfJfStozGCgm2qVbCLANkC+vKR4ig==","signatures":[{"sig":"MEUCIQDQNj9yYvgd/PO4rRopBYzFTnSYWzqfbkLd4j5oSal9BAIgJkrLxG/LQ7TP4rVzbtawtJxOIxS0wvif6Qz6p2VjkZ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi1WRvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmow0A//em238+/lNWoIESGhH5a8i0cSESTEvMQG2o6Io1MHDvP78Wl+\r\n30w4cNUPEddJhVWwnqrwUGeqS8FEiHP+cGzX6Qb4YNvwVKjffNm97iO+PjzD\r\nFuIh9LsQLT4gg0HdZkWjhF6xb18loQuH0LV4cyh+yJXluN5+/WtyZBZxm3kW\r\nN9nfcyu/xA19qE2dYGivU46cCNuswbKoO2ptsviCyB6vG/w9lKHt9iA0Yl79\r\nm1Q6oNjPUznWsFDC1YAjgPes88lHJnvTAL/jB4VJLRLnyPCpQSKt/pUZVM6j\r\nbhxq2kEK0hrOfjR0ACV8ylRRLKW9VdqS3MwzytFNZ4YQE/Wg0rrWbXjtOz43\r\nPO71AqYlh8bUqKkybE5FRyMtYpUiVz0VtX7tE0XNpoA5NMfKd+x8Qfrkjt4/\r\n3qF4V6gfLI523JsHdyqTC9TXwfR8QoXY7bxB8OMMGHwVrcco2Nkl/W97Crni\r\na/TyRu/hoDLF7L9BQl1lTPNK0ELvjFDMgRPTP7UIzBUjeo8mRy/LVAblnlB9\r\nsPAgjCGYdTORenye7u/KcnVTE3PZtqz/bUpfUnvJaxLqbC3VEjI8IZXOOPAX\r\n+ke/eQHkV5kONQV2QS+xkHy6Wv63/IhlypYpv8pAfVrsgpa/v/7PxEs77WXM\r\nzyoMUl1+Rd1RPz9t9pzdJAfpguEdMkHBhq0=\r\n=4pUe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.0.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.0.2","@fluidframework/map":"^1.0.2","@fluidframework/cell":"^1.0.2","@fluidframework/matrix":"^1.0.2","@fluidframework/counter":"^1.0.2","@fluidframework/aqueduct":"^1.0.2","@fluidframework/sequence":"^1.0.2","@fluidframework/test-utils":"^1.0.2","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^1.0.2","@fluidframework/test-drivers":"^1.0.2","@fluidframework/core-interfaces":"^1.0.2","@fluidframework/container-loader":"^1.0.2","@fluidframework/mocha-test-setup":"^1.0.2","@fluidframework/container-runtime":"^1.0.2","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.0.2","@fluidframework/ordered-collection":"^1.0.2","@fluidframework/register-collection":"^1.0.2","@fluidframework/runtime-definitions":"^1.0.2","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.0.2","@fluidframework/datastore-definitions":"^1.0.2","@fluidframework/test-driver-definitions":"^1.0.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.71273","@fluidframework/build-common":"^0.23.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^0.59.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.0.2_1658152047123_0.49642349182286627","host":"s3://npm-registry-packages"}},"1.1.2":{"name":"@fluidframework/test-version-utils","version":"1.1.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.1.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"bd893d6af7f84d281d1b932699c229c7b7ba2247","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.1.2.tgz","fileCount":53,"integrity":"sha512-C5zx3Esme7VL+48Ut79Gp9wqIHQV3/vfd61gwlqdPPKe1JeVmF6p+or9F9smVgFSBlhFf/Wh4tVBGHclc1URaQ==","signatures":[{"sig":"MEYCIQDDNv72jCUpsdM0M36IxWqx0XmVSPXHHYx1NRihO0kbAgIhAMa31cktAEP9tEuOp1aOm4/9dGS3vrUXOmeeMyP2SYHQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi1WScACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq7DRAAiF46GRda5LHxzqyEFXcS8Fli+9joeFE9qhFokOCsdtaJOhfL\r\naFJBfMTR2bM1TCf87+CRBzUHvDHkd4uT4TMU/nPkHiKm38UCzAsh5hftgb+j\r\nz7S88gt/aecrVoiPE5HyhrjQtvA0hBvQQ3Tc9OLaaP7xmdJe685EGprU1IOe\r\nWPp6SeI2PohYof9Qt+SG0KG7ujT+f5vjw2bGbELQhMpi+XfNcwlDyb7TFizm\r\n5ELOFEpHcqiSikTeLV59rAPCmydPvrlFcq29z/mSahEdBGbSN5kkz+w3SdGr\r\ndFnUvlfL2Ythvg9DDNP6XHz7/lvP0ikS+V5ovEYbLogzAD6/3crOZ4fU0p2d\r\nW5sU6O6tIMlpJhDqFBpTQpqL3IFnsIthuV/3AmqEoKdVpOfDRXA4dAtqiUSL\r\nRJsRd6dJgKCODJ1HriEfnBHZ7F2mt3w5Rq2cP3QreQQ5y6CM6HdycSiqDqiH\r\nDiBgGy3lOFNCk9JPMTD9GbGtb2WGdlhtfmmgatQai4zSyo94qUoFTdkiENzT\r\nEA1+31QyrH4AFpbeneXKT3AOColao7pErcFWdenryc2kkBeuI8GtvtDOpppM\r\noGPzvB+81AZu3ITfjX2ny8UejQU+M7epgpDt+2oTM3Pe1u9HHk3sLuMQZCm9\r\nInxliieXoqhRLvvUacahJ/jKtRvAhlLGuhc=\r\n=U7gv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.1.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.1.2","@fluidframework/map":"^1.1.2","@fluidframework/cell":"^1.1.2","@fluidframework/matrix":"^1.1.2","@fluidframework/counter":"^1.1.2","@fluidframework/aqueduct":"^1.1.2","@fluidframework/sequence":"^1.1.2","@fluidframework/test-utils":"^1.1.2","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^1.1.2","@fluidframework/test-drivers":"^1.1.2","@fluidframework/core-interfaces":"^1.1.2","@fluidframework/container-loader":"^1.1.2","@fluidframework/mocha-test-setup":"^1.1.2","@fluidframework/container-runtime":"^1.1.2","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.1.2","@fluidframework/ordered-collection":"^1.1.2","@fluidframework/register-collection":"^1.1.2","@fluidframework/runtime-definitions":"^1.1.2","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.1.2","@fluidframework/datastore-definitions":"^1.1.2","@fluidframework/test-driver-definitions":"^1.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.1.2"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@1.1.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.1.2_1658152091863_0.7457381847464917","host":"s3://npm-registry-packages"}},"1.2.2":{"name":"@fluidframework/test-version-utils","version":"1.2.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.2.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"c83976c5e47edfa4eb4b23d3475c42bb70aad239","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.2.2.tgz","fileCount":53,"integrity":"sha512-RdQ7u1MsdffEdA3TGbTJ3NCAA6g2JJCoj2asWbiGLGCh6aqUrndXrX+cB0rtDk/EED1nlWlOIdyPSO58n/HF5A==","signatures":[{"sig":"MEYCIQD9X2gggIqX70AkopPPfI5LSJFD0LeO/x5OK8dXgZ04KAIhAOyt2+S+WI5arda0Fm6ruNnYzFz6hCwVKXnC0YL+rE8X","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi1WSzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpUBw/9F8QNgNRM9l2BPZwsHEMWNfdOFOndrjec3/EwODeft17SYYwT\r\njPRATv0j9CIEdUIbaur8c2Zl5lqr/MxZQSrA4zHR8IS9z/zzvOhgIEzpinuh\r\n6osB/rLVTV1pya/4g9Fr4BRBlngOKq9XuqZoBnl05c3MbPwWZuO9B2WqmoFF\r\nBOp9jTWnOJYak25CXYH5QgxEx5hKYxRi/J9dUaCxCSvXcHtzbUXWdCyJZr1h\r\n1eDK33v1LzcQydFjGjOUXpZK7KpjHg9Engayu+VH6+6+KvxTDJyGMsdCoMBt\r\nthopkB1NV3EHBkZWWOYAy61n3Tq41eWMrWaWhyHDBEdd/R2lo+bC+YTL6dFs\r\nszVdj2G89R5ZUE4wul+Ai+pZUNW+FAPzfE8HPkTQGIqXSTw8xZ1ZaTF5MX1H\r\nDUjJOqqj12bPpTie2lDVjfbp0qeTXC+sNe8BBy6N+fxDECMjwKBxSz83Unxy\r\nMhBy7gC+G15QqDekGbmlDDRFQ36CCUwQCuNRuUM6EpWt5+xaTP6fuAqHVQgo\r\nOAcYanjieMy+BdK5EQ4WXwdluqiiA3zzqEvoqOyCibVPRcTdgGdnJKbe6fFu\r\nuIsNzPoKinFM6XP3ph621YrPi6LdMdnpBRVkssOkU73KztL8HeM+WgrJJcEB\r\npBArDDfowOuxbC3jkTw0a8VZvFdvdcQsIog=\r\n=Hxll\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.2.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.2.2","@fluidframework/map":"^1.2.2","@fluidframework/cell":"^1.2.2","@fluidframework/matrix":"^1.2.2","@fluidframework/counter":"^1.2.2","@fluidframework/aqueduct":"^1.2.2","@fluidframework/sequence":"^1.2.2","@fluidframework/test-utils":"^1.2.2","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^1.2.2","@fluidframework/test-drivers":"^1.2.2","@fluidframework/core-interfaces":"^1.2.2","@fluidframework/container-loader":"^1.2.2","@fluidframework/mocha-test-setup":"^1.2.2","@fluidframework/container-runtime":"^1.2.2","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.2.2","@fluidframework/ordered-collection":"^1.2.2","@fluidframework/register-collection":"^1.2.2","@fluidframework/runtime-definitions":"^1.2.2","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.2.2","@fluidframework/datastore-definitions":"^1.2.2","@fluidframework/test-driver-definitions":"^1.2.2"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"1.2.2"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.2.2_1658152115398_0.00209258932009293","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.0.0.81589":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.0.0.81589","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.0.0.81589","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"4695e11502faef74bcb1296514c72bc9099bdb6f","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.0.0.81589.tgz","fileCount":58,"integrity":"sha512-tLxKE9BOtwG3/Qsnm+4cLw4aIMvpgiLZhaQDe55w2YucBeCNVcyKS09x8WjwbEqeyXxvwgJHBcGYVCcrVIdmJQ==","signatures":[{"sig":"MEUCIGHc4hy+3hIysSfydL0exXb7eskg7qHeW7sNA57fQGosAiEA2Y9wXfz1FhaXvkf4oP57yInZ/tM4boBgd8t3E4LQAQo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251232,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2r4VACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmokTA/+PWovV4nC2VFuMa+l+Ma1ult9F0Rc23tLTBRduDlJCarrp5Sy\r\nSt3LRkD2p5QVOzBPuP1u4pY6Zxzl67A8FM0AqJ8EoPYnISO1FmKxlOmA5A64\r\nADli3RVJ7nE8b7g81Mc9OPw1nc6a6vp2pXOeFhCPx/Y76VezQIBLJe8cD6uL\r\nW1xh6+vg9T9bGTboaON9SE1rLk1rGbsSW+WtOaSLB9M0mMx1Wd3I3QJw5w/R\r\nkK3/gg7mKyXX5PFyE8IsYJmGK8ogRtB1hCmU7keKKv9QZSIkZC8VfBhO7mFX\r\nIFChA6Y7byBm7cL5Ps+XGxa9UPjfQ7Z4peF6+zZXIBnclkBLlifaXW7G0WLL\r\nTRS4vM/4LsNXexbvz/ZmmPV4LYH7/35wkpjjZ+KS2i0DKg0KYFTSiFDEvQS5\r\n7SMXzaB+OB4/QEdZPHkgrBhBAs9AJpTw+TyC2xvsw/ScpmS0BG95nomq6JyV\r\nBxOAsa96R/f+XOKEs2BMpmslrnOZFmpyZVoR/V7At4+ti+G4G4WviH1Er4i8\r\ngn+axmhpi6Y9yeMlzvH6pC6MoeCmFPqM0emR5Gr0DkzonuIJmS2MYfrnBxr7\r\nc6S8qTwccohKDZ0YCB3YnTPYfUWRMQFjeO0420Cz80fT5MKhnhZNGsWRSYRr\r\n14TQXxAOdodvZJpa3nlfyz4BE9Q8k1p8vSY=\r\n=p4Js\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.0.0.81589.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"2.0.0-internal.1.0.0.81589","@fluidframework/map":"2.0.0-internal.1.0.0.81589","@fluidframework/cell":"2.0.0-internal.1.0.0.81589","@fluidframework/matrix":"2.0.0-internal.1.0.0.81589","@fluidframework/counter":"2.0.0-internal.1.0.0.81589","@fluidframework/aqueduct":"2.0.0-internal.1.0.0.81589","@fluidframework/sequence":"2.0.0-internal.1.0.0.81589","@fluidframework/test-utils":"2.0.0-internal.1.0.0.81589","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"2.0.0-internal.1.0.0.81589","@fluidframework/test-drivers":"2.0.0-internal.1.0.0.81589","@fluidframework/core-interfaces":"2.0.0-internal.1.0.0.81589","@fluidframework/container-loader":"2.0.0-internal.1.0.0.81589","@fluidframework/mocha-test-setup":"2.0.0-internal.1.0.0.81589","@fluidframework/container-runtime":"2.0.0-internal.1.0.0.81589","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"2.0.0-internal.1.0.0.81589","@fluidframework/ordered-collection":"2.0.0-internal.1.0.0.81589","@fluidframework/register-collection":"2.0.0-internal.1.0.0.81589","@fluidframework/runtime-definitions":"2.0.0-internal.1.0.0.81589","@fluidframework/protocol-definitions":"^0.1029.1000-0","@fluidframework/container-definitions":"2.0.0-internal.1.0.0.81589","@fluidframework/datastore-definitions":"2.0.0-internal.1.0.0.81589","@fluidframework/test-driver-definitions":"2.0.0-internal.1.0.0.81589"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"backCompat":false,"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.3.0-0","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.0.0.81589_1658502677492_0.2671685427709529","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.0.0.81601":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.0.0.81601","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.0.0.81601","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"4a965e18ae4539f2f2cee3896481667d1c93eb73","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.0.0.81601.tgz","fileCount":58,"integrity":"sha512-zEQ/broqGRf51skebJ+6tq1So132nci59a29CqoCkfCByXFOLAI1v1Ax7clS3MLjCQCd+o+122fsxKz2y7MoeQ==","signatures":[{"sig":"MEUCIE5k3V7aizqS+LI9PeyJzSai30HDCFWD59Bx+Iz20pbqAiEA60JmMqx+ca6o2vvLmQb6gPDAHOxJyvnABba8GjbYzlg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251232,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2sg0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoZ1g//de+NVXzDtwmz4sP2RpAU3xn8gVEBal+YOWT+oRHrcS+ixFIl\r\nP4ECCnitp7zIsOgw7h2VNPSwXVqpNvmE/a+vUnEQjeANHgEb0Gw4P90Baw61\r\nYOOcgbkRAeP9mLa1ZJ79Zt8kXvaro66/drdqkbXu84QhT5IV1uYNdPo75llL\r\nDH4LTbdm7gHFYNaXi1BdE1Z4nSvzIiOqm+S2JnXgJxOMoRH2t9VO+5RYUXE/\r\nf3+NPY9LZz+fyig2m+Iz/MfpMHgUyaMbvTSkc0+vIp2YkTsATDda22H944nX\r\njFLtDIsvk4YP3GeNVm+gIxYS+IstEWSFkLEHUche+uXBm5gEtdXKMxxY+dlT\r\nzGIzvTHslVe+FXTqvUEyovXJF9ilDzfmobaYNtGdzgt6XTJIZaCcnqb0Y3AO\r\nRRqAdf5+wi2oS5R7difVk2Rm7Xrnk6wwI27mh2S39FG5BvXA4DQ/UBI22lbB\r\nzZN1SzR9wVrylXGyg3xtOG5D7i6ZkJt8l1D7n5/x7hT+oW6bvj8wa7VLLucF\r\npFBlXXOoo6vqYZNKakprGOXhEcD0BsR6bRizBXcavL/1FHgNFfac3W0KMWiN\r\nZODVJMDBKSyH1jU+p9x3T+5NOHc4vAWpDk8cx7gslS89JmD1Ag/eU0LV87V1\r\nkqf+KYcqoD4KoARcTmhcRURR58ZZwtyEwnM=\r\n=EKP7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.0.0.81601.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"2.0.0-internal.1.0.0.81601","@fluidframework/map":"2.0.0-internal.1.0.0.81601","@fluidframework/cell":"2.0.0-internal.1.0.0.81601","@fluidframework/matrix":"2.0.0-internal.1.0.0.81601","@fluidframework/counter":"2.0.0-internal.1.0.0.81601","@fluidframework/aqueduct":"2.0.0-internal.1.0.0.81601","@fluidframework/sequence":"2.0.0-internal.1.0.0.81601","@fluidframework/test-utils":"2.0.0-internal.1.0.0.81601","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"2.0.0-internal.1.0.0.81601","@fluidframework/test-drivers":"2.0.0-internal.1.0.0.81601","@fluidframework/core-interfaces":"2.0.0-internal.1.0.0.81601","@fluidframework/container-loader":"2.0.0-internal.1.0.0.81601","@fluidframework/mocha-test-setup":"2.0.0-internal.1.0.0.81601","@fluidframework/container-runtime":"2.0.0-internal.1.0.0.81601","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"2.0.0-internal.1.0.0.81601","@fluidframework/ordered-collection":"2.0.0-internal.1.0.0.81601","@fluidframework/register-collection":"2.0.0-internal.1.0.0.81601","@fluidframework/runtime-definitions":"2.0.0-internal.1.0.0.81601","@fluidframework/protocol-definitions":"^0.1029.1000-0","@fluidframework/container-definitions":"2.0.0-internal.1.0.0.81601","@fluidframework/datastore-definitions":"2.0.0-internal.1.0.0.81601","@fluidframework/test-driver-definitions":"2.0.0-internal.1.0.0.81601"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"backCompat":false,"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.3.0-0","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.0.0.81601_1658505268204_0.29465919470063806","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.0.0.82159":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.0.0.82159","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.0.0.82159","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"82a191781e9ed44c35161697c9aa16252135dd62","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.0.0.82159.tgz","fileCount":58,"integrity":"sha512-UiV5nmpiaARwImrkaoFS1jvtdlRjJM+tGVRm4HmvaaMFvJrmO/fZqa7JR5T0vPTrjPuc/xDGk1synT+ZnuICvA==","signatures":[{"sig":"MEQCIGm8vQzpVBkQsRo6bgmfP678Lw4pcanmKCyy/TnT9TP9AiBlXairoI9HspPYV3Y4Sv8EsMuiAk+2RL8eVgGxNBB0TA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251232,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3/0AACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmodvg/9Gtp6qYEo/duQVTukSMHnjBLqOIDw1ofzO4yA7/Asqitt+qGg\r\nQBs/PftVedzXUkDctVuXYyTd6s48XyeFYOGJ5THzg4UUseY9lb4UTkJyq/bY\r\n3Tnyu+7ou5qN3s/0CnlJoticv63r4MMs2g12Ft7ln0Hk3N+8mADDLIRlaSqA\r\nVsL1cPVXNBR5M9P2/9/EKCHVLBEUEp27fWTa0pGF1o3Qmv3XRL6uN0ZeIz27\r\n6pyEAqnJTB4igE8r8MByQMQoe3Cn2sOVQDtC8HM4DoLS4Se6S3XFXslK8p3X\r\nFze8DlnjZ+cpufa7NHS6L2wHrjtxEjc0enZd4aVYhFAL0rkrx9aJvt57M8Ax\r\nu42KVTvE+W643qT+Vx8dRk/1mVg2QL28CqVJqWDthq9VwYRYh8jxJ4IVGKBT\r\nc8F3l8sAWibEQBgWlVwRDzvpsBEgUlG5oieicMX1fnwDgvzXvLQvRwYuVF3d\r\nDlNlbaRWFT8k2XmLrSP+l99ZBy1TNnrUSyXkaY5y2fbDNJnjy90aQSBfnud9\r\nvQvsYlu3RnxyTJIduezRfXE+azkAQorTUr8xmR5Nvl5RJadp9AAXcHp7GmFG\r\nWdB0IkYpBJSjTPk2e3nMYDV02Dpn5GQpgW2PjjuRs0m6L2kIoVYPwtw3Tubx\r\nntnZrDPUMtdnMn9tr1gpE2tU19LYimf3Xqc=\r\n=WRDX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.0.0.82159.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"2.0.0-internal.1.0.0.82159","@fluidframework/map":"2.0.0-internal.1.0.0.82159","@fluidframework/cell":"2.0.0-internal.1.0.0.82159","@fluidframework/matrix":"2.0.0-internal.1.0.0.82159","@fluidframework/counter":"2.0.0-internal.1.0.0.82159","@fluidframework/aqueduct":"2.0.0-internal.1.0.0.82159","@fluidframework/sequence":"2.0.0-internal.1.0.0.82159","@fluidframework/test-utils":"2.0.0-internal.1.0.0.82159","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"2.0.0-internal.1.0.0.82159","@fluidframework/test-drivers":"2.0.0-internal.1.0.0.82159","@fluidframework/core-interfaces":"2.0.0-internal.1.0.0.82159","@fluidframework/container-loader":"2.0.0-internal.1.0.0.82159","@fluidframework/mocha-test-setup":"2.0.0-internal.1.0.0.82159","@fluidframework/container-runtime":"2.0.0-internal.1.0.0.82159","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"2.0.0-internal.1.0.0.82159","@fluidframework/ordered-collection":"2.0.0-internal.1.0.0.82159","@fluidframework/register-collection":"2.0.0-internal.1.0.0.82159","@fluidframework/runtime-definitions":"2.0.0-internal.1.0.0.82159","@fluidframework/protocol-definitions":"^0.1029.1000-0","@fluidframework/container-definitions":"2.0.0-internal.1.0.0.82159","@fluidframework/datastore-definitions":"2.0.0-internal.1.0.0.82159","@fluidframework/test-driver-definitions":"2.0.0-internal.1.0.0.82159"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"backCompat":false,"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.3.0-0","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.0.0.82159_1658846464689_0.03415693089383254","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.0.0.82628":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.0.0.82628","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.0.0.82628","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"948f3c25425a7eee78e807b64c972809ea56ff26","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.0.0.82628.tgz","fileCount":58,"integrity":"sha512-Mi+1osOfDn/BUVptkLEv8BqOa44Lsvg2CMKmg9PixDTehji/4lpNRVkZT1eqhUe7XgflMpQju//k5+6wo/FZKg==","signatures":[{"sig":"MEUCIDfgfp8WHrwRKrJ1OnU6Gm4Ec/pWRk5LZKyxNOzSPFP1AiEAx+kLrRWKOTFwGoRFxeUPqygLu5gwSgy7N749ds0wf6g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251232,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi4r5pACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqqmhAAmtylzERh3ATXzXamBe4EVq9iG4pkE/hylGapzcVph1Pf5QNg\r\nu/zQaEoCxH1hpdBE7MLGVVVhO6i0EVDA67/aeY4UEym+jadp4Szag6MIq486\r\nNzI1xo6B0JPXN0d9YyU+VXYmoOyKw99sU/+72MNDABW6H8EKUAJBWh0sKLDB\r\nokPQqEtRKX73nqKwnr2Vf7KIz/xutIwrQIf726KewZvB9HH2zHoTwc+PFLCP\r\nPZagzRChV2zx1DLb1mlsxK5570RoOQ0HkVMHdTNXd36j7X6HBq6wKjMkYq7/\r\npI0CsEhG7HnzPzE0Dei1EmgiRd7h5jEF6JrMsmjcju8LOu6Q/eecB6YyNsI9\r\n+2QJRyS1XBurgnPLjiTqwzVgxogAXX/SV+aZ9wjCHr5Zfl9Rlc7t5hvdhy4W\r\n6iXK3o/Q0pqfG1PyEOZOYL0E9ptfuenXtiQ6Juga2CQyDhDZf4QabkyGjKw6\r\nUpIB4W9JxlItWPT3MCige5T9yalFwaqL1i2+WyO9a13wCNcPkvnDXmFcXw19\r\n2KNCjzUu46bkibLC2upulOK3vFf8PfgJ3s2lFHzoJkc2h1Gmi8tQrTRGFlN2\r\nmZpblzxhmlSgXXwoiRhZm9lYrTF5B0jN4o4YvEDyMwXYAV8DZqOL7eK7T71f\r\nTDEmh5XB1WpaVmRMvHrrqdGmfx8//h/ClVU=\r\n=nQ0u\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.0.0.82628.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"2.0.0-internal.1.0.0.82628","@fluidframework/map":"2.0.0-internal.1.0.0.82628","@fluidframework/cell":"2.0.0-internal.1.0.0.82628","@fluidframework/matrix":"2.0.0-internal.1.0.0.82628","@fluidframework/counter":"2.0.0-internal.1.0.0.82628","@fluidframework/aqueduct":"2.0.0-internal.1.0.0.82628","@fluidframework/sequence":"2.0.0-internal.1.0.0.82628","@fluidframework/test-utils":"2.0.0-internal.1.0.0.82628","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"2.0.0-internal.1.0.0.82628","@fluidframework/test-drivers":"2.0.0-internal.1.0.0.82628","@fluidframework/core-interfaces":"2.0.0-internal.1.0.0.82628","@fluidframework/container-loader":"2.0.0-internal.1.0.0.82628","@fluidframework/mocha-test-setup":"2.0.0-internal.1.0.0.82628","@fluidframework/container-runtime":"2.0.0-internal.1.0.0.82628","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"2.0.0-internal.1.0.0.82628","@fluidframework/ordered-collection":"2.0.0-internal.1.0.0.82628","@fluidframework/register-collection":"2.0.0-internal.1.0.0.82628","@fluidframework/runtime-definitions":"2.0.0-internal.1.0.0.82628","@fluidframework/protocol-definitions":"^0.1029.1000-0","@fluidframework/container-definitions":"2.0.0-internal.1.0.0.82628","@fluidframework/datastore-definitions":"2.0.0-internal.1.0.0.82628","@fluidframework/test-driver-definitions":"2.0.0-internal.1.0.0.82628"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"backCompat":false,"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.3.0-0","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.0.0.82628_1659027049692_0.1441588789001218","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.0.0.82693":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.0.0.82693","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.0.0.82693","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"a55f66f101fe9403ebc3dac7ae0dad1caa9bbdf8","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.0.0.82693.tgz","fileCount":58,"integrity":"sha512-Y9fDNqEAoLyLO8vxTOcKZo1JTntPrq1dSQu8wsbCyCqb6ZJ1KiARMKNuebioFsDKirbqa99FzDZ+bN+Bylp6fg==","signatures":[{"sig":"MEUCIAluMIPup5QWNyR2OLRcDC7vcBcvnsPlAWPtoenh/LjSAiEAivO+bICL5zen3G9GNxFJMQ5AG52Lxvs4P1QtOJhqPg4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251232,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi4ujjACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqGfg//bPzKfHmuat+f6kse2DHuobJI0J/9Fki+iXMOjP3HFVYR+Du9\r\ntG7+odcO/0OGqaDiWNEXkP0TfBR/fn9fHFr8AsKbwq6b1EsVosRNwml6uWpt\r\nOaChO6sW1us6lBf6AbKjFCYl/borRfoTcNWV8zkG0TTrw5x3BYJzmzdzwCBL\r\ntBebec9jjLavpl4uoZPTA/w9xUzcVjbZ/fH29N/jpsjjpae6RXEyQ8UNJPv1\r\nY1UAMNuMgCGxMxhZDDuXfoOb3kbrcwIkGKXuKIBxgO89VrvQ6nzT2NSATG+Z\r\n7UpaKv0RNdqPzaFmqnKbSKOh9JEQscgozSs4CbVnReQzIjtQHeyFA3EC60rd\r\nYWdk6Wx+5vQlJzkUh0U7soW56JVmX1NLfgXC+YQM2urotv87xHwjb0OwKQL8\r\nQAF6I/gxpwuabSYph1dp8+NATfd2uCVnKQQvZ47jyi/uMWPMQ3yptAEtv3cB\r\ndbCK0f2ejhEC8tVFGExJdeH3TjSiTH5C64vrpLKj4nT5dBj8gnKKfCaXXy1s\r\nrIG8DIB6/2puW7tEUsrKVXZ+pGfW70Gn8pHZEm9RYHiDd+bsWVTbmeDhCC49\r\nj4waBazNeCBxbXD7FFibuqtvTWN/h+b4lS80aKmqtcBEprcHabHlH8gsz+T3\r\nKgVcPVKrlUAXIhhfAbXeg19hRtoAvUqmMdU=\r\n=4l+h\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.0.0.82693.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"2.0.0-internal.1.0.0.82693","@fluidframework/map":"2.0.0-internal.1.0.0.82693","@fluidframework/cell":"2.0.0-internal.1.0.0.82693","@fluidframework/matrix":"2.0.0-internal.1.0.0.82693","@fluidframework/counter":"2.0.0-internal.1.0.0.82693","@fluidframework/aqueduct":"2.0.0-internal.1.0.0.82693","@fluidframework/sequence":"2.0.0-internal.1.0.0.82693","@fluidframework/test-utils":"2.0.0-internal.1.0.0.82693","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"2.0.0-internal.1.0.0.82693","@fluidframework/test-drivers":"2.0.0-internal.1.0.0.82693","@fluidframework/core-interfaces":"2.0.0-internal.1.0.0.82693","@fluidframework/container-loader":"2.0.0-internal.1.0.0.82693","@fluidframework/mocha-test-setup":"2.0.0-internal.1.0.0.82693","@fluidframework/container-runtime":"2.0.0-internal.1.0.0.82693","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"2.0.0-internal.1.0.0.82693","@fluidframework/ordered-collection":"2.0.0-internal.1.0.0.82693","@fluidframework/register-collection":"2.0.0-internal.1.0.0.82693","@fluidframework/runtime-definitions":"2.0.0-internal.1.0.0.82693","@fluidframework/protocol-definitions":"^0.1029.1000-0","@fluidframework/container-definitions":"2.0.0-internal.1.0.0.82693","@fluidframework/datastore-definitions":"2.0.0-internal.1.0.0.82693","@fluidframework/test-driver-definitions":"2.0.0-internal.1.0.0.82693"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"backCompat":false,"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.3.0-0","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.0.0.82693_1659037923578_0.0060414366586794","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.0.0.83139":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.0.0.83139","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.0.0.83139","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"cef2260a109d352d4d5e0220bea71031fcc17936","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.0.0.83139.tgz","fileCount":58,"integrity":"sha512-6EuN3dzCPfuy6nDtQlZNIY3TsYYd7pyI5uqxbvt276DZxkfaXs1j4M7ZaefvF8zdlkzfUuB+ACkqHL36U0APoQ==","signatures":[{"sig":"MEUCIQDYiSbmB+lCeq9tM+szIuzRsr6Khqoz7PkpqSzBqZwsjwIgVUQGCHzKFMb+sp+yUn6LU3ShxmLxiFh+VBgJUv1qc4o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251232,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi6EZJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqXyA/9Epx11Wdg1bax+jpagyXOZn8eGuAWt4v3mV1xv3OsCc43Fr3U\r\nFhaNKluzQ0yY1IQ+ZqXmHmLwtBzhRt1ubuld4dSZpTRdeaayV/qcuxZR1VDM\r\nahfTkLbmrBD8y0wY9V+VEa3LXwD+MZJMCKWbEyrBqZRWGMdIyw4xmSznMuT1\r\n+n8CYKLtLG8WFDFO3lkjVk5qtQFlnXlyMvcnLMqzyYLmHSMgBrvX+fI0/+MT\r\nClqzqDrBJrYQd3B6hkgG98EHZaBxxsK5elD3GscaefVfWBnuJks/GudUbKIR\r\nfUU/FYO41WPoaFwLaVppOjVydE0FcwT98skJaF/BoVA8V8UKmqLoFaFoGVB7\r\nAq1LwfkzcemMDOYX4vV89C0cuDWd+WGMEb2CiIYDCQMY9wkrfTfmxF0v9qAw\r\nMWI3B+rkdM03FZPQ0rd5MoyZbJVIhJvIqZ55SUpJPqbzDdSqJYRcF7+C9/eL\r\nbk6G71tb8dTpTn//u/lYzSf8A8OKgYMI1NO2cpoe168mgYwM+TwN3z9p+5vQ\r\n8laQGZaMPzpMx1q/JG9orFv8VIixD2U/JiJl1NmIfKCwNPElcElYielYWG9L\r\n/D2Em9aGRQGijArOgueMUA1eMLIcyBoH3Jpa7auIOxE1N/W7HkP+LDWYpgDF\r\nUMMDYgY2tqid+YoLhUpRjz1+yltkDaWq7dk=\r\n=dONa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.0.0.83139.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"2.0.0-internal.1.0.0.83139","@fluidframework/map":"2.0.0-internal.1.0.0.83139","@fluidframework/cell":"2.0.0-internal.1.0.0.83139","@fluidframework/matrix":"2.0.0-internal.1.0.0.83139","@fluidframework/counter":"2.0.0-internal.1.0.0.83139","@fluidframework/aqueduct":"2.0.0-internal.1.0.0.83139","@fluidframework/sequence":"2.0.0-internal.1.0.0.83139","@fluidframework/test-utils":"2.0.0-internal.1.0.0.83139","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"2.0.0-internal.1.0.0.83139","@fluidframework/test-drivers":"2.0.0-internal.1.0.0.83139","@fluidframework/core-interfaces":"2.0.0-internal.1.0.0.83139","@fluidframework/container-loader":"2.0.0-internal.1.0.0.83139","@fluidframework/mocha-test-setup":"2.0.0-internal.1.0.0.83139","@fluidframework/container-runtime":"2.0.0-internal.1.0.0.83139","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"2.0.0-internal.1.0.0.83139","@fluidframework/ordered-collection":"2.0.0-internal.1.0.0.83139","@fluidframework/register-collection":"2.0.0-internal.1.0.0.83139","@fluidframework/runtime-definitions":"2.0.0-internal.1.0.0.83139","@fluidframework/protocol-definitions":"^0.1029.1000-0","@fluidframework/container-definitions":"2.0.0-internal.1.0.0.83139","@fluidframework/datastore-definitions":"2.0.0-internal.1.0.0.83139","@fluidframework/test-driver-definitions":"2.0.0-internal.1.0.0.83139"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"backCompat":false,"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.3.0-0","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.0.0.83139_1659389513506_0.44506223949023216","host":"s3://npm-registry-packages"}},"1.2.3-83900":{"name":"@fluidframework/test-version-utils","version":"1.2.3-83900","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.2.3-83900","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"3fa7f78fd63a822ebe1adcfcf36845812da4c5f6","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.2.3-83900.tgz","fileCount":53,"integrity":"sha512-B/D/7eQ/DmHMynCF/JcHY1M8hq9KqGBZ5sHK329Q2kabgZuSGOqAoa6WQkzWmQ4RTYZVr5IGxkQCKhYDXVoCvA==","signatures":[{"sig":"MEYCIQCMNK2zEOikoV32SzPUCgtsOyN+PZY1Zlqw3AnNhvj7JAIhAKi3vh2Vr31p/rZxKt8hBSpuhZ/43YOqoFo2R1bj+uWT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi7CX5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq1vRAAokRtGirdSMuOkcp1LResGSBJ0LAP4ud64XaRHdQHN8zXWQKZ\r\n5uDffosuu/D1bQT0PtwlvkctmOZV+7MVTe4DYOY2EYWH9c0r+jO8rqNGS7PV\r\nKvIEu9tkG9+gi1xysaIJEgglpGu1V7wjUeGPfHoRCItdXvdqrerF+mVB+SZ+\r\nDbslxyOWqhItIfbkBwQwLf+daPmUWRlcQPJn/VmMZPatbYi+97YGYHEXK274\r\nRoY3OYz+XVoP83pO2c6AoWZpWcRB5snjiN9axU7gkXBjO4dtF/tT8KoPO+u3\r\n7L2JXzgtadlk0BH11QyL3VsSRzKZ44NdsoR1pUUMIf4jSd+bVSljf7U3BTfs\r\nh8BUWKu2YjHb8B2Ye0U8KIpJfdEWflv/XUtyBsqiumpZAxNK6FNS3SngtpMh\r\nw295KUZX43r9ljhtwfarxkyA+lvalxm5uwMx/eTAML01S823HPQ16+8Fy672\r\n+ieCbnJZ/SZGdDIQTGommfWHMYUMN/7jt5gQxAi59e8ZAmCRJd1WeU15HXdN\r\nCj5bOKgJHXYD9HLecEnG08Q28vKBPWoTTek3IVdB6CvNzyEAaWzYwpFDB09H\r\nZMFrvB3CZQgtQMUnVSnF28E/yDuu+GwHCqPs5wuuzV2W4vUlE0cQzZdjRs01\r\nBKh0pX+/9X/figICJN+NUKrL3AR2fjraZsQ=\r\n=53SG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.2.3-83900.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"1.2.3-83900","@fluidframework/map":"1.2.3-83900","@fluidframework/cell":"1.2.3-83900","@fluidframework/matrix":"1.2.3-83900","@fluidframework/counter":"1.2.3-83900","@fluidframework/aqueduct":"1.2.3-83900","@fluidframework/sequence":"1.2.3-83900","@fluidframework/test-utils":"1.2.3-83900","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"1.2.3-83900","@fluidframework/test-drivers":"1.2.3-83900","@fluidframework/core-interfaces":"1.2.3-83900","@fluidframework/container-loader":"1.2.3-83900","@fluidframework/mocha-test-setup":"1.2.3-83900","@fluidframework/container-runtime":"1.2.3-83900","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"1.2.3-83900","@fluidframework/ordered-collection":"1.2.3-83900","@fluidframework/register-collection":"1.2.3-83900","@fluidframework/runtime-definitions":"1.2.3-83900","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"1.2.3-83900","@fluidframework/datastore-definitions":"1.2.3-83900","@fluidframework/test-driver-definitions":"1.2.3-83900"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.2.2"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.2.3-83900_1659643385543_0.9803738751519067","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.0.0.84253":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.0.0.84253","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.0.0.84253","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"3de05b4c304e7059b25821344ff54679b26fb337","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.0.0.84253.tgz","fileCount":58,"integrity":"sha512-6BsAsTNq6VR8h1PuU9+8rierCaioU+YLME5azuBMpJdqMNS8C+4kPJ8M2sz4rrUJNW/8kP45ZeOi+vLce/SUyA==","signatures":[{"sig":"MEYCIQD659m2LWFhTq5L+Wq1hkBjTYcJzgGWhHZgjOLAXKniBwIhAOO91AdO6eywhdNNqXo2w+LYjXHBrldsPZsZBoagfyt2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251224,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi8WSaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrE5A//SP2Fk5n74DedJCNBh04FcXbce/vcEXtrMhV0l3fa1R3hkcIx\r\ntELT8rGHGB/OOS/Gghoe6WFRZTm0avddZGcwDKPnVC8Vlxkzyt0KEN1ibiCR\r\nuL6veE754N2klKwH98fjpWsI59PI+zxolVDJ6e0L2V0XCfIfUkaJAZTB43jk\r\nquahLvAtEEZZEU7A7Lr3KZN/+AAQONWK+60Ojddi4YuW237xB5yBz09+RCLg\r\nfqQYuHhcsR/ZBToKq/okjyO0j4T73T3hR+7B+rFA4mPUOQVunwboSitKtkYr\r\nxlco0AGSoa6hlq92ELmMbIXUEeQ9yGrq8uZXzHYuJIrZWcplEbgZ7QR+nfBG\r\n+ll+cCfhuApuGXC9VZM1eBl9nznISDfix5YlBKb6VzpqCnZFhuioULWCJB11\r\nERMmPhkEIIaaL5+8Y/HzJOIfRce6CA/ujUh3onty1qmDltnmzIiY3Xl/wDKf\r\n6Z2Bf6CAt+IMH2JI5jrYAjZSP83jthtLFsap9FdmFTIXf9lp5ZYJT8Dt3fyQ\r\n5S6EsvQ7WWwQlIQJ4V8ygQ+PIeSUF7JqRcOK/P5e10gNqqvFBw5OczVCJe/N\r\nuFXkEXdCgydg1X3OrpOeJ5xMOoF7S34r33OhGJzBo36G90AY9RW+K/eZg3Jj\r\nQL3UmP3qKqBQUTWLK/SN+i2W68psXORgW+g=\r\n=u9ni\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.0.0.84253.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"2.0.0-internal.1.0.0.84253","@fluidframework/map":"2.0.0-internal.1.0.0.84253","@fluidframework/cell":"2.0.0-internal.1.0.0.84253","@fluidframework/matrix":"2.0.0-internal.1.0.0.84253","@fluidframework/counter":"2.0.0-internal.1.0.0.84253","@fluidframework/aqueduct":"2.0.0-internal.1.0.0.84253","@fluidframework/sequence":"2.0.0-internal.1.0.0.84253","@fluidframework/test-utils":"2.0.0-internal.1.0.0.84253","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":"2.0.0-internal.1.0.0.84253","@fluidframework/test-drivers":"2.0.0-internal.1.0.0.84253","@fluidframework/core-interfaces":"2.0.0-internal.1.0.0.84253","@fluidframework/container-loader":"2.0.0-internal.1.0.0.84253","@fluidframework/mocha-test-setup":"2.0.0-internal.1.0.0.84253","@fluidframework/container-runtime":"2.0.0-internal.1.0.0.84253","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"2.0.0-internal.1.0.0.84253","@fluidframework/ordered-collection":"2.0.0-internal.1.0.0.84253","@fluidframework/register-collection":"2.0.0-internal.1.0.0.84253","@fluidframework/runtime-definitions":"2.0.0-internal.1.0.0.84253","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":"2.0.0-internal.1.0.0.84253","@fluidframework/datastore-definitions":"2.0.0-internal.1.0.0.84253","@fluidframework/test-driver-definitions":"2.0.0-internal.1.0.0.84253"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"backCompat":false,"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.3.1000","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.0.0.84253_1659987098186_0.04487501578195574","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.0.0":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.0.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.0.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"1f24718f0c8ac2241ae0ff61b7063fbcf64954eb","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.0.0.tgz","fileCount":58,"integrity":"sha512-qrXw6enhpOLIpZ+oX+3rNvgS/1cmnLjncFO8o5mOfCu3WXwXQYAhmHVNPzhuyeCq7mdX9AlqFxg/qgdKWMueNQ==","signatures":[{"sig":"MEUCIQDKVSein7IZD/zb5KEP/vdbi6O9g2Qc8UVfr2fp4tHisgIgHQmCHsvHDz8GO3MkKFj4YOq6uJBlauyalUWq8U9HdSM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251089,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi8bY2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoy0w/+Mi7+9/44/HAyZoG1sWmkTO4zrdjHakgN7P2gnJYnw3b+hG7X\r\nuIqeFFnVAs1yZWrZN7b1QRtgMUX6OifTKvSUl6MiJuryii+T9YeQSRkBk3LN\r\nIXsmaOyxviOhxg+wcHkZewkOezNlj+rdhL4oBIeZgLRhQgueSMAlwjT/iBgq\r\nLjO+LGLnbaXsqXMbK7w5Mpe9t3QCCAUt1+q3jFoEp2T2StM/UnykRnRof2jZ\r\nXmx3IXuKtqAw4cqEzhXgkImk/NhApRZSLwmf+1gs9t78Y0Q6s/pXiOFKxi/b\r\nXGUhuP0TcXZZPHYKAeHjLavTAoS6+B6iRDMQtTUbakdOCevqBdCtzBC8fUcD\r\nye9JQf1xnQBM+eAIulaLPMxukHc+1K7qRZt4YkVgrgoF0JjNygf+4wXlYq5y\r\npymzYYRb1K+Cz6Wg1eppz6Au7ULvq+6G1sJ9jQCQomqrh+BeCtKC2syLsF4w\r\nIco8vnxz9IuaMTZTnyC87z6WFft90kvFZXJIb1kPBuHWB7gAnezGfUbu6JyR\r\nI7omQUqvRyOczulutC9uZ27nfwuLK3WCJ7rxg/m7f5NGvLHvtQQvbabkIop0\r\nzFhKxt3XPp5gXdKOiRpCIg4TdaF8YIzBvXoZIXcVHiOowsA5eCnguR9JbqFI\r\nn0meEStwkAw9xYWU/9l/npXMf57HTQ6/NFE=\r\n=jgbS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.0.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^2.0.0-internal.1.0.0","@fluidframework/map":"^2.0.0-internal.1.0.0","@fluidframework/cell":"^2.0.0-internal.1.0.0","@fluidframework/matrix":"^2.0.0-internal.1.0.0","@fluidframework/counter":"^2.0.0-internal.1.0.0","@fluidframework/aqueduct":"^2.0.0-internal.1.0.0","@fluidframework/sequence":"^2.0.0-internal.1.0.0","@fluidframework/test-utils":"^2.0.0-internal.1.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":"^2.0.0-internal.1.0.0","@fluidframework/test-drivers":"^2.0.0-internal.1.0.0","@fluidframework/core-interfaces":"^2.0.0-internal.1.0.0","@fluidframework/container-loader":"^2.0.0-internal.1.0.0","@fluidframework/mocha-test-setup":"^2.0.0-internal.1.0.0","@fluidframework/container-runtime":"^2.0.0-internal.1.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^2.0.0-internal.1.0.0","@fluidframework/ordered-collection":"^2.0.0-internal.1.0.0","@fluidframework/register-collection":"^2.0.0-internal.1.0.0","@fluidframework/runtime-definitions":"^2.0.0-internal.1.0.0","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":"^2.0.0-internal.1.0.0","@fluidframework/datastore-definitions":"^2.0.0-internal.1.0.0","@fluidframework/test-driver-definitions":"^2.0.0-internal.1.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"backCompat":false,"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.3.1000","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.0.0_1660007990110_0.2184534089149588","host":"s3://npm-registry-packages"}},"1.2.3-84921":{"name":"@fluidframework/test-version-utils","version":"1.2.3-84921","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.2.3-84921","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"ce19d9b2f74f38b095cf25c10d95ed6008b5ac36","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.2.3-84921.tgz","fileCount":53,"integrity":"sha512-RPARQ2OQvLmevd0GQU4D2uTFKVRs/jRehxyzwxaoMhoePQxYRfwV9OLIJ7Z9eaoR34YC3IiSaFfMqQuDERzQKg==","signatures":[{"sig":"MEUCIQCZuaLTAeH07lSkQ83Tm/ecyyG9Z+fmUl/adOIZr4TzVgIgJ6tWREGoJETAqrknW/zxO3QLEs/pQPBRqbB3Vl2c+nA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9XVnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqLYBAApIHXs0wXPNdvVO94+8nK/XB9buaYEifFLBMaC5qUrgY+JIu4\r\n7fhqIk86cLLAvMGQcdvLioMoeMwWk9CAtB3ODEK2QKcvWIgoXqHMIYfJBnCi\r\njFr5nIr+5kaNs0Zy9vk0kWTDxHeUP7mE/Rs3QHo3Jn282yoRtBxr4iapF3M0\r\nuHlSwmn5ain8JiNtSRBSYr8PR8MPwqpFzo+gbo3gXRfDRFK6omYjYxm/QBK3\r\nj4vg9lCbsowSBPWJFro5s6w0TzN7XhRwXowecyMpT7wtGgXfxQ+erCkD36p+\r\nfuiJ553AHGy7V6J8sA2uJlcrEi3UoiiYWHyY6FdJc8TtVQxS8f1r4Jo9Jb+W\r\nEE2M/MXj2T0fdrOz7RFJPUaaLFqR6/C0mXLoYSVMdQfE9D97TY9JNdWjGFGC\r\nLRP/GDAh+D29cmMkUWEunPf6YUZSdBw7tCpMKrZPKDNH3Wf9uIyTu632K2oI\r\n9ATIsZc/yVCDUgueqj2uhouVNW/LZI06nsU3Tn89SXoLnnpi0j8/c4H22GdP\r\nCByRqX1sa02uRhp4XQ6wG5iaxnfkYFOBX2k1NUt1o2BmVUbdWX3nBAx7YUix\r\nSpL0ENxrJogA1pG2FL59DpNM7QVOCOBXFhR52QOJ2yUQCx7TUQAg+Ks9KBUX\r\n6G2zNqDXLo/pouaoyEDu5GA2DQCKP1wURCM=\r\n=XKyb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.2.3-84921.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"1.2.3-84921","@fluidframework/map":"1.2.3-84921","@fluidframework/cell":"1.2.3-84921","@fluidframework/matrix":"1.2.3-84921","@fluidframework/counter":"1.2.3-84921","@fluidframework/aqueduct":"1.2.3-84921","@fluidframework/sequence":"1.2.3-84921","@fluidframework/test-utils":"1.2.3-84921","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"1.2.3-84921","@fluidframework/test-drivers":"1.2.3-84921","@fluidframework/core-interfaces":"1.2.3-84921","@fluidframework/container-loader":"1.2.3-84921","@fluidframework/mocha-test-setup":"1.2.3-84921","@fluidframework/container-runtime":"1.2.3-84921","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"1.2.3-84921","@fluidframework/ordered-collection":"1.2.3-84921","@fluidframework/register-collection":"1.2.3-84921","@fluidframework/runtime-definitions":"1.2.3-84921","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"1.2.3-84921","@fluidframework/datastore-definitions":"1.2.3-84921","@fluidframework/test-driver-definitions":"1.2.3-84921"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.2.2"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.2.3-84921_1660253543270_0.7553131237428636","host":"s3://npm-registry-packages"}},"1.2.3":{"name":"@fluidframework/test-version-utils","version":"1.2.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.2.3","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"dd2f87959c552dbe78def15f9bdd98b1c9650489","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.2.3.tgz","fileCount":53,"integrity":"sha512-jMCZxc/7uvdk94Acs0ojSQEv9hJ3a5YCUtQcT5kuVxYRUuih/ckGJQV9Vl87NUCPtqBI1y6H6Ac9fx2kFjcerw==","signatures":[{"sig":"MEQCIFakOw8ZImO1M3zFWgiHzxXl7UNM1jJz6lbltwtoMiCiAiBKo7Gz+GulPw0gmDtT6T0UAtFd7atVOvd8fQsVubOwxw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9YXhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq1Qg/8CmKvWYZGNo9RxRlGGARXHzhpWyBKeJZCRx8BjF/ZkuUG2AK7\r\nGFXMZIs2GDwDduyvKwlC1+OdbQrL2SL9l60xmTNA+Bop4nZEgaove8qEtsRr\r\nh1rmzwI2Vpyt8mXhhzu6LnPDS+YBNxGxZUGozu616r2YtQqatm6FonBXI/Tx\r\n7xTNV8ABzYiHG/GDy08X3bWQrFjwGf13fFmOZELAVpkB3kv7kpjjyYU64J2w\r\n0iH8CCHjMR8iUUKHr9Vl3UB6wxnuJF55YYAnfDYPBbkDilgA81X8HrCG6xHw\r\n8/KQyHT0qyl8BCYTiIwgyb1ZpNi2HwxPOa8Nc51y/N/vbAXdQAnH3lLrgYPu\r\nJCq0flZ3wsp6R//x7OLDW3sjODi2Qa7RnJaDZKtOqR0udjFtY84vFHAbH4nx\r\nGrpJbRkG2rJnZScE8QQNHsIfiDkIfQPZ81lPTAy286N6bGqn/bD7FBfbagrz\r\nvEFCq6dtd69Ql3OhLGo2tLoUNmkU3E/TW8AqCle3awCpD5/nAhKqQtCcWckN\r\nYoKtNipQ2f7ZJ4ZbWkiTJ3D2135/5eeyZW7KdvNuwaVjg726rRqyeQytHfOe\r\nCJR4DtyJaE0ohLcjRG/isCmSiDIvJITgnBB9T+p6FvXjgB87ZJBsfoi7p5ou\r\n52e1iVjEGOHZ61nANMAJXe0Wak6qhMLIPmw=\r\n=/wMN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.2.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.2.3","@fluidframework/map":"^1.2.3","@fluidframework/cell":"^1.2.3","@fluidframework/matrix":"^1.2.3","@fluidframework/counter":"^1.2.3","@fluidframework/aqueduct":"^1.2.3","@fluidframework/sequence":"^1.2.3","@fluidframework/test-utils":"^1.2.3","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^1.2.3","@fluidframework/test-drivers":"^1.2.3","@fluidframework/core-interfaces":"^1.2.3","@fluidframework/container-loader":"^1.2.3","@fluidframework/mocha-test-setup":"^1.2.3","@fluidframework/container-runtime":"^1.2.3","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.2.3","@fluidframework/ordered-collection":"^1.2.3","@fluidframework/register-collection":"^1.2.3","@fluidframework/runtime-definitions":"^1.2.3","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.2.3","@fluidframework/datastore-definitions":"^1.2.3","@fluidframework/test-driver-definitions":"^1.2.3"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"1.2.2"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.2.3_1660257761283_0.6487619477977453","host":"s3://npm-registry-packages"}},"1.2.4":{"name":"@fluidframework/test-version-utils","version":"1.2.4","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.2.4","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"d08bc3b8c9c82da3494aeeb6fc4cd033813c41a0","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.2.4.tgz","fileCount":53,"integrity":"sha512-3eBAOd6X60W1RW4ttulHYbWhw/Ov2lJWzpxeS0uIvt/isxzlsQEIxagg1qbUVRffg5/kEKAnJjL3//9b0xcOcQ==","signatures":[{"sig":"MEQCID+2vhoBWSOo9zn3P0bCV/hTi7t3SYAOp+wrkbFoEB1/AiAYBOHMruXveYxCDJdhb+oPF7JPFGhqDFBKtZmT0+rMzw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjBtcNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrRLRAAick7UUiqCJJeyQW9j1JDL+N2Kfdn/YzFmHkMZ0rPoVgfuZJe\r\nT1UPAAn/okfmyHADIANmrv5yKL7KpIbgFyF2NzgkkS9RHTLaCEmSubplmSxH\r\n2BAKHXBFdXgPbuBBmVTOYjPzjeOu+L8gam78oJcCab7e9OmXGMg2cGkmUBHC\r\nWGxw2xGQJxFNyXyZSwl/WLs7qKpr5Ywf8YwMtGU8r5jAnkT8dvMGcYRlV1f2\r\n6pzlT7pXw5z9HhlvtmbLuCjYyCJ3nqnOTZ0Th9lTPL3hqtRNXuxhnb9SSGSC\r\nVJocjyE3veS0xinwzCkz25OwHkDedH4mpaZYt56t9/B5h2mRQ/U0yxqCFuoe\r\nEoS1Tjz0isKOEkTHjcjuMqi4Aa199JHNdSvkpBgjTMedWOPSEf0fBEjUnqQ0\r\n2U+RjlZenCrSoe1pC9GIay1tXerfSLCvnH595QYpq+S3/YooZ7XCybbQz5WE\r\nAEbGUx6DSyu/HlOLZZ/fTduIEasAGcNIxhBO0dAifNl2mnmwEwhQHSWilmhW\r\n7dptr96+96QwExgOFjeKcbpdFO3pWEIviT71XoHO4cdX0A7rUsU+FlVKjwol\r\njOcYvI5/QPUpM9n5QAyTVAq5jbWnAcZdm9VVxY3BBnguLOJW5bymieZanpBo\r\n963RPNApX5og3K/dbghleSXYtvrnIMfuW20=\r\n=v8bs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.2.4.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.2.4","@fluidframework/map":"^1.2.4","@fluidframework/cell":"^1.2.4","@fluidframework/matrix":"^1.2.4","@fluidframework/counter":"^1.2.4","@fluidframework/aqueduct":"^1.2.4","@fluidframework/sequence":"^1.2.4","@fluidframework/test-utils":"^1.2.4","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^1.2.4","@fluidframework/test-drivers":"^1.2.4","@fluidframework/core-interfaces":"^1.2.4","@fluidframework/container-loader":"^1.2.4","@fluidframework/mocha-test-setup":"^1.2.4","@fluidframework/container-runtime":"^1.2.4","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.2.4","@fluidframework/ordered-collection":"^1.2.4","@fluidframework/register-collection":"^1.2.4","@fluidframework/runtime-definitions":"^1.2.4","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.2.4","@fluidframework/datastore-definitions":"^1.2.4","@fluidframework/test-driver-definitions":"^1.2.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.2.2"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.2.4_1661392653029_0.3417058596945035","host":"s3://npm-registry-packages"}},"1.2.5":{"name":"@fluidframework/test-version-utils","version":"1.2.5","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.2.5","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"9073f3db59c3933513cc19bb0daf1f85b2d40708","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.2.5.tgz","fileCount":53,"integrity":"sha512-g49wE6mUg6n4IrpApF7J5Xu6XkpdZxyU5C4JzmANK0eNvsee9AfP9mCjZ/ve/D4iuSlBzib7DsDODeGg/CxJ1A==","signatures":[{"sig":"MEQCIA2bXxze8v7jeUZAws9koVsjR+9adinhv8QlpzIEZiL6AiAiUOJa18vq2vaGg9cfDVqN5cH4vfbsOqXCkXrlFM/mQQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjD/NdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpBnRAAhkBVTQSFi/ZfQj3DGzc3YJrP35xJ2F/2OJupLs18Gj13qBVS\r\nk0VEx4/HXQpbB1PNsS9F1cJTEjZReL81gOGIFy1mvYoa5gJ7WuIZzXYEDx6h\r\nch5w3H2oa59sTQEF7zDuOY1aOayKs3W+E26DaLwjVl6N0M17ZtrWhOSCwOwC\r\nrQdOD8Ri8TFQ/GU4TD2dvLuCjcN1C/NuHWZr/Nml9KM1Hha5+sV+cFJfourC\r\n0CZAND/TbwsuLHDgNmS49WmBfXfilmmAuGutnQd1wKhuZ5zQDNrCt6oBrTfj\r\nFIjAKYnJCHodZ5ayd2coukKQtcTNTaqq28VtY1JReDPSU36aMSIZAtA82QmP\r\nAG1IvfpUXJjqMY70A/ZSGhoaHRZ2PyuK8WRU1H5XJLx1rYt7uNhUgt9aya2G\r\nps3g52oQnpasMsKbf6DwFPTAkI+fe5Aq9Odmip+1UyoL60f/0wu60dlPqNh5\r\naENHD0yEVfn0jThl5++hDocj8o0CWbFnOgZ86PjHRxZ14TZM0xzyfUaeNbjZ\r\njtLYwohMnzqWveA+WHijnleT0fbeeew5e1DINXuZ8UU57DLcpMdX+kT79t9G\r\nQM5ndN4MZFylodjur7+eLihqXxT/Ii44he3wfSv4H3gry5AVZF42TTDonLK0\r\nWjK7fG3GiCMdJ8vil6aU37OC8VGEBaMdyzg=\r\n=sok2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.2.5.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.2.5","@fluidframework/map":"^1.2.5","@fluidframework/cell":"^1.2.5","@fluidframework/matrix":"^1.2.5","@fluidframework/counter":"^1.2.5","@fluidframework/aqueduct":"^1.2.5","@fluidframework/sequence":"^1.2.5","@fluidframework/test-utils":"^1.2.5","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^1.2.5","@fluidframework/test-drivers":"^1.2.5","@fluidframework/core-interfaces":"^1.2.5","@fluidframework/container-loader":"^1.2.5","@fluidframework/mocha-test-setup":"^1.2.5","@fluidframework/container-runtime":"^1.2.5","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.2.5","@fluidframework/ordered-collection":"^1.2.5","@fluidframework/register-collection":"^1.2.5","@fluidframework/runtime-definitions":"^1.2.5","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.2.5","@fluidframework/datastore-definitions":"^1.2.5","@fluidframework/test-driver-definitions":"^1.2.5"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"1.2.2"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.2.5_1661989725140_0.12303726261477554","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.1.0":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.1.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.1.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"2a689739e573ce082fe170a92d0346e574a8c898","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.1.0.tgz","fileCount":58,"integrity":"sha512-DQzDqZQFwunUR3iVp4Mxc9WVCGH/27JioQ1sCX4QHymDbKdGyKiZo8HPUZ0hdEwZIVO2ATpQw00OqUNX36NDyA==","signatures":[{"sig":"MEQCIFAqUUw74inbap4x5S/QyNb1PM2P+1pGDqbVkebGhQhCAiB2R1EafWymJZ7vtvs5thzGoZ/iAEZzm02/Wt3sjwXL7g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251089,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjEmIKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqtYQ//TtiNfKEZjWXRB42KIhy89QTN3AkwWaaE0wBWuHu2y93PmrOM\r\ndzR/qvjALOQcaDsuFSea9k4D2s3XnQBYi1Pr/JAF+UK8potRDAJcvLZZYABm\r\nvwMcmbnnwhz4yNYy2Wh0vIp3D061YgAckUmaUGyfqZmhobqZnNGsEiWyTQRK\r\nox7ctgZVOXZ3VC3l40J2xQpAnxJ2kYJLlg/MGwSVU9f1250MNDuDUXlF0uos\r\nWgVZJSjYWTbFxY92J6C9OjCqS3YcLw5iIN3Fs7i5bXBqQiNJ2y39VCw/YkZP\r\nowNEd1pfEspfBoa+ifQRIHz4QdQQ+toVI11VIAcQy/xyGn5RVjDZigVEl/hH\r\nL8MpeCGwkKMPJXas5gDmLOTIUYqoOdig6CzofxlifubanKJhM7PpxvsTV/dH\r\nwxyOqxt5fmxBXUG5gZx1Fw5TUeEqVKVP39yXSZQvIhBN9qQ08kceoqDkfAVj\r\nLftbRsqMVuRrA049wapshjXQR2W1Y9kSLD1wnr71QlMOmGPd68fnRifZOMX3\r\nNy+0ex7XhCAmS/zo5wSMxf510yZYGSXBEbKB8qE13aWlODXPpdw4pLQqXyC7\r\n4EoM6JH/SU1DRAmiOJeogzYcP+EXDfoefINPVIWQpv7dSVs9NcTxdHoPBQCm\r\nUQ22w2VRcLWT6zOAIk7yohiyZ/+oTPSE6PI=\r\n=PlcI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.1.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^2.0.0-internal.1.1.0","@fluidframework/map":"^2.0.0-internal.1.1.0","@fluidframework/cell":"^2.0.0-internal.1.1.0","@fluidframework/matrix":"^2.0.0-internal.1.1.0","@fluidframework/counter":"^2.0.0-internal.1.1.0","@fluidframework/aqueduct":"^2.0.0-internal.1.1.0","@fluidframework/sequence":"^2.0.0-internal.1.1.0","@fluidframework/test-utils":"^2.0.0-internal.1.1.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":"^2.0.0-internal.1.1.0","@fluidframework/test-drivers":"^2.0.0-internal.1.1.0","@fluidframework/core-interfaces":"^2.0.0-internal.1.1.0","@fluidframework/container-loader":"^2.0.0-internal.1.1.0","@fluidframework/mocha-test-setup":"^2.0.0-internal.1.1.0","@fluidframework/container-runtime":"^2.0.0-internal.1.1.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^2.0.0-internal.1.1.0","@fluidframework/ordered-collection":"^2.0.0-internal.1.1.0","@fluidframework/register-collection":"^2.0.0-internal.1.1.0","@fluidframework/runtime-definitions":"^2.0.0-internal.1.1.0","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":"^2.0.0-internal.1.1.0","@fluidframework/datastore-definitions":"^2.0.0-internal.1.1.0","@fluidframework/test-driver-definitions":"^2.0.0-internal.1.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"backCompat":false,"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.3.1000","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.1.0_1662149130364_0.08010543403654458","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.1.1":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.1.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.1.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"6848938c3503dd5602f878291b2f12ea85ebf1b8","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.1.1.tgz","fileCount":58,"integrity":"sha512-ToO2LYEgC4GfLRo+OarhIV3I/EkOkj6Cfpw1pXb5MYVD26IXhpxlTzwMWv+U68S5a2nI9IqBhLVFoOOXnr9qCw==","signatures":[{"sig":"MEUCIQDz5lX68qO8Xg4+RRk83BOWgNDwC1JozSo1xzR49qNcPwIgOpcePmZxv6sfOkJPbIsJdBHS5LD2Ql20F3HH1jsySkk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251089,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjG7LbACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmobjw/9H6wU3WHLNZFx7sgYoHKvuY43nXbIMmuYp9ceGgDt1BFpaXR9\r\nCEkAD5zF7P1RKqJerZiRUHt991Uy+rOaievPfd5XakhdhUqIcktQpE0Kpz6T\r\nUbNsIneYSiBVhsXnXoXjG8zP6gJAi5p6wFtdlQNVPvBaCqw/w8hLvAWc/Yjx\r\nuomk2ue52e3OU1hnGbXOpmao4AWU8o+UoWfYc2Lppe8ghSa02uUS+kld8+jb\r\ngpBadv4ZMXvofyfDzCxvUz5AdDmlSOi6PE4tibqJS6OjNa/CUYZJJy1lA2MW\r\nzQCSbH7rOORWingcXs4XOtqlO5jxIqTTHpzn+2q4Fvj8v29vvD4yuq3dylgR\r\nwfAijpGRs+mMF/wM2HI7K9nnPfSSyqJy4FFALNVmtPpdjRGuNytvgqxYEYd/\r\nwM2yFyggql68m3vJcbW7e1WtOK6/HDBBOG04N7FdM7d4TH+4B30yY4myE1nQ\r\nkQKPimW4q/a/5sIJSdKp6pJbffTx2Vx8hgqQcnkDjVCfVe2Udzi0wgDqBGQJ\r\nHRlE7cQgVQIOVM5wEELSereH8sB8SuD1hMom0yBxFgcjy6kpY6kh0uWrVMs0\r\nDDZBgOULP+c3LxLl2jSiIrSkRq3pYmaC3UClfvDRl7yTjGKJTXXzuMh1Sl5f\r\njxmkuxj10nEBLs4LhEMVmHGkaM4fC9VeK1s=\r\n=srSn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.1.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^2.0.0-internal.1.1.1","@fluidframework/map":"^2.0.0-internal.1.1.1","@fluidframework/cell":"^2.0.0-internal.1.1.1","@fluidframework/matrix":"^2.0.0-internal.1.1.1","@fluidframework/counter":"^2.0.0-internal.1.1.1","@fluidframework/aqueduct":"^2.0.0-internal.1.1.1","@fluidframework/sequence":"^2.0.0-internal.1.1.1","@fluidframework/test-utils":"^2.0.0-internal.1.1.1","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":"^2.0.0-internal.1.1.1","@fluidframework/test-drivers":"^2.0.0-internal.1.1.1","@fluidframework/core-interfaces":"^2.0.0-internal.1.1.1","@fluidframework/container-loader":"^2.0.0-internal.1.1.1","@fluidframework/mocha-test-setup":"^2.0.0-internal.1.1.1","@fluidframework/container-runtime":"^2.0.0-internal.1.1.1","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^2.0.0-internal.1.1.1","@fluidframework/ordered-collection":"^2.0.0-internal.1.1.1","@fluidframework/register-collection":"^2.0.0-internal.1.1.1","@fluidframework/runtime-definitions":"^2.0.0-internal.1.1.1","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":"^2.0.0-internal.1.1.1","@fluidframework/datastore-definitions":"^2.0.0-internal.1.1.1","@fluidframework/test-driver-definitions":"^2.0.0-internal.1.1.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"backCompat":false,"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.3.1000","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.1.1_1662759642927_0.767021552199334","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.2.0.93071":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.2.0.93071","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.2.0.93071","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"9eb69beb878ef2cb6bfb11b47a25619738adf2e6","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.2.0.93071.tgz","fileCount":58,"integrity":"sha512-Q3uSxyWzoVTrcFr/mY6MjXSQ8e0vWDKDyXnr24moywCytwZk2LDjJiXBQpioG/Da1KtLu18i1JBFYZsukC4rjg==","signatures":[{"sig":"MEQCIFJz+I4N0xLBNX09JLLXOOb6ZOzHdOp8RnbqQK5BjS31AiAW560th+3w8rfDJ8+SMhsuxRWoD2cC6BYU3SX0qDZ3zQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":252005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjIj6jACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq/Qw/9F7EukLppjoXu+8gd9X1e9g1szNvLL7FjYvheJOHU7BXsRXo5\r\nZGDipsXZPaYNhpzTSvmfmBKXcPm9NuZbyDgPnvECHz6+91Hzo2imUDSisimz\r\nFtwpmC8xs4hNv7La8de/3z5w2EMbo1D0KMHkfkSJZ4Vvnoe1P9tE/FJ3F+0F\r\njYPbJbtMBVXmVWATZXSTFexjNaT0kM7h6y0Jq5g5mGkJ+kH6pkDz+1Uhticb\r\n7XthWqwnDy85ZhedDwEMYuYWP7BOBFbsRC1PFHl0E0AsH8Ke5wM7glf1P1WS\r\nKnW5EAw7NjmBFUE73xmO01ud3/R2e+9Kx+ZWnQtBgv+qr1NKk3nkZXuteqsR\r\nvIUKZ5qU4nnh37vYg4GSbg4bn4+gWnJnZkLQP9HbgrNg5p3+w1ouluIlNbUq\r\n/aPTSNknHvwOdtCzhcnkxmH9IXzpHtWV8iMD9nEsHo+o+MTy77AfjbI6AS9T\r\nOFXWs7M1ZM6zduQWVJIV35gD02HaRln39rk5UA4Yz2fXmPDPxXz8eo7xXUT2\r\nAvNfQ0jf5pS4C1WUqeYU6QS6PYupLG8wZv6sZDqI1T7d5OoiEbAx6vYYpVnO\r\nlP4AKhuokXG/T+FqlyPDhut2gAsk3ICXXjrwRRXTs8ld4DfnPBctvhVlpDKu\r\neytgwsfRpiHuB/UOYV4dtVjjEH1DiIcpTzg=\r\n=wgBA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.2.0.93071.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"2.0.0-internal.1.2.0.93071","@fluidframework/map":"2.0.0-internal.1.2.0.93071","@fluidframework/cell":"2.0.0-internal.1.2.0.93071","@fluidframework/matrix":"2.0.0-internal.1.2.0.93071","@fluidframework/counter":"2.0.0-internal.1.2.0.93071","@fluidframework/aqueduct":"2.0.0-internal.1.2.0.93071","@fluidframework/sequence":"2.0.0-internal.1.2.0.93071","@fluidframework/test-utils":"2.0.0-internal.1.2.0.93071","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":"2.0.0-internal.1.2.0.93071","@fluidframework/test-drivers":"2.0.0-internal.1.2.0.93071","@fluidframework/core-interfaces":"2.0.0-internal.1.2.0.93071","@fluidframework/container-loader":"2.0.0-internal.1.2.0.93071","@fluidframework/mocha-test-setup":"2.0.0-internal.1.2.0.93071","@fluidframework/container-runtime":"2.0.0-internal.1.2.0.93071","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"2.0.0-internal.1.2.0.93071","@fluidframework/ordered-collection":"2.0.0-internal.1.2.0.93071","@fluidframework/register-collection":"2.0.0-internal.1.2.0.93071","@fluidframework/runtime-definitions":"2.0.0-internal.1.2.0.93071","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":"2.0.0-internal.1.2.0.93071","@fluidframework/datastore-definitions":"2.0.0-internal.1.2.0.93071","@fluidframework/test-driver-definitions":"2.0.0-internal.1.2.0.93071"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"backCompat":false,"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.4000","@fluidframework/build-common":"^1.0.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.2.0.93071_1663188643397_0.4656571583816522","host":"s3://npm-registry-packages"}},"1.2.6-93452":{"name":"@fluidframework/test-version-utils","version":"1.2.6-93452","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.2.6-93452","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"4d02b90d34628ad54354dcf60b1a1840629008e1","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.2.6-93452.tgz","fileCount":53,"integrity":"sha512-dtOxIcXBJ0ndlAh63MMPDiPnGCSpf0W9RSWYgJ+39wRLVdaT5zzwWzxuEoLYsLvaQOnjKPok92KfR9zNOO6kJw==","signatures":[{"sig":"MEUCIQDhzkM49bEruUB3C/33sOHlrvcSKL+pHDj+F+53Ek7gSAIgVQnHmKSYwXIf0CW6l/qzZuvbzFDzI3Pw4nTmtMARV4g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjI5EvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpTyRAAi+BIm8q8MUTbhHXdLpvpQNSjrduqn//jsmFj+7tytZUFzCVl\r\ngM/VoSIat9HFDXtN2t2mVmsM8BH82NmwnefZ3sgSuh9RY2u7Dx8lW7CN7CdR\r\nbydwDsG8NcktkHwwS6k/o0K5Ub+HxMAuhyaGSGv3WqgH5oVtCgcXMzacAjiV\r\nTU/anDkpyLzRLx7FJ0g3mNNbBl19ya0okXTasykI8X4ZNLO5hr6OwuGXD6Gr\r\n6U68HJGL94x37rj0sSlSmMn+8KWNvj77pArMnou5XjfdXlyg3ELwGWsUSAsz\r\nFFV/DvygiPzDV8I9HTKw4i7s8OHm4YygOWTotOs6Vb9/4hZMn19o/APbvVeQ\r\nU311zBsM+WG+4oB5w+Nuji75CjAgI9oq7e3cYl+zA5SyMkFLHaFQIVyPyAsQ\r\nFoq264WxjpBhEuDShtuK79uQ7mCY9AtuMrkCuExBlzl/bMkqgX9FXTnZmmcn\r\nOmqFYGz0hX9rP9YKHdo3zUYfUvL5vPg4ap1Rh3UKVBI+G1btvH7oadaHDam0\r\nAAjuK5KbpsuPwqw8J9uJgSz77PizSFx79kbQwXQJlLg+zQz4tcIRcbjKJuSu\r\n9CCsuKSN+ikxGSUBdbzEx6ABt5kRo6/odxove4KZ4AuWSxKgxvPz1HGbJ3j9\r\nfo3s9aoI8yphH90kFSrLSHnYxNpZoCYEbcQ=\r\n=k+ET\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.2.6-93452.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"1.2.6-93452","@fluidframework/map":"1.2.6-93452","@fluidframework/cell":"1.2.6-93452","@fluidframework/matrix":"1.2.6-93452","@fluidframework/counter":"1.2.6-93452","@fluidframework/aqueduct":"1.2.6-93452","@fluidframework/sequence":"1.2.6-93452","@fluidframework/test-utils":"1.2.6-93452","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"1.2.6-93452","@fluidframework/test-drivers":"1.2.6-93452","@fluidframework/core-interfaces":"1.2.6-93452","@fluidframework/container-loader":"1.2.6-93452","@fluidframework/mocha-test-setup":"1.2.6-93452","@fluidframework/container-runtime":"1.2.6-93452","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"1.2.6-93452","@fluidframework/ordered-collection":"1.2.6-93452","@fluidframework/register-collection":"1.2.6-93452","@fluidframework/runtime-definitions":"1.2.6-93452","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"1.2.6-93452","@fluidframework/datastore-definitions":"1.2.6-93452","@fluidframework/test-driver-definitions":"1.2.6-93452"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.2.2"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.2.6-93452_1663275310986_0.18615703742794443","host":"s3://npm-registry-packages"}},"0.59.2004":{"name":"@fluidframework/test-version-utils","version":"0.59.2004","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.2004","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"6d7957260995b590fe83b3d90751ab36d1f6cc14","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.2004.tgz","fileCount":53,"integrity":"sha512-xdvbAhTaAbFe7NN6e6Y8flXzoDtOnPIPKDBCQxK7Rl5UIQE3TH0nWPQFwHRFxNlfZSvH58im2nsHcF0SvlvQoQ==","signatures":[{"sig":"MEQCIDlAjAwpUG1N4r6D71T3kKxQ1hEpXnM2WSR4PJwmRXCCAiAHdRAIZbObijkKu3mnRxyC+HSV2XNQmpi2/DimVTw3RA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":192271,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjI6YrACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq37g//TeW/4SiLKcmjgFmRlFqDYD+LqUm4XOkZYzpRLfkDTE+Ekh58\r\nwEIOOAiomV5HGDKS6U3m2JaPL04Y3cAuQskR6oiaIniWsFGM1V7xUc5nqFF6\r\nliutUa4jR7Gd1BYCedUIbJwI6vIS/MjpJrB5hbA3OI2E1W8UEU2RhdpkuZiS\r\nnmoV3A4ZRqZu2vieFHxVtu/KeXBAvphd8rLyXHKJM4KRd6L3qq3rkoqOc1ok\r\n+JdPSfacmmNMxE7auXbexMa4B3La134Hc0ijxOzZnVeib3nHA3/thb5y968C\r\nj5BCOcA6K26VSz1W6wvNB/pEig/YqZ+RrrTSs20WpEY+CEIGYfuWxoJZzwGJ\r\nXETL5pxYfQBXxxC7HQWXzLzDQp+Nu7E2eg0iBhonrVJWtmgCQv+BaQQkcwki\r\nLg9fntWmEwORJzd9yj9Gb7a4Kc5nbdRd1JvVu1PNc8vHEoml9dDf7N0Y3WNA\r\n+TxS+ynaUkkt5kJnTjB4JzIa1UZ5AjTPWUb+j9qfV7p9aJZntWi6B/r6ylCJ\r\nMK7EQWwiAlzgnOPX3bEUD/T1JiX3h8svofkMip/jm82CpQW2v+sLvKA1w3Ub\r\nIbWblatyvzL0fhbxsRUL/cbXBVVWd6yoGXQ7ZO4jkhQI5iCMP2iOf9GBNvMP\r\nLn0qlRbuHaC74Hsz+aUkSNNiRzrMnn5uvQs=\r\n=sU3n\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.2004.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.59.2004","@fluidframework/map":"^0.59.2004","@fluidframework/cell":"^0.59.2004","@fluidframework/matrix":"^0.59.2004","@fluidframework/counter":"^0.59.2004","@fluidframework/aqueduct":"^0.59.2004","@fluidframework/sequence":"^0.59.2004","@fluidframework/test-utils":"^0.59.2004","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.59.2004","@fluidframework/test-drivers":"^0.59.2004","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"^0.59.2004","@fluidframework/mocha-test-setup":"^0.59.2004","@fluidframework/container-runtime":"^0.59.2004","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.1000","@fluidframework/ordered-collection":"^0.59.2004","@fluidframework/register-collection":"^0.59.2004","@fluidframework/runtime-definitions":"^0.59.2004","@fluidframework/protocol-definitions":"^0.1028.1000","@fluidframework/container-definitions":"^0.48.1000","@fluidframework/datastore-definitions":"^0.59.2004","@fluidframework/test-driver-definitions":"^0.59.2004"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"0.59.2000"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^8.4.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^4.46.0","cross-env":"^7.0.2","ts-loader":"^6.1.2","typescript":"~4.1.3","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^8.2.2","concurrently":"^6.2.0","eslint-plugin-jest":"~26.1.3","eslint-plugin-mocha":"~10.0.3","eslint-plugin-react":"~7.28.0","eslint-plugin-tsdoc":"~0.2.14","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-promise":"~6.0.0","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-common":"^0.23.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.1000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@0.59.1000"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.2004_1663280683640_0.08242179927871063","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.1.2":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.1.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.1.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"eb9f277c082f56692b0e7bd629c352aaa0f133a7","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.1.2.tgz","fileCount":58,"integrity":"sha512-pnlfYv6y1ueBcJb98EoXRI0YHxhwTEsHuTL9eMnfpWzwIqqdz5+iJnjte+bema45H2Gnkl0Cy+0DKBOK/xKlYQ==","signatures":[{"sig":"MEQCIHVquTwqwcO2nQs9CNiRe4NAyvuwUMuj4t307U75rhYDAiAc2+17RpxMCwAlTQWm2Cm6dXmgn4iXAPWrkA4xrIURyw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251089,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjI8BAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo9vA//bDfQN+tnhFmCn+wUyiobALPiYE5YM1rZO+Onpb/GekvBRz6m\r\nZe7oD5RQblnhbMyA+ryKwspNE9mtsFx8ruTJCZffH77p4rZsy+fQkFFWOBJb\r\nGFCXmhJh2dpDfrb+lgJH6dmodPYw628C0d5s8XGrTeVaIxtfJeJX5HPHvgqs\r\ngRNbmaOmMz5Nuw6FqgGW/OdO0p87Zc5ASIQCv7bR73MXdpJfc/Nz9Wxu6gUi\r\n/IbDXguHSvFaM19+Oxc+BmXXcEENbMdTBSbHXsrK7CaTCxDw/TtI9JJshZcz\r\nudWyBAYhUpGtlzk2PMC9ydinhFDarN5Et3qn7OuOSNrjI77a2R/J1kJBvb6I\r\nz1+gf0uvf29ARPDkPfzYNN15nmdmX6uA7LHKJe4ZJj2AXLrnmY3JXI9dqmxU\r\nTeuQjF1jzW0l5wNot5v6Su74TZdsXBZMmXSbC8XwB5KbtoE3SrqPJZoG3J3Q\r\nDYBdPsrDRwGNuodWt9wxm3vf6kEdLjMUBdxNzNo0qzx8PqFJKVnTJmT3jeR2\r\ncjBqwSbGwLhGKsPIVgKXwxnhCArGPoN66xCLUn65rTJJjgfbrXgDNViT2Lkw\r\nTmOAEBbNjpBh6Rt4ydEcdrx/GDjcHcciCuUkGubYdHYU9RQQANA+lmLxKYik\r\nLYW3Er7UYps8oaJ35Uf3+2Pi8GS5xVeTz+Y=\r\n=Huyd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.1.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^2.0.0-internal.1.1.2","@fluidframework/map":"^2.0.0-internal.1.1.2","@fluidframework/cell":"^2.0.0-internal.1.1.2","@fluidframework/matrix":"^2.0.0-internal.1.1.2","@fluidframework/counter":"^2.0.0-internal.1.1.2","@fluidframework/aqueduct":"^2.0.0-internal.1.1.2","@fluidframework/sequence":"^2.0.0-internal.1.1.2","@fluidframework/test-utils":"^2.0.0-internal.1.1.2","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":"^2.0.0-internal.1.1.2","@fluidframework/test-drivers":"^2.0.0-internal.1.1.2","@fluidframework/core-interfaces":"^2.0.0-internal.1.1.2","@fluidframework/container-loader":"^2.0.0-internal.1.1.2","@fluidframework/mocha-test-setup":"^2.0.0-internal.1.1.2","@fluidframework/container-runtime":"^2.0.0-internal.1.1.2","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^2.0.0-internal.1.1.2","@fluidframework/ordered-collection":"^2.0.0-internal.1.1.2","@fluidframework/register-collection":"^2.0.0-internal.1.1.2","@fluidframework/runtime-definitions":"^2.0.0-internal.1.1.2","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":"^2.0.0-internal.1.1.2","@fluidframework/datastore-definitions":"^2.0.0-internal.1.1.2","@fluidframework/test-driver-definitions":"^2.0.0-internal.1.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"backCompat":false,"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.3.1000","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.1.2_1663287360557_0.07082996074914472","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.0.1":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.0.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.0.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"b0294f168ac15c8c79662e2304786078bd82fdc4","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.0.1.tgz","fileCount":58,"integrity":"sha512-lK0zChiH4HPwAGMXLNNwqWGOy3YVC79WTRD4nHRnJCR50FcCOvFmAX47to707ri1wWjX9BLzVhMeuQ6uGn5KPQ==","signatures":[{"sig":"MEQCIG1J5RyjMUG/00GRQx9bHX8MBevmYlHVhF7FjpmSdAjmAiB4wapKa9lT24wohujIf6AczMk/vV488PwcM8PqRiXORg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251089,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjLPHjACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoyJhAAl52XNwG+oH1Sl2uKD3iA7QBrEc0pCjkLZ15nexzBW9MZWPca\r\nSaN6TILce5pmU7L13rAjkFIK3ENdxWxD1tCIN0s2cW+a6Lnppyi8dG5M7dmi\r\nzgMpIgvYKFMRQ3XIBsEtwc9L7nEQsdMpjdX7QqjYwAE0XTT0x9cy6BQrXMva\r\nEaEs9989E75MggLc9275Sig2rGZ86EovJB0TtmFjRiPyfSSppl2wrlsXXDEZ\r\nMwW4/bguzVjJaMgZr7WfhD505UJWTTpIjoXddi5mdwA2ylhBuRtn6fDcK+WT\r\n45VwFOcBXCAR42taRO1jCpgi6nstk6PffSGPeaKkarDgcU9H7EMUGpu/rgxh\r\nVqx3j59N6AU/AbxjL4gnqS2ApCoK0zUv3FXBrQN/xKZp3aTFUBquz6PoQ3GJ\r\nhMTaAInU8dosMw80KUdASecsWZapbgTyK9pwuTn2v6TszgBTdyICFyCIiCYa\r\n1q83xcdjIp0rNE/c0Q3r1oEah0ngE0x6n/0GMY/rb6MOWvjuCkggL08grLA7\r\nzfJPSt2VpsN3cGPJ05rpt3jUgQufW00VRQvuyV5LFvs773PoSwMWWg6jq0Hs\r\neZcet2l3GhCEcBJAVmZySJ4TD+BENAZvXZBTz+6fAuw8ZlQ3zJ54ozivQ2pK\r\nzgkA3RcC3hBAFelC43u7rU+4PlvvJoIaKyY=\r\n=ZY5V\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.0.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^2.0.0-internal.1.0.1","@fluidframework/map":"^2.0.0-internal.1.0.1","@fluidframework/cell":"^2.0.0-internal.1.0.1","@fluidframework/matrix":"^2.0.0-internal.1.0.1","@fluidframework/counter":"^2.0.0-internal.1.0.1","@fluidframework/aqueduct":"^2.0.0-internal.1.0.1","@fluidframework/sequence":"^2.0.0-internal.1.0.1","@fluidframework/test-utils":"^2.0.0-internal.1.0.1","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":"^2.0.0-internal.1.0.1","@fluidframework/test-drivers":"^2.0.0-internal.1.0.1","@fluidframework/core-interfaces":"^2.0.0-internal.1.0.1","@fluidframework/container-loader":"^2.0.0-internal.1.0.1","@fluidframework/mocha-test-setup":"^2.0.0-internal.1.0.1","@fluidframework/container-runtime":"^2.0.0-internal.1.0.1","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^2.0.0-internal.1.0.1","@fluidframework/ordered-collection":"^2.0.0-internal.1.0.1","@fluidframework/register-collection":"^2.0.0-internal.1.0.1","@fluidframework/runtime-definitions":"^2.0.0-internal.1.0.1","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":"^2.0.0-internal.1.0.1","@fluidframework/datastore-definitions":"^2.0.0-internal.1.0.1","@fluidframework/test-driver-definitions":"^2.0.0-internal.1.0.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"backCompat":false,"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.3.1000","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.0.1_1663889891647_0.7342559925476841","host":"s3://npm-registry-packages"}},"1.2.6":{"name":"@fluidframework/test-version-utils","version":"1.2.6","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.2.6","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"9dd31fad52cd6d2d8b83a1f9859afb97e2d017a6","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.2.6.tgz","fileCount":53,"integrity":"sha512-NpTZEIL65n96iAIbGlvSFV1AfOSejnCicXcdll5kT5OPL+ULPFyzdCv9ydTY0thLnwupGKPNTCBpFXcy2SEeAg==","signatures":[{"sig":"MEQCICoMu+VDFL7XFHoIfJzsCR2dbrq6UozSBNhdx/FzlzYqAiAVRGz6AaJRxRvp6qdnP+YiPK6qNfAJCJ642HvmgnWuSQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjLfTXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo2EQ/+Jh+NyyvbF9cR/XVMJamtG0XV+iba5yvD3EYDMdPdCOxNGZbW\r\nb1NKH9ecIRNINQ3TwKruaIL366Rb1EE3ITX9HT3VUbBbb419lLW/8z9vPsF7\r\nSmgNLcl5RkNRLEG1+kv+xMXNMOWnxGk6K5O0svfGSMJGFjD7vL9enhWTU/KD\r\nD6BqP5U9kGcfP6ALHGOmDVWVHTRG+CE5oIj6V1zWFeV6s4ij6plNeCL6R5Aj\r\nCNJ1wcTTDEOZtr9s51654hlRPr2yQAvCYANjaOnv2bX0+FtkGzDS+i/3Xta9\r\nMeWfIcPbwfSEnJybgcBJnlkBrt4RL6BCgT1zw+QyTf44ATS4Jeiseh+G6Plg\r\nRyZ7+9UQn0v2yFDYcDyjUUfvzB62ywHE8skkjXTya5eQlebTYZcNJ6CtQGX7\r\nXmwsVnMJlfJfPTR6YkDuoKhnfqOazjnjLeC4oI4Xv2kR4C49Aj9eaYWNPU06\r\nnzJ/DF8QtBKUvmmkcaoIx8k27Q/ZdKrNLEoU9JYcq3QRNAL0H7EaN4NCRQTl\r\nW3TAkQWf18t8Xge1Yvmhy9aUYr686PJMGOlf2vXKhWaCI8zw+bSD5VG1SVqq\r\ns4tQYWymTkBwXiMkbczHQhu4/md3RRNxDAtbCdVEvK+kNoIulw+uH5sqEoFl\r\nCqAnYM03XT+EgquypQDFRf92WcSxQQf1p1k=\r\n=8E62\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.2.6.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.2.6","@fluidframework/map":"^1.2.6","@fluidframework/cell":"^1.2.6","@fluidframework/matrix":"^1.2.6","@fluidframework/counter":"^1.2.6","@fluidframework/aqueduct":"^1.2.6","@fluidframework/sequence":"^1.2.6","@fluidframework/test-utils":"^1.2.6","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^1.2.6","@fluidframework/test-drivers":"^1.2.6","@fluidframework/core-interfaces":"^1.2.6","@fluidframework/container-loader":"^1.2.6","@fluidframework/mocha-test-setup":"^1.2.6","@fluidframework/container-runtime":"^1.2.6","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.2.6","@fluidframework/ordered-collection":"^1.2.6","@fluidframework/register-collection":"^1.2.6","@fluidframework/runtime-definitions":"^1.2.6","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.2.6","@fluidframework/datastore-definitions":"^1.2.6","@fluidframework/test-driver-definitions":"^1.2.6"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"1.2.2"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.2.6_1663956182851_0.9003115070418755","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.1.3":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.1.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.1.3","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"454c0cfe1675bd53bd2065aab347380cc0e89f39","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.1.3.tgz","fileCount":58,"integrity":"sha512-+D7fm6RCba7wHq1ywfb+XJPp6CI6NQsyNwS/QmZf3hmjX9S854Cr1XZ5L0uG31b17SDmUOb/2Xli57Q28AfnPQ==","signatures":[{"sig":"MEQCIBUE25o8q8GqNW+EHxZ88HFbxLXTp0hDo6gu7Jan5YXcAiAtdSONOjV4/V778piOsVDtlbgAlDPhxQ+/1XXncfROHg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":250869,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjLiqfACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoMthAAjpHPx9y913mPFumsjKSaT18m4qMY7uAA4JGvEdFU50+a+jUP\r\nsmtmJjvYOnWheN9Muetrt4ROYTXUPedQrdGy7HEjZQW9zHn5PFEjBlPpv0dz\r\nx+UVl3HJGwnFeUxoKUN8pM/tfBNBQaK3ViguAfibegfX9HaLhZZRVr5a0ujz\r\nnYgY+BHDP2rR7MGOugE6yO02Mv7Q+Y8KBNh+NFNUJ6P76bAHL8Jps5IJcFqS\r\nekNW6GzwlBpEJa2vSy42OVjPoR67NUGkcq15xCqGPbTofYb5HbtEKNR1Z0Hj\r\nJVJYpM7lculHNLP3QJxlfFHvj3tB3ZwsjzOm6jHQ7J6KVakifDdfNoyryqow\r\nWro0lNrjoC0e7HF75/oBfc3dUvjUn948QPxYgdBaZCkY1ZxW9pcJcweLqxSe\r\n7YStwHHtGUfwkCU5CSU4NrRK+GKCHel/4lagDbAIorNrtrcBKDKQfSMR/BjP\r\nK3KUvYXMDzSErcVlfHjIamv7t/yNF3MWQ2qi8tAV7Vap58mNxIKccqXaNh/D\r\nKKcHVB5w6FG//sRCKYej/PfP889FcI69TciGzdjdBjN8ZFW8oaVsjxSse5gf\r\nrfVKGNQ/Wo65BRGsfpG2f1pVeq+fqeGtqjxB0mvWzHSeECE6mk5z4SIbHQzu\r\nWghOvCVLj+UirYalBrjwoHY4PJwboAnqbiM=\r\n=FX3n\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.1.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^2.0.0-internal.1.1.3","@fluidframework/map":"^2.0.0-internal.1.1.3","@fluidframework/cell":"^2.0.0-internal.1.1.3","@fluidframework/matrix":"^2.0.0-internal.1.1.3","@fluidframework/counter":"^2.0.0-internal.1.1.3","@fluidframework/aqueduct":"^2.0.0-internal.1.1.3","@fluidframework/sequence":"^2.0.0-internal.1.1.3","@fluidframework/test-utils":"^2.0.0-internal.1.1.3","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":"^2.0.0-internal.1.1.3","@fluidframework/test-drivers":"^2.0.0-internal.1.1.3","@fluidframework/core-interfaces":"^2.0.0-internal.1.1.3","@fluidframework/container-loader":"^2.0.0-internal.1.1.3","@fluidframework/mocha-test-setup":"^2.0.0-internal.1.1.3","@fluidframework/container-runtime":"^2.0.0-internal.1.1.3","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^2.0.0-internal.1.1.3","@fluidframework/ordered-collection":"^2.0.0-internal.1.1.3","@fluidframework/register-collection":"^2.0.0-internal.1.1.3","@fluidframework/runtime-definitions":"^2.0.0-internal.1.1.3","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":"^2.0.0-internal.1.1.3","@fluidframework/datastore-definitions":"^2.0.0-internal.1.1.3","@fluidframework/test-driver-definitions":"^2.0.0-internal.1.1.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.3.1000","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.1.3_1663969951042_0.6464599637351265","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.2.0":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.2.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.2.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"b541626c2ef5b5a1130639e9078f7b77379c9078","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.2.0.tgz","fileCount":58,"integrity":"sha512-eupQGX4ufQFTTPpR7Kxd9uBL1ZCFJ4WMIYRCED+6DWslQo7k5Sbexitbkiyrm8xKPC+qvJjm2Y1UKg22oJZAxg==","signatures":[{"sig":"MEUCIQCTYuxL4KxY4AFZ3mv1zRHtglHR3mp+gvPliIH2IU4erQIgcEcC+DjjeRiqZoAcTk0SYCStTdNxvbkF5yihtztXzTw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMggDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpuAw/+Mi5Fptllx54Ww36V3AsHRQkg0NTK1uuWe+J6h5VpcKpJX8MQ\r\n+S3DYuxCYY6EZ1hME+FzdN15Ui2HCsB5bpgINynCpa4PxNqTG4srByAOhTmr\r\nRqgGLq8octwrC2kSLfGgPRqem1UOCLA2mKOfMQzk1Oh2SFLw5IGGDV1F+g2d\r\nmYrrf3tssQUrjlGmQky74XJh+kT6/PRnB3FQX9wsehhl2bGQ9rremJSAhyIB\r\nMiTSicirVw+z50htNoex3T7bd1262za1jkPI406JQNGIU6oiXc/3XQXkEm07\r\nowkAhORBbXHfQtZoKBWZWrftZwBFRjeduEC2tkX8CIBjFpL4uJWPm6gsqg3V\r\n2Z0jxVE1TAt+loJ0oozQtt+SDQ0wy3o2Pg6PComFY+Jcb2nmRgpjw2LsKBFf\r\nXKtPqkDoVJiO09K+uPXcUb2X9AEO1yaP63daLvh/YvzsMaR7OqJnXMMjVmn4\r\n55LajCGsqMlrykQoWRpH30j65uvgofoff1Mt3veibLjyc+vRWiitE+i0NpOV\r\nZJEe4LhFVhQSUInyp3WBsI6+D1ib0JUlmaIVBf+dK3X4UbmxINhnHNs4VHlH\r\nTqFhcU3AACa9n3ix4O8zFW9FD9sgMtuXWpaDoq3HsACtW9zttF3Js4M9Pp54\r\n3GKVA+PA4rfbdlm1vPjlpOHLzEjuYDucpes=\r\n=ovBk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.2.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^2.0.0-internal.1.2.0","@fluidframework/map":"^2.0.0-internal.1.2.0","@fluidframework/cell":"^2.0.0-internal.1.2.0","@fluidframework/matrix":"^2.0.0-internal.1.2.0","@fluidframework/counter":"^2.0.0-internal.1.2.0","@fluidframework/aqueduct":"^2.0.0-internal.1.2.0","@fluidframework/sequence":"^2.0.0-internal.1.2.0","@fluidframework/test-utils":"^2.0.0-internal.1.2.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":"^2.0.0-internal.1.2.0","@fluidframework/test-drivers":"^2.0.0-internal.1.2.0","@fluidframework/core-interfaces":"^2.0.0-internal.1.2.0","@fluidframework/container-loader":"^2.0.0-internal.1.2.0","@fluidframework/mocha-test-setup":"^2.0.0-internal.1.2.0","@fluidframework/container-runtime":"^2.0.0-internal.1.2.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^2.0.0-internal.1.2.0","@fluidframework/ordered-collection":"^2.0.0-internal.1.2.0","@fluidframework/register-collection":"^2.0.0-internal.1.2.0","@fluidframework/runtime-definitions":"^2.0.0-internal.1.2.0","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":"^2.0.0-internal.1.2.0","@fluidframework/datastore-definitions":"^2.0.0-internal.1.2.0","@fluidframework/test-driver-definitions":"^2.0.0-internal.1.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.4000","@fluidframework/build-common":"^1.0.0","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.2.0_1664223235352_0.49634494111476024","host":"s3://npm-registry-packages"}},"1.2.7":{"name":"@fluidframework/test-version-utils","version":"1.2.7","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.2.7","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"e961ce32c8ea1b0b250b0a463131e250ada9a08a","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.2.7.tgz","fileCount":53,"integrity":"sha512-85/7wCeYc97B9bkgBO2cjMfCAlPG72pBAvrG5TvRM2GWf4ODYDtilfn66O3x9UlRct93HUgS1lSjTfSAjsv7wg==","signatures":[{"sig":"MEUCIFNV3Q/VylEeMjL9Ieik4k3xwIEIDAnnJwLpB6K9DN7CAiEA7Fyp3xf6Xrv413y9M9PG6f01rJaTfObLMmXtZqhx9EE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjM4oKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoDYg//WMm474a91mXQPc0QI6CR/CvEdcuY3VAv5nVmkMPv6lFteWQU\r\nz3bLrBkjuyC7jNvH8U1jquSeO6s20W9XFRzjXXfElxoTGiM86hFCr4+wQtaN\r\nc77dEI20oQRO8WPZTKe0k3zEt111jrjY1eYb/x/oGLs5cwmCKTkpT6abzQkI\r\n3ARFflImTi3D+wVQ2z/oXJTdzXQYc1VwBfrOeJaenpf8GJ02EpKXqh+Eh3cr\r\nGfJIgbRR58/LVltmGRbyH1s87GaMiHwL+Q3eQZghtfrl0wCs/SNBMzUIweMY\r\npzMjV0WntBPSCmtQlA4j4O4fEKZY02cldQC9VQvlV8HuWENtV1gSH2ytw/hQ\r\n2l7MuRwDkAJR9jEfR4wk5HX2xx/sZERKWJemVEIPrrn0Pk3L32b/STYkTCA+\r\nXaPL0ek/MY34/G9sG096Y0EAg9Y24ekGpZqkrSopw9cJEomTaFFw7EPN9Hau\r\n/Fr7mytmF9fgrFayl7JiVuZCr4SoaQ6qR5M2nTdRH2zpKlrab4MJB1hypNdm\r\nB72LkWOZbeBY/HYbNoh9j/r4AjYRSYbDD9UAFHUHLCkPeK6zfRqEM8hy+zWX\r\ny30aQKFJhVVPn6nwCk5EbzFYkZU7gml0CG5dScxF7YFLu0kriUYqWyhhAE89\r\nvqmEKtqA1vgUGV47mQ5sqeLpyJbLA73CUVE=\r\n=KIqw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.2.7.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.2.7","@fluidframework/map":"^1.2.7","@fluidframework/cell":"^1.2.7","@fluidframework/matrix":"^1.2.7","@fluidframework/counter":"^1.2.7","@fluidframework/aqueduct":"^1.2.7","@fluidframework/sequence":"^1.2.7","@fluidframework/test-utils":"^1.2.7","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^1.2.7","@fluidframework/test-drivers":"^1.2.7","@fluidframework/core-interfaces":"^1.2.7","@fluidframework/container-loader":"^1.2.7","@fluidframework/mocha-test-setup":"^1.2.7","@fluidframework/container-runtime":"^1.2.7","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.2.7","@fluidframework/ordered-collection":"^1.2.7","@fluidframework/register-collection":"^1.2.7","@fluidframework/runtime-definitions":"^1.2.7","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.2.7","@fluidframework/datastore-definitions":"^1.2.7","@fluidframework/test-driver-definitions":"^1.2.7"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"1.2.2"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.2.7_1664322057815_0.8171101208909446","host":"s3://npm-registry-packages"}},"0.59.4003":{"name":"@fluidframework/test-version-utils","version":"0.59.4003","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@0.59.4003","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"cfedc7eeb0829da30aa39f2429690d1922ee704b","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-0.59.4003.tgz","fileCount":53,"integrity":"sha512-4R1miQCULnST9yx9fHLfGXMS0LjfAcl99Kc+EJAJCsgeijrqlhNHBOYZ2FryP7pOteQu+ZuPnb8kytbcRMuDCw==","signatures":[{"sig":"MEYCIQCGlSWIwZtftePTzZJ9Ce8gjSPZEMTjpTrNArAFAUuuugIhAPEIW5BDSDTykMbnYxnDY3uw5Ejxf3l/b63uq5OYmw2C","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194220,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjM5LUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrAUA/+OSnEma7spGHlq5V+k3YBDb60/hNoKdFIlUmH9E99igwjDnIy\r\nmgyaQs3kYGAa4EUmdMwunIOSU4trzaDnxByAGmWRLbnRvxgPnD6VDyCxsgXS\r\nSAytwYe2PmHWDJfBY+tyHUpZdB4HykxMsJ0oqYWGY6igxCCCk2eYzLH9Do1x\r\nK2WN/HJ3RuSrNu7k7QG51TuEdMT0epaW6oC/by720xRuP01oaFlaoxBI5+vN\r\n4FxCnXAB0Xlv4gPasBIouYchIXgMqhe6CzX+7VwMDwvA8fS86zYQ1qvGYcXG\r\n0q5eBt5UYsDRqz6IHEWyfqZKNFIKlQF9E68oVdrnRzMkuhixob6rUb5j1l8f\r\nOrui+XrO5vw8JaErjUZ+wu2w/j3iYF6UAVjbTJyrN5L+viiY26qkLh8kVXXH\r\nKl5BROPodTqpYk0Z3U46W7fRQ5wS1fPp+TrA0CBdMVwaK3fzzjRiJAwQDiAp\r\nGNxkyM5O38aDVCTZxUM3MInbHShk/wKPs8lj/JlsmfJcf3Wbh+Nfgn/fIFIA\r\nkGMFq5PEAvXgCdEhNzYZAyJ/BK99QN9zR/NB8YSZg6+EtTXdGxVAuCiYJZuQ\r\nXaHNFRg5PxiVgQ2+VgW/gKk01zH+K9L1nzcoUTaMts3017Yn5+bNdoOmS7cd\r\nSuX5YUy1b/pRahlOl7Zyck2KtPj9zsctDAQ=\r\n=uIIH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-0.59.4003.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^0.59.4003","@fluidframework/map":"^0.59.4003","@fluidframework/cell":"^0.59.4003","@fluidframework/matrix":"^0.59.4003","@fluidframework/counter":"^0.59.4003","@fluidframework/aqueduct":"^0.59.4003","@fluidframework/sequence":"^0.59.4003","@fluidframework/test-utils":"^0.59.4003","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^0.59.4003","@fluidframework/test-drivers":"^0.59.4003","@fluidframework/core-interfaces":"^0.43.1000","@fluidframework/container-loader":"^0.59.4003","@fluidframework/mocha-test-setup":"^0.59.4003","@fluidframework/container-runtime":"^0.59.4003","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^0.46.2000","@fluidframework/ordered-collection":"^0.59.4003","@fluidframework/register-collection":"^0.59.4003","@fluidframework/runtime-definitions":"^0.59.4003","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^0.48.2000","@fluidframework/datastore-definitions":"^0.59.4003","@fluidframework/test-driver-definitions":"^0.59.4003"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"0.59.4003"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","eslint-plugin-jest":"~26.1.3","eslint-plugin-jsdoc":"~39.3.0","eslint-plugin-mocha":"~10.0.3","eslint-plugin-react":"~7.28.0","eslint-plugin-tsdoc":"~0.2.14","eslint-plugin-import":"~2.25.4","typescript-formatter":"7.1.0","eslint-plugin-promise":"~6.0.0","eslint-plugin-unicorn":"~40.0.0","@rushstack/eslint-config":"^2.5.1","@typescript-eslint/parser":"~5.9.0","eslint-plugin-editorconfig":"~3.2.0","@fluidframework/build-tools":"^0.2.70857","@fluidframework/build-common":"^0.23.0","eslint-plugin-unused-imports":"~2.0.0","eslint-plugin-eslint-comments":"~3.2.0","@typescript-eslint/eslint-plugin":"~5.9.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@0.59.4002"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_0.59.4003_1664324308222_0.44958009137348265","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.1.4":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.1.4","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.1.4","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"83e7a1f46655367598f70f30a80b489ac6816954","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.1.4.tgz","fileCount":58,"integrity":"sha512-3f6ZHRMoqMnlCgLjLSqUvBkFD5C7dekf7XQMXmYbHR+Bf+kaC2/WqnMIGvkn4b5Bgt8nSXxS/xXClZK9zCpeDg==","signatures":[{"sig":"MEUCIQDKYTsbQNQs6p9AzBs7MTjrL6bAg6PhUzymwsb2D5dX+wIgCEa5WWsKXEKBUEJjE+B7i8u3Lftz77YJi9K8IYJ/HDA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":250869,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjM5U1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrd8w//RT4tiyPmS5Z4nKrSDFd/vUKs0S/QgKKJO3ILH6MhUGZb2EqN\r\nM+j+ThIQU343vfxPS4WBprqupzfu6qktt4u4vBkr0g10RoDRLB8gLhkg5Xcd\r\nzhqqxB7rk351x/Eu5NojwuEvmLr6ZZg1s9bPPdioN90U7bNKK6e4UMrEpNAZ\r\nTJyPzZ4k4pVd5ijojwfp4v3SksUmuOrxtrXKbZLzmx0rOds0JB0vh7pkyx6f\r\nYXrgKCSpQFt0zw4B7oMFt1yivQvCtDYfbO3o4nETir/eMMmncWMW0n9YrfrC\r\ndK+fshmrRLIcBJzWVnZ2hOA0KvbhiAYUi4lpPgL21McmrcYFRzKkBtu6Ub4p\r\nhxM6g+MjX2g30+vDIuyY8VQarYYoANeRa3SIIM5Qn/4sYlmJkKX9JAmes3to\r\nAY9tSEKztblGMYNLnASlqj6nIMJ+W+qHXIzxW0CMngT1FUVWRpiLat7Ca5TB\r\nXXaCw6BRQ8T6kKlWuBhWFvUPbqQWB5vTt5xyWrWtXsuEfa5rFZqGkN6a/uzD\r\n4YDTkYnwOL0wC+3rWxl4GmMKpJQhvAFMbbBHxqvzZ12nXwwCKIUqmCzYfEmx\r\n3XDHkhv1ykghaJ6CfPQ4yejmQsGpMZYIrzXeVjmVq2sZ12StC1PMFByr29KM\r\nduKEWil7u9osTgsRjIhJo5eygWqwkcY84i8=\r\n=Wiwh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.1.4.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^2.0.0-internal.1.1.4","@fluidframework/map":"^2.0.0-internal.1.1.4","@fluidframework/cell":"^2.0.0-internal.1.1.4","@fluidframework/matrix":"^2.0.0-internal.1.1.4","@fluidframework/counter":"^2.0.0-internal.1.1.4","@fluidframework/aqueduct":"^2.0.0-internal.1.1.4","@fluidframework/sequence":"^2.0.0-internal.1.1.4","@fluidframework/test-utils":"^2.0.0-internal.1.1.4","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":"^2.0.0-internal.1.1.4","@fluidframework/test-drivers":"^2.0.0-internal.1.1.4","@fluidframework/core-interfaces":"^2.0.0-internal.1.1.4","@fluidframework/container-loader":"^2.0.0-internal.1.1.4","@fluidframework/mocha-test-setup":"^2.0.0-internal.1.1.4","@fluidframework/container-runtime":"^2.0.0-internal.1.1.4","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^2.0.0-internal.1.1.4","@fluidframework/ordered-collection":"^2.0.0-internal.1.1.4","@fluidframework/register-collection":"^2.0.0-internal.1.1.4","@fluidframework/runtime-definitions":"^2.0.0-internal.1.1.4","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":"^2.0.0-internal.1.1.4","@fluidframework/datastore-definitions":"^2.0.0-internal.1.1.4","@fluidframework/test-driver-definitions":"^2.0.0-internal.1.1.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.3.1000","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.1.4_1664324917350_0.9677920639006581","host":"s3://npm-registry-packages"}},"2.0.0-dev.1.3.0.96595":{"name":"@fluidframework/test-version-utils","version":"2.0.0-dev.1.3.0.96595","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-dev.1.3.0.96595","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"d6551270a77a3f7a73b5de7a3f7565bdbd915681","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-dev.1.3.0.96595.tgz","fileCount":58,"integrity":"sha512-0JekL7rz5ePs7FMbP74w98uXOjokYWZAEpqAwTK9WCrBzlieQac2cbbfxrft2lmC+FZ8mcahCwqA5RIc22E8Jg==","signatures":[{"sig":"MEUCIQC6CGtdvVrKI5qbHjFYtUmpGZtn9VSkbd3fYgcl+LGuQgIgHoRyxZuzdrz6BXkuvx6cQkCZOkY6923XqHOtTI3E3/Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251377,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjN0v7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpmfw/9FVxbyJhCndLlW0ztOcf91IIIP7ClNSlWyC/C9+rA20Pun6uX\r\nj1PPe39vEjJlLzo+sPqb0VAdfzX6WdwF/qRXDfLdX2RZmy8QvVDN0vyi5nYb\r\nKObhXbbCKVe9WJuG0EEcPFWrR0PjWQLQJX6mxFHrAVt3vr/VliQhhKGstPlZ\r\nLu2yVHQQkfVN0oFBPUUOhXfi/69idDdBIjcK9E/xLrpXJ30xt0KlI24NZME/\r\n6iMpaVpPav4YTMWc623Q9i4j4Ns0QnG53jcnyEri0KhX1+vtVCaIoxKilWUC\r\nnAv9/3J5HENvzO4U+4ssOD3llQuUvnpot00faFbQE5RfjWwgBF0P+Ebo3XX0\r\nj3TlCzdzQFo8Ji/0tvH2bE0lp1zCfw/Ff0/xrNfULrBWVGpi94/Af9qlzkmf\r\n+YbsZc/5HYtXmVMez4GXgeN1GIXHerRuezjE8C8h4sZ4A7Qt+8Y7i+fCLaZp\r\naXKukYbmaee55js7Yn+BeiIjD/dpOwgldcbIUAxVzdooP8TWy8eE8rHkGduP\r\nk5oO8+ocY6rkGiJAUKOR6RIfVrvLrYlXl/Wv9Tx1hqiVB0NQuKjfS8tAKODq\r\nK3Y4t8ieBnxrssQ75VtuJUbXWpBAx8NJdMmAbFo4K3WGuab9ZIY03Bozbq3/\r\nZrHsrN/4zCawihJeIbRZCDj+1Y3C9xR5Ok0=\r\n=Q/5H\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-dev.1.3.0.96595.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"2.0.0-dev.1.3.0.96595","@fluidframework/map":"2.0.0-dev.1.3.0.96595","@fluidframework/cell":"2.0.0-dev.1.3.0.96595","@fluidframework/matrix":"2.0.0-dev.1.3.0.96595","@fluidframework/counter":"2.0.0-dev.1.3.0.96595","@fluidframework/aqueduct":"2.0.0-dev.1.3.0.96595","@fluidframework/sequence":"2.0.0-dev.1.3.0.96595","@fluidframework/test-utils":"2.0.0-dev.1.3.0.96595","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":"2.0.0-dev.1.3.0.96595","@fluidframework/test-drivers":"2.0.0-dev.1.3.0.96595","@fluidframework/core-interfaces":"2.0.0-dev.1.3.0.96595","@fluidframework/container-loader":"2.0.0-dev.1.3.0.96595","@fluidframework/container-runtime":"2.0.0-dev.1.3.0.96595","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"2.0.0-dev.1.3.0.96595","@fluidframework/ordered-collection":"2.0.0-dev.1.3.0.96595","@fluidframework/register-collection":"2.0.0-dev.1.3.0.96595","@fluidframework/runtime-definitions":"2.0.0-dev.1.3.0.96595","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":"2.0.0-dev.1.3.0.96595","@fluidframework/datastore-definitions":"2.0.0-dev.1.3.0.96595","@fluidframework/test-driver-definitions":"2.0.0-dev.1.3.0.96595"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.6000","@fluidframework/build-common":"^1.0.0","@fluidframework/mocha-test-setup":"2.0.0-dev.1.3.0.96595","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-dev.1.3.0.96595_1664568206622_0.728582163010481","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.2.1":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.2.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.2.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"8c30caf860e32e6d43e7e947ff61d050f4832ddf","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.2.1.tgz","fileCount":58,"integrity":"sha512-cLoYQvP/gV0SaQc4a3mwvoSzeBiB0GXeSsdK9o1js2bOLGcBJ5gj+sKCxvoWKn3PV7+LwFuZ9pixhtkutzWCig==","signatures":[{"sig":"MEUCIQDoqDaBm6dwZJ1RLPvHQLudfOpqGJKnXdiKMaPr3dSl2wIgSPU10EJXeQcNi4po/InRJHMMxMTzhUrA7mbH5XOit9o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjO3UUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq5KxAAkFpH/Xc2cnN1xU1SrEKtdHisVWwwpud8015lINwVZ9Gh1bZg\r\nIVKhLuGacg2bNQlQqJdKlQu+jQLET6XI+04tzRFmH6RCjTUAjL3Q66HLIheB\r\ngRxSMz6ptd9t9jBwmXEp2R8wAZEWVRzaIvLCqLMbDn4tVkZBWaqK2NpOi2Ii\r\nm4QTCoxuep7QqHFo2Y1L3Ml1JY4c2d//jZp1jidmeh/JaW/q4koB0limH1Ac\r\nLv4p3jUhO5Ze6DFhTj6xdcjJSN73bNssGpr2RFwQ+ENlf+Vv9rOT88uvmJXe\r\nsZblmYZwnNdLHT1HgHIlDUTPl8krYR2qbSCW/Gih/xb5R8l/zbvtsW1qRowG\r\nP0zCtklldbP5Y8L0fN/cD4a//FS1JeVfICUWwXFvMXs3S0SrR31lZjN4H3MQ\r\niwgU4qusVAOPOxtqpRMf5if3TZ1RwIyFtZX0Z48VRIDZw/AjfjIznthK7OK3\r\np3GYhNg5uThQcIHHV6gdNsWIhgxHuBESMtyiJfQxQFO1UT/uVEIrm03SGqey\r\nQwqBTGEsWdqLiNcg4yYKigs3mHx8BzhYiHt1cV8iT3adUlQfXavy0xaPIzVz\r\nuF8Kjk4hE/whqNOJKWRjwyrOvi6NweXl7wL3l+FH2WX44atMeRD7lfBVDLGr\r\n6qZxnwyKOs8O9OAF8gj4aX+C8FCgcQMlVhk=\r\n=DVEM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.2.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^2.0.0-internal.1.2.1","@fluidframework/map":"^2.0.0-internal.1.2.1","@fluidframework/cell":"^2.0.0-internal.1.2.1","@fluidframework/matrix":"^2.0.0-internal.1.2.1","@fluidframework/counter":"^2.0.0-internal.1.2.1","@fluidframework/aqueduct":"^2.0.0-internal.1.2.1","@fluidframework/sequence":"^2.0.0-internal.1.2.1","@fluidframework/test-utils":"^2.0.0-internal.1.2.1","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":"^2.0.0-internal.1.2.1","@fluidframework/test-drivers":"^2.0.0-internal.1.2.1","@fluidframework/core-interfaces":"^2.0.0-internal.1.2.1","@fluidframework/container-loader":"^2.0.0-internal.1.2.1","@fluidframework/mocha-test-setup":"^2.0.0-internal.1.2.1","@fluidframework/container-runtime":"^2.0.0-internal.1.2.1","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^2.0.0-internal.1.2.1","@fluidframework/ordered-collection":"^2.0.0-internal.1.2.1","@fluidframework/register-collection":"^2.0.0-internal.1.2.1","@fluidframework/runtime-definitions":"^2.0.0-internal.1.2.1","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":"^2.0.0-internal.1.2.1","@fluidframework/datastore-definitions":"^2.0.0-internal.1.2.1","@fluidframework/test-driver-definitions":"^2.0.0-internal.1.2.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.4000","@fluidframework/build-common":"^1.0.0","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.2.1_1664840980668_0.09513072819621504","host":"s3://npm-registry-packages"}},"1.3.0-97515":{"name":"@fluidframework/test-version-utils","version":"1.3.0-97515","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.3.0-97515","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"61ad8ec85cee9749badb5a9ca5d02a081e078ad8","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.3.0-97515.tgz","fileCount":53,"integrity":"sha512-DYMvTV0zZFKo7acb1r/CzV0xLzfiMLKXpL01o+3xWC91RsW8hhVmrOGNsPdAGXO5Iq3l7CnssHzgGaod+PHR2A==","signatures":[{"sig":"MEUCIApkLyEHrNnKZsPV42N7o4Bvr1fpEm8a1v871vyM8su8AiEA/pfcdlEEoixm83z/FTsgAEDEafhwP+5lWqQ8zTH83YE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201294,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjPL5wACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqmMQ//Tuk8wcIOuiJaeYoE7EYzX0kkZs13crwYdeeLIBFomhNSaGpz\r\ny9zbiXnErGS6a9N3D2wVnk1ngwEsq3qeG375o8+LWhpn1elVvSejrOj4L4zF\r\ndB8tYfou0+C5aAQJtaS/wv9zSo9E29ZyHbWCtMnsxVYkx8sQU7e4bSp+2gtP\r\n7DkQMqVxOY5NxS9tN6YtDpaeDgAvD42fy9wWn+y9bzPgT4froGmRXosOuy2K\r\nsg7TWyn274ueNrk01n8B3rQM1hMaRbZd+xD2QYGLUKmaEg+ujdrhPWBmsvZC\r\nMocZ3xBaMT5zQu0gqFgX7W0WiINmuPyk4/xUI/DeobKcU2G0vQ6tPyKUHVbZ\r\nfnQlOrNPG16+6VCtjsHHbNicqn8NC0eoer3iGR32FfB5/WkSCRiZp/Av4jAy\r\npzAqQIxgc+KJOSWeRK/QqY5p/jfo1mc3gLkzi79h8//mcM3KCe9if4Ii//Z+\r\nVla3VkqKQlivUtjaYzUNBVA9Cn8GFILQ+R38/7RCbTt+7u5bE1XuImQuPUtU\r\nXC/A14qf125Nt4aYHxbqBvXccc46GE/cGWpix4DKqkBFXL7y7XdZiK19Wztc\r\n+9y9D0ThxxMr9zL3sjuJ+Ui6lDB/2nV+Lx+/8q0Lp9zUOVr+lBlgbkQdWArb\r\nbfRRCrY49ZY9rHMQg0XpbGnK5yQSXzToHwM=\r\n=0JkL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.3.0-97515.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"1.3.0-97515","@fluidframework/map":"1.3.0-97515","@fluidframework/cell":"1.3.0-97515","@fluidframework/matrix":"1.3.0-97515","@fluidframework/counter":"1.3.0-97515","@fluidframework/aqueduct":"1.3.0-97515","@fluidframework/sequence":"1.3.0-97515","@fluidframework/test-utils":"1.3.0-97515","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"1.3.0-97515","@fluidframework/test-drivers":"1.3.0-97515","@fluidframework/core-interfaces":"1.3.0-97515","@fluidframework/container-loader":"1.3.0-97515","@fluidframework/mocha-test-setup":"1.3.0-97515","@fluidframework/container-runtime":"1.3.0-97515","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"1.3.0-97515","@fluidframework/ordered-collection":"1.3.0-97515","@fluidframework/register-collection":"1.3.0-97515","@fluidframework/runtime-definitions":"1.3.0-97515","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"1.3.0-97515","@fluidframework/datastore-definitions":"1.3.0-97515","@fluidframework/test-driver-definitions":"1.3.0-97515"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.3.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.3.0-97515_1664925296607_0.7136308143073311","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.2.2":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.2.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.2.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"d9151aa9648486338dbabe5834760ca3c34ac819","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.2.2.tgz","fileCount":58,"integrity":"sha512-yRTc5V3ZlDY43PASJ9JYNRwi2at70SYN9IImTdb6QnlYRBAkAo6Dg0HxDsV2GhZ8vCkdslRTq2BbiGVkMhZHjQ==","signatures":[{"sig":"MEYCIQDyCW8LUtAaUgqbWMxXaT52qlDbtTTJbeqlRHN4G7q+kgIhAPHLDebWT0QzTafqkm/pvPPIHyYoe+eUma+b8tMxY35Q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjPNcqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrbOQ/8DxpMjp8eLGjcMy9xwpYGjw/ldEqPKM/dokgWkh9aXZRMmOpV\r\nzqG7qGYhmCHB5g5O4bt3O7G/zuX3++oqwkTSbM3u4h67pwX6j5bBmZozbyel\r\n71zrbpPez1nirDAIKMkK9yPtJcftTlRgLwCr5MisUlp9Hia7q2MkFVzc4k1E\r\nbcVeAezVFpRmkegOyWhAr+3+LmBMpD5EgeWipgLB4v1sXURT27XTtYCNRGJc\r\nAoukSlmyButr7ZTzakQ//Tg88w3Pnp5W9EUcH7A5FJgyc77bxvrhXA0Pmfmw\r\nAL7G0rWyr14Buock9ScsjIivBGzAw0UGLGl/zEN1KCrRa/E2/GjqkOoZ7i9B\r\nOKiwdnpYwVXn1ebgr7s+UDTtxZm93ADWQ6htOdJkPizgz/LH6RGxs8BvrtcP\r\n9N63vy02ju0GZDn5OT9lkMFK10rHrCvAbYVeWfGWSyWoiTNno1wABlWOALpS\r\nFjMYJPiKbX2jIjDGMeyRErpcEVJqU2B0J4wY0mRL9MoPF/HxA3V91L1x2AIi\r\ntxNiwiB6erysuIAGoA0G8ZTP7Pl7j/FqCwXhRWkzfQ9AFOuVeHUaeSPHl2fL\r\npStBuIn4GNwqc97hkhN69S8bdrcPE3wpzVLF/3hwK5pBTu50HAxdHpTS++dB\r\n/fw5UXPlwPSguvtiolLwa7ujsJAvSJPg1j0=\r\n=KrNN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.2.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^2.0.0-internal.1.2.2","@fluidframework/map":"^2.0.0-internal.1.2.2","@fluidframework/cell":"^2.0.0-internal.1.2.2","@fluidframework/matrix":"^2.0.0-internal.1.2.2","@fluidframework/counter":"^2.0.0-internal.1.2.2","@fluidframework/aqueduct":"^2.0.0-internal.1.2.2","@fluidframework/sequence":"^2.0.0-internal.1.2.2","@fluidframework/test-utils":"^2.0.0-internal.1.2.2","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":"^2.0.0-internal.1.2.2","@fluidframework/test-drivers":"^2.0.0-internal.1.2.2","@fluidframework/core-interfaces":"^2.0.0-internal.1.2.2","@fluidframework/container-loader":"^2.0.0-internal.1.2.2","@fluidframework/mocha-test-setup":"^2.0.0-internal.1.2.2","@fluidframework/container-runtime":"^2.0.0-internal.1.2.2","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^2.0.0-internal.1.2.2","@fluidframework/ordered-collection":"^2.0.0-internal.1.2.2","@fluidframework/register-collection":"^2.0.0-internal.1.2.2","@fluidframework/runtime-definitions":"^2.0.0-internal.1.2.2","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":"^2.0.0-internal.1.2.2","@fluidframework/datastore-definitions":"^2.0.0-internal.1.2.2","@fluidframework/test-driver-definitions":"^2.0.0-internal.1.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.4000","@fluidframework/build-common":"^1.0.0","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.2.2_1664931625819_0.9007962041562492","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.4.0":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.4.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.4.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"9aedc17a6599773ae25d7480239a9263bdc12b7c","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.4.0.tgz","fileCount":58,"integrity":"sha512-He2r4iYfc/s2OqtQr02eHYoZfiM2HxVtMb96/AEmD8Ih3+/0BYQAZ5/MSafzAVM0gZy0Jmmbh6OjdaGcyg9iRw==","signatures":[{"sig":"MEQCIAuKt1WGZlPu0EbUr00cjxDMQxIeDZPgqK1FyBJr8dJGAiACuwHj6GRHLkaB8uk8/gWpEDk1fIDCD8Ehc+08qD32Pw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjP2F/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpRLg/+IgUewd3QvSyLZ72SFR4Qz8dDPcexasl6n6fg4ITK7Fd05tX+\r\nw57vXPFl0nqyX0x4UYl0iC0YwM9+m9vqEkA+9s+qgYekflgbio2rINSzI81p\r\nusZh6LjNQpVuqTJn73kwGXBzfiGCYutgg7sP1i6kJHN2hQ5jAaM6Exgmqx5d\r\nrX5po1YUp0ovJYp16CcRT6vhlo41uv+tMAoRWbIbxKjat6UW620O9rEMfvia\r\nyTVza6L2h/QMfFIQ77CG5DzckGCVaC3ZZxHib35pLu2PGrIS44FVaNPzKIZZ\r\n/CZMUQpnWdLBVVB2n/h4bFbpB/g1gvRJjT3XrrcjyH0iKkHq2dQf+JlbOsoF\r\n/g2TtPIhN+40Y9jgFpAeVI53PJnEoHwP5qvNqomtIqOXZnRtHdDrlZqrx3Ai\r\n08g8J6bBPcZfYyN46MM/Ndg7lA5b6Kb1O+FYU6QzkSP7qKNQ/w8IwPf7uDji\r\n4p+Zz8pd4Gmc2TcBZhGk+x3291RiATCfu3bWe53yWM9IyTYWrNT5xalU7hMU\r\nM8T04d1l1Z/MXGayMbylyO9JM/Akt5t3acQYd3reBRMCG0UCSSAANeMRtPuG\r\nRQ5pr0MYjzVLpjCZzfkFUqYRvyfwMG0Lj6rw57A4W8yHWIjNADqdGmHD0JNo\r\nvjRrYV2yHwcFUEAk61WhlH7HGcfDhhR/qKc=\r\n=W7nd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.4.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^2.0.0-internal.1.4.0","@fluidframework/map":"^2.0.0-internal.1.4.0","@fluidframework/cell":"^2.0.0-internal.1.4.0","@fluidframework/matrix":"^2.0.0-internal.1.4.0","@fluidframework/counter":"^2.0.0-internal.1.4.0","@fluidframework/aqueduct":"^2.0.0-internal.1.4.0","@fluidframework/sequence":"^2.0.0-internal.1.4.0","@fluidframework/test-utils":"^2.0.0-internal.1.4.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":"^2.0.0-internal.1.4.0","@fluidframework/test-drivers":"^2.0.0-internal.1.4.0","@fluidframework/core-interfaces":"^2.0.0-internal.1.4.0","@fluidframework/container-loader":"^2.0.0-internal.1.4.0","@fluidframework/mocha-test-setup":"^2.0.0-internal.1.4.0","@fluidframework/container-runtime":"^2.0.0-internal.1.4.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^2.0.0-internal.1.4.0","@fluidframework/ordered-collection":"^2.0.0-internal.1.4.0","@fluidframework/register-collection":"^2.0.0-internal.1.4.0","@fluidframework/runtime-definitions":"^2.0.0-internal.1.4.0","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":"^2.0.0-internal.1.4.0","@fluidframework/datastore-definitions":"^2.0.0-internal.1.4.0","@fluidframework/test-driver-definitions":"^2.0.0-internal.1.4.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.4000","@fluidframework/build-common":"^1.0.0","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.4.0_1665098111305_0.2640492904444527","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.4.1":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.4.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.4.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"7bcafef539ad1925e16dea6685c757cd51cdb22e","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.4.1.tgz","fileCount":58,"integrity":"sha512-wc5qhJ4Slo3ug8Ov//azhrHnAyodkJP+KytcjkDpKVC3F2/mbML1OoLBUpFajoxPzOEsBqsG6rppyQPI+CMJ7A==","signatures":[{"sig":"MEUCICTtyehXoqNcJcqJZ6+5D5T4SvQT2euSbigeBYmxQkBqAiEAyaF+pkd5j4bAEM34LgB6wTXhQ/5vrJ8QQGrjwaVb838=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjRItKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoOvA/+LoFjhTPsevLVPpxy3htHABeJufl6675RYmi/DYQ66fZNWiPI\r\nN7rfvocgLExqEuHqezcKeXkZk6Yo5zs1CaznUCmWrBcDRN5lhHoclowun/3P\r\nt4dwGvngQm42Sqef8uJS23fK1HwuotOh/BYx85SNtOIGULZqFe1vR2a/5Q+D\r\n4iCy0KwTCY1rnzHf7Pvyw/Y7gQF/SUuffF6ybwCfwbfDmijOniABe1S46Fwa\r\nViAO2+E/S9b8y71OtnE0/7eUBrIHRh5VZ+5UuZ941yCldAycCoxZsHfrXgbI\r\nQ/r7ahQwzIuRR1/GG4krWYSFf34/jrxKaFZNYZUBbqdBkuxqZFwAhUFYqU79\r\nxVr4LBGeDIN+gyrN8DKkXTMot2d+LIETSruaRLccCvhCAHOIjzQaFUdWSFG1\r\nL9GvNn12D7gABGyDNWLobiEQ0+/5T5CSCgabmPY5C+uBpMkqXcRfk51gzEGf\r\nJIq1d+e2UbP+4sV4p3L1rDpHvrClcKo5GWTlkyTMUJfHxBqq9Ovn7+lnQQpQ\r\ncxKSuzgO5vxTKsmyD1RKDG7MkrHHmn9JneBZvgWCIvuqjbac9uDki7Bt6qnc\r\ner1qoGjEi4pKP/W+qInTbSVKhp4QYO959EUA/blt7ef6q9A3CpWG1Z5Dfeqt\r\nISzcMgCvI1bfx2MTYllHojDSNpdL5Q11ZbA=\r\n=DzCA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.4.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^2.0.0-internal.1.4.1","@fluidframework/map":"^2.0.0-internal.1.4.1","@fluidframework/cell":"^2.0.0-internal.1.4.1","@fluidframework/matrix":"^2.0.0-internal.1.4.1","@fluidframework/counter":"^2.0.0-internal.1.4.1","@fluidframework/aqueduct":"^2.0.0-internal.1.4.1","@fluidframework/sequence":"^2.0.0-internal.1.4.1","@fluidframework/test-utils":"^2.0.0-internal.1.4.1","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":"^2.0.0-internal.1.4.1","@fluidframework/test-drivers":"^2.0.0-internal.1.4.1","@fluidframework/core-interfaces":"^2.0.0-internal.1.4.1","@fluidframework/container-loader":"^2.0.0-internal.1.4.1","@fluidframework/mocha-test-setup":"^2.0.0-internal.1.4.1","@fluidframework/container-runtime":"^2.0.0-internal.1.4.1","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^2.0.0-internal.1.4.1","@fluidframework/ordered-collection":"^2.0.0-internal.1.4.1","@fluidframework/register-collection":"^2.0.0-internal.1.4.1","@fluidframework/runtime-definitions":"^2.0.0-internal.1.4.1","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":"^2.0.0-internal.1.4.1","@fluidframework/datastore-definitions":"^2.0.0-internal.1.4.1","@fluidframework/test-driver-definitions":"^2.0.0-internal.1.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.4000","@fluidframework/build-common":"^1.0.0","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.4.1_1665436489946_0.6308193489484148","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.4.2":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.4.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.4.2","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"2eed302067c8d2d4c6bebd65e2b0b0b750808268","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.4.2.tgz","fileCount":58,"integrity":"sha512-gfMeW9Lf23lDLYU6aURNW5zNHgH8cpEDUcnElTqJzNStFEwK9Bdpa304wPwcQKwbZeQlRSFZSQNumoK0wiNIwQ==","signatures":[{"sig":"MEUCIQCwePkMUNP70zrfzgGLpc+uLASREXehkl73jLVZcp7iXwIgHT6wwYR5f/RVxDC30uBHCpJ4NJZGocfeE69Xy4yXT3Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjR1VtACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpyPA//d+KTXj16uy7e/JyG+pekrOUykfix6NWhYYfxqxFi7Xm/ibfC\r\nZbMx+RMqCD0CQvd6lekyfiTePEp1MgbpccFphDnlraoqmf4uCtUq48cmq4VA\r\njsCmtC8CbJWcHR2nTltu31uNH5g3kAhE6gJMgnfkdbCThKb7ywOl8GbAPNDn\r\nBrqY9LnBZ0u/qpESdxJOfdIr7VfCCsqHglRaCIrnFGEfUNmkJF+FGzuHYi2c\r\nIfJURcKdDTapsMKzKVp5n7A/Ylr9zVoCp+M1S8o9y/URwY9qFWT2JRgiBxzD\r\njEp6GvTAUGfepTq9x9cwWua2frqc/SmjySsvDj9w8DsyPpnYpNl9RUowEE/E\r\n9W/77HCL7FJryysoL2xxuuxlNBh7uGOaFbE7BFJr+bmnndsBFqYGroJULrCK\r\nMxHhNV7B3Iv1eU130h7BkVffh1pa7hzKRvAcAcTzZTWVYXnmBKTZ32ZZ3A+p\r\n2IeOWkUyRmO6Tx/JsG7iUxN4JCAEj9okQmQXtI5Bg5UTMuvB3PMm2eMnIEJ4\r\nFuCim/eb1yeIXICnVg+p7f/AnQ6rcmiZORK3rSnneV+gT57iQuzKRAuO17fO\r\ncPgTlUmihKHAYg5FFXYVYyNCAXHO+jMHS/crfWZuuox9ctgzhUT3aFASz1JY\r\nOiwedkAM2h/mMwOjR2fc9uma9yoptQgmAos=\r\n=8VTf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.4.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^2.0.0-internal.1.4.2","@fluidframework/map":"^2.0.0-internal.1.4.2","@fluidframework/cell":"^2.0.0-internal.1.4.2","@fluidframework/matrix":"^2.0.0-internal.1.4.2","@fluidframework/counter":"^2.0.0-internal.1.4.2","@fluidframework/aqueduct":"^2.0.0-internal.1.4.2","@fluidframework/sequence":"^2.0.0-internal.1.4.2","@fluidframework/test-utils":"^2.0.0-internal.1.4.2","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":"^2.0.0-internal.1.4.2","@fluidframework/test-drivers":"^2.0.0-internal.1.4.2","@fluidframework/core-interfaces":"^2.0.0-internal.1.4.2","@fluidframework/container-loader":"^2.0.0-internal.1.4.2","@fluidframework/mocha-test-setup":"^2.0.0-internal.1.4.2","@fluidframework/container-runtime":"^2.0.0-internal.1.4.2","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^2.0.0-internal.1.4.2","@fluidframework/ordered-collection":"^2.0.0-internal.1.4.2","@fluidframework/register-collection":"^2.0.0-internal.1.4.2","@fluidframework/runtime-definitions":"^2.0.0-internal.1.4.2","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":"^2.0.0-internal.1.4.2","@fluidframework/datastore-definitions":"^2.0.0-internal.1.4.2","@fluidframework/test-driver-definitions":"^2.0.0-internal.1.4.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.4000","@fluidframework/build-common":"^1.0.0","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.4.2_1665619309103_0.941181916809994","host":"s3://npm-registry-packages"}},"1.3.0-100520":{"name":"@fluidframework/test-version-utils","version":"1.3.0-100520","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.3.0-100520","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"5662b6336b78f3e7212dbb4b953819f3b1d3dea5","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.3.0-100520.tgz","fileCount":53,"integrity":"sha512-aFOtwltkw4htmJdrY8mvqvi9d6FgkM+rjW5kRZtL9vPU2+y8Y6RbImlw2spNS1eKqJ2SG4fLds5Ap023hMbKoQ==","signatures":[{"sig":"MEYCIQD9OMnWYklcXVQ2VEd5vgV8G0Asy4XEQXLPf259+03SjgIhAMsPHpGK2EA8ynRlTpK1ls7crL7raJUFQkrYX2hbD2oH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201320,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjSauYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoanA/8C5xwomzbJ5jP0AgVnSqTkL03x6z/6TuBcOy/NDYHCL4waO2X\r\nzMkgRT15vbto6YHzlThURkVNsGbBtw6KVC4CsdHCC4RhdMvPZNhUpk+iQgq8\r\npfLr0lZEyTtzY7CYRRZHbISie16lTjfANCrwtAQrcjrTP908z0mqqEiUfTa/\r\njn+VtKP63oOmVmWEMGRKqnK5vG8ymNxCG0i2jYT/GcyDj/kZVAYASwyVFFUp\r\nQI20bg3GZRb2P34zsRbMwblqi0qjgvwV7wJ7kZEGZ22O1WI0emp8MYAnF0PL\r\nls1nTM6eg+5YGcnN3eOJQZYxbbjSatxZjZ5LMCh2eJmIva3v/l6tLZJO2oMQ\r\nAEC4m8ghLr8oimKotbIqz4rvUbTRIHriK65y9Z0d7FMKBbF9ozJQvNi9wE/E\r\nAi+zX/Bi86fbGPcB11P8/78vhcB+ZHjWqATl+bq+IZ+PLAFEOZaPTomKiC5v\r\n2GeTNRPC8Bo+gECbJJpqSSwM78/wqTWPRigIr2OOoVcgAZ7pYqAuBR8oOiu1\r\nD3+0Z2pn97La/NpGWYSrsP/d068ry3UG1C4HueoXn8JdQDrJY7qf3UHJp85i\r\ngy6OzDo4NvP51TLDj5RKNiJAd7qSjvmC8YYmuHalx8Rja5Tp6CviIEz/ig4I\r\nZr8TJlKmn7HSIAGK5M7D/fR1+e74Q9hZBOw=\r\n=Gzia\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.3.0-100520.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"1.3.0-100520","@fluidframework/map":"1.3.0-100520","@fluidframework/cell":"1.3.0-100520","@fluidframework/matrix":"1.3.0-100520","@fluidframework/counter":"1.3.0-100520","@fluidframework/aqueduct":"1.3.0-100520","@fluidframework/sequence":"1.3.0-100520","@fluidframework/test-utils":"1.3.0-100520","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"1.3.0-100520","@fluidframework/test-drivers":"1.3.0-100520","@fluidframework/core-interfaces":"1.3.0-100520","@fluidframework/container-loader":"1.3.0-100520","@fluidframework/mocha-test-setup":"1.3.0-100520","@fluidframework/container-runtime":"1.3.0-100520","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"1.3.0-100520","@fluidframework/ordered-collection":"1.3.0-100520","@fluidframework/register-collection":"1.3.0-100520","@fluidframework/runtime-definitions":"1.3.0-100520","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"1.3.0-100520","@fluidframework/datastore-definitions":"1.3.0-100520","@fluidframework/test-driver-definitions":"1.3.0-100520"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.3.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.3.0-100520_1665772440369_0.012767464217178004","host":"s3://npm-registry-packages"}},"2.0.0-internal.2.0.0":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.2.0.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.2.0.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"c5feaebfc2d07c497edca5693365aa06c0420682","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.2.0.0.tgz","fileCount":58,"integrity":"sha512-19PAwYQIn5TFMdM7AxcvLPSXTD+F60KbMtf2C7tkevEXN7P5ZycEIsylRYLvjkT71NLYouz3UA7GYj/m4Eai0Q==","signatures":[{"sig":"MEUCIQCIrKwprppBsW5eL7o2lMD9/2BarJzk0TPPxQfMpbNyewIgF9s3KpVq7cSuOa9nKkodjgojJ7k/FNNo3vCA1EpzB20=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":252071,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjThVHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoCMxAAokoiU/NIASLZUm+2dIdCxIa7XWA8KTtNnbYK3rDdt1W4cBvU\r\n1NYbctnVOGuxT+kydDCptAFz3AAAEqmHPuzeefetblfbgCH78gJHUl1DB2iT\r\nlIjGoJ1X4xtZxpfNvzBzj9Ux9S5yOnVxIltlFF2u6NSbGJGWot+msX/4mOeE\r\n9OkD2caGIWwg92FNfSNMoqrACTz1umoACSZpsiJJOeYwazIVjbSvfu8Qysjt\r\nZnbZxCkgQfwc7H/IqmBw5zmGkE2L09yicQCQ8qUJxeB0kfTI9u/sMtHzuQ2e\r\nkwxOzNoUO08cj1j+N34EsphN6B33YtNMrc1VIc8qXpZlKKIxfUHR5wX9WxVV\r\nekv8x52MBJa+pOqH8kTrth9S6vFHgH/ulx44NaskNYEfDn4+nbh0sPGD13x+\r\nLgk3b6bjlsoWGwHths2yB+hEjulIyuadzABxeAoNQx7yO/rf9uGs3Y9YHEOm\r\niuZ/0BbvRiSLvIhwzSe8XntKwPH61Nti65D2L0fdo4EKVmqgtjj6JzvzAu4L\r\nrvoJj98cgx/amn4PnVByiBaH9ZHAUK9yycJIoj9JbqJjzQpHw1JXmRM5f1Bv\r\nP0lIZiEIU+nibMO0vxzYGGl36rOTHAqJhSP2z8rBiiijNQRa47lRiiQ9eCkN\r\nfRsW46h185TDdWglauFDl1BzJ0SUjsCG6yY=\r\n=qB2q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.2.0.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^2.0.0-internal.2.0.0","@fluidframework/map":"^2.0.0-internal.2.0.0","@fluidframework/cell":"^2.0.0-internal.2.0.0","@fluidframework/matrix":"^2.0.0-internal.2.0.0","@fluidframework/counter":"^2.0.0-internal.2.0.0","@fluidframework/aqueduct":"^2.0.0-internal.2.0.0","@fluidframework/sequence":"^2.0.0-internal.2.0.0","@fluidframework/test-utils":"^2.0.0-internal.2.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":"^2.0.0-internal.2.0.0","@fluidframework/test-drivers":"^2.0.0-internal.2.0.0","@fluidframework/core-interfaces":"^2.0.0-internal.2.0.0","@fluidframework/container-loader":"^2.0.0-internal.2.0.0","@fluidframework/container-runtime":"^2.0.0-internal.2.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^2.0.0-internal.2.0.0","@fluidframework/ordered-collection":"^2.0.0-internal.2.0.0","@fluidframework/register-collection":"^2.0.0-internal.2.0.0","@fluidframework/runtime-definitions":"^2.0.0-internal.2.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":"^2.0.0-internal.2.0.0","@fluidframework/datastore-definitions":"^2.0.0-internal.2.0.0","@fluid-experimental/sequence-deprecated":"^2.0.0-internal.2.0.0","@fluidframework/test-driver-definitions":"^2.0.0-internal.2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"backCompat":false,"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.6000","@fluidframework/build-common":"^1.0.0","@fluidframework/mocha-test-setup":"^2.0.0-internal.2.0.0","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@>=2.0.0-internal.1.4.0 <2.0.0-internal.2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.2.0.0_1666061639550_0.7279430385018661","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.4.3":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.4.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.4.3","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"6dea157010a239334c46369905a49be23918d5e7","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.4.3.tgz","fileCount":58,"integrity":"sha512-jkq09XLkEojLsPI1vXEaX3JH2UtBpVAbEktUnMTaBTQ5aaghugqavdzM6TrMAnlf0RR6yDeyF/OD/qdUi8/tYg==","signatures":[{"sig":"MEUCIQDLOM9ytOTFErqCTHTzpxnlIk0yXhm4PQ6l4NkP2rbl6wIgdpT1Xx+QX+zPJpyFsU+TJV99axv6ju3lP56KB3djjoc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjTytpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq52RAAjKOFeFgv+NkjoLrXqr9+AvHLgcvEKEQz8xBI9DkYj4D2soB9\r\nrEYhYB7ZWoeIajQ/874u88ucEf5B0Q4dRmLTNXKsZfR9LRTQBjYt8ZVNCVp/\r\n7V+/T/WDD/YLtAaZQ4Bz9l8Vjd8VtKUojyOHmE7Y0RQtkaSgruWF9hljJQM8\r\nr0UMXCiuUBYsn+9dH2q0wCuVmE71P7WKMcgHaiRBb2Hf8zmogC49tLLih0YC\r\nGj3jo6Px92bMHlC2+mKs8huLZHmpW7Rd+ZL2UHNfbR3ybYf05M09OFtiImjV\r\nxZpVFLrho782BTwfwi0hzqgSu1gxEf0dB+4bXw54iiDo3eKc3neaB/AxYrGV\r\nSMNdnZey0ooDNaqjmIHQm71qPmwTHcf4aySrYzMEmonChDrd8keD7SSqGnS0\r\nNrUbzjPlSSaOPrqefeotfqFnY3eHFl+daq74Qq8ShvJTkAiLNeUjE2fOQdRt\r\nITXju+K5ce+yPZz5E6icnDgB5cd378+H9/j8hOWAw1GOMzwZ76aGSDv5Yg8b\r\n6TngMAEnYK9BqTFJhT7WW9aQCHFV1E2aLX6kVcu7P1VNI8ogLsyC3jZy0umU\r\nFQNZSYwA5yTitWMAHjyHeH+HuH3uo8u63xSDxSUO0/M/oy35oPxt3ne9l+jD\r\nJnWOwzi31Bbf0sfoWDukqhZOuEL0ZHwim5I=\r\n=4RYq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.4.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^2.0.0-internal.1.4.3","@fluidframework/map":"^2.0.0-internal.1.4.3","@fluidframework/cell":"^2.0.0-internal.1.4.3","@fluidframework/matrix":"^2.0.0-internal.1.4.3","@fluidframework/counter":"^2.0.0-internal.1.4.3","@fluidframework/aqueduct":"^2.0.0-internal.1.4.3","@fluidframework/sequence":"^2.0.0-internal.1.4.3","@fluidframework/test-utils":"^2.0.0-internal.1.4.3","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":"^2.0.0-internal.1.4.3","@fluidframework/test-drivers":"^2.0.0-internal.1.4.3","@fluidframework/core-interfaces":"^2.0.0-internal.1.4.3","@fluidframework/container-loader":"^2.0.0-internal.1.4.3","@fluidframework/mocha-test-setup":"^2.0.0-internal.1.4.3","@fluidframework/container-runtime":"^2.0.0-internal.1.4.3","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^2.0.0-internal.1.4.3","@fluidframework/ordered-collection":"^2.0.0-internal.1.4.3","@fluidframework/register-collection":"^2.0.0-internal.1.4.3","@fluidframework/runtime-definitions":"^2.0.0-internal.1.4.3","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":"^2.0.0-internal.1.4.3","@fluidframework/datastore-definitions":"^2.0.0-internal.1.4.3","@fluidframework/test-driver-definitions":"^2.0.0-internal.1.4.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.4000","@fluidframework/build-common":"^1.0.0","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.4.3_1666132841558_0.0417603058785021","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"@fluidframework/test-version-utils","version":"1.3.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.3.0","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"d735fe7a529630648c487aba80fe906ed5f21393","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.3.0.tgz","fileCount":53,"integrity":"sha512-tZI3C8H3TJoBlA62RgBI0o6YTIojs+P6wETpQpcma7efiq5LP3DtfMK4VG3jmI3qAImoE4UIk/n9ndqhS5VLbQ==","signatures":[{"sig":"MEUCIQDbBIRY4lbsiOeaf5H93cq3H4beuRj4m/ueaB/2xcsdIgIgJDNDHkO9WlcBExtaiK5kTEKOUA+a0DwZ7M9sZQ6zhQs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201157,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjUCCwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrElw/+PpKVWdERD1SkVFJuqeGI3+pyLjLcQvw0nA5ECJPcUM6cJIh2\r\nLvN/0zETtbkf83JyLJeyI8BhcjLDqYE958EWpPUycX+56enHYog3ywktnNkO\r\nGprOkXf+7uc/SiJA4vk1TyrsFSa7m9f7dN7ja3/czdOPdIaTk+Ieyl7P/Cin\r\nbBydh1QEPfRiuKgSUNbJRQQUpcFde088aRVu9kjCAd5yCLP9sNVTR3mva2gq\r\nzKBKZrjIFItdO9+dzgO3j3fiGcIu/+id/95Ya5bP4Lp7t06Pwg9drX+elQII\r\ncSql3OqnCoz4Vgq+RARkKcB4U6yWgRbHuaItCSHUcc67MTM7nxYAHwFCISDx\r\n7MxpuD3dU+ruSXgWvnNGjFzz9j7ZIe8TulAsqAOyTQW5HtEUgTJEQZ8+nOZ2\r\nuiLTcDdU0cI0GSSNq64ZzzdnPnkdCf3EouI84cFcCZWblB/3ccVSNXNo6nPn\r\nqEKQSd8U3sNJTGRKyY7L+4RF0QpufRAVQUy1OUq5/1rz+S+NwuEAmzUI2BNl\r\ns7RjlXNMW0jwAVY/mZlVfJiblzas1mxZPtv/ZAQKOBvIClq9YzEQDCFKjqry\r\no5w0nN7lChEGuGSQi8knmQDOrGtM9eNrbbK+RMQnoF95KwbQG3FO8hOSCRyg\r\nTBykWEi7YQ+x6wRLHekyMt0lcpQ4MUT2cQY=\r\n=i8C7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.3.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.3.0","@fluidframework/map":"^1.3.0","@fluidframework/cell":"^1.3.0","@fluidframework/matrix":"^1.3.0","@fluidframework/counter":"^1.3.0","@fluidframework/aqueduct":"^1.3.0","@fluidframework/sequence":"^1.3.0","@fluidframework/test-utils":"^1.3.0","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^1.3.0","@fluidframework/test-drivers":"^1.3.0","@fluidframework/core-interfaces":"^1.3.0","@fluidframework/container-loader":"^1.3.0","@fluidframework/mocha-test-setup":"^1.3.0","@fluidframework/container-runtime":"^1.3.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.3.0","@fluidframework/ordered-collection":"^1.3.0","@fluidframework/register-collection":"^1.3.0","@fluidframework/runtime-definitions":"^1.3.0","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.3.0","@fluidframework/datastore-definitions":"^1.3.0","@fluidframework/test-driver-definitions":"^1.3.0"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"1.3.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.3.0_1666195632388_0.27943226859570003","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.4.4":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.4.4","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.4.4","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"6864f5bcac4f3887a278ec04fb3bdc7635d10c97","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.4.4.tgz","fileCount":58,"integrity":"sha512-YqcEjs8D6d814xCM1i4yfn+YTAglgKN3S4RUXKKG+I2/8DU8oxH99/9GeQQvCAJxX1RFFPsTLgObhkhuOlB0oA==","signatures":[{"sig":"MEYCIQC9M1Zcl9l4o7LWtdNEzc/l+ROMSHIKST6Ov/OK7cVL0AIhANOKdGgnzyuTCWfOQ/ZhpDmc3EyCiD+0k/Nve6lWpml7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjUO4LACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpsJQ//e4Z1AL9Z2XIhN4flQNY1h4nayUMYhIpJ1geUYWnE/E0V/3hD\r\neYZpDz+YuywPZbyU0f9R106dThF5274RNlvOx1eawoUEuTHXdOPIMf2OYf9t\r\nuAXq+eXE2gj2QA0bJCcnNkFUR4eSmIrYAY+pWpVRWsXrBZwu6HVEhzQ/N0nr\r\nEr+e/W8ddvqLmM1ui4HDU+a9OwFPEM8IBH4+9gf06AqaHWgfbJbA0SUTn9mG\r\ndyGDSyWF6lyhwrIx1DhPC5/ZZtKUBortF6qjP1gNg/lUf8+zC8mYhF4U9loH\r\nEJaBhku0KYraFnPA3wb2P49ZuAQfkK/6q26M7Tw4V6lBYaaKo7LfEZvbsDDi\r\nHD37G1I5QrrTsz5yDcINyUMHbtdmMAET3vxYyG6Ftc+cowUxDMq+Q8oLsAPy\r\njnmHevAPZDHg7nNN5CRS4329SX6dwZqucYhxOxjaxp/yMoE0LTaCJiID50yL\r\n0DtA+ouK579b9wPl0fQwd6fPiOPIgD2egBubcK8uWxB9SaC/uJMFkWOLApP0\r\ngVQ5AOfy+HKwmOBeoLRusGKQxHm8IR9KJSm5+5hUHInAJasDA24Ax5OZtcDY\r\n8KNG2r931HzZJUul5aY7S0u8S7cyaWs4IoDIK7cUYgDdVzOb3yQEK8Ja2uTt\r\n70cYgkeSp5o1UmE5rSSTlIY6mDdKdcmx+Tg=\r\n=xAqt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.4.4.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0","@fluidframework/map":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0","@fluidframework/cell":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0","@fluidframework/matrix":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0","@fluidframework/counter":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0","@fluidframework/aqueduct":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0","@fluidframework/sequence":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0","@fluidframework/test-utils":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0","@fluidframework/test-drivers":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0","@fluidframework/container-loader":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0","@fluidframework/container-runtime":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0","@fluidframework/register-collection":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.1.4.4 <2.0.0-internal.2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.4000","@fluidframework/build-common":"^1.0.0","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.4.4_1666248203088_0.8374099360258349","host":"s3://npm-registry-packages"}},"2.0.0-internal.2.0.1":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.2.0.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.2.0.1","maintainers":[{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"96ebd4cebf5a2efbd5d01f6a9f0201c322383993","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.2.0.1.tgz","fileCount":58,"integrity":"sha512-2HuQeaLOQO5fFaFQZC4iKdcyYPssofbY/Q5juRUazisqdtRVjRYjCGd4wC0CUJti972wIgvHB2Ynp2/EI2J03Q==","signatures":[{"sig":"MEUCIFSLosrhW92jcJ6ioKBlhlU101hfOTuoUpiCx5GUMSOxAiEAsKi+a9iRJ34YzWOC4+L9z3+HQ1egL+sgJ0vJ09XZm1E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":252090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjUZ62ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoSMg/9GLq/4HJEhF4qE2YhAKlIRCUzbkFGGju3P2Gte8PPJeUwwM+3\r\nvQrwL/MsSV3ZwPfkZQXq07t6Kfd3FitOwW2SrQDdtUgm3K6rXPhGMnEknkBw\r\na1kL5cBn7oM7DY5BbuWPWCAORAVGnnJulXxKAgUP39Yc7s+u9szIWsjgJLdr\r\nVbr7bXXZCik8bHxs3As9umJYW4kmbPhwlLt1EpVhNkHjq+uSoBXdBEPFTlhW\r\nHvBH3XzZt5XR6QYCaOOQBjZdh0sG9Trw7rH+Kyj0N43rLB+tsvUffCJjoMDe\r\nv893hUv+3FKpLjig273yLxNIdkIUh5Z529hetkju26z1SdXCocV4W7ZS4ggt\r\nwc7/ChOmYVAnoL0KkHWBHIWq5hZ8dLfR7Dg5kQ0saUBmBYuNzb73/Tc3wXLY\r\nT1JdrJngLffoGetrRGfbth5XMNEnHiIC9rhTNJRPUd+cfflLBuUtGyGzNtEB\r\nX6yWZr1hoVnX0Be6/CD1exvsQmXsDaxLz+cmWbupYBMS7mxYLOSDdJlQsCeg\r\nORJ0W9lpChFLCq/uwr27ZpOTRgxGfrCT7Up6bwdYZ+9ciSv664IZdD82OP3R\r\nhmZuYSn9SLxssn7zxBXMhgjB0icGtSPACl46K6IXdB7X2mUTRWNlu8pSuCy+\r\neWEpKjmoPlr/JlfRm1O6GTh8zczBxss7xEM=\r\n=84wX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.2.0.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","build:compile":"npm run typetests:gen && npm run tsc && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"curtisman","email":"curtism@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.20.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluidframework/map":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluidframework/cell":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluidframework/matrix":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluidframework/counter":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluidframework/aqueduct":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluidframework/sequence":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluidframework/test-utils":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluidframework/test-drivers":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluidframework/container-loader":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluidframework/container-runtime":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluidframework/register-collection":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.2.0.1"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.6000","@fluidframework/build-common":"^1.0.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.2.0.1 <2.0.0-internal.3.0.0","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.2.0.1_1666293430344_0.6687360000961833","host":"s3://npm-registry-packages"}},"2.0.0-dev.1.4.5.105745":{"name":"@fluidframework/test-version-utils","version":"2.0.0-dev.1.4.5.105745","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-dev.1.4.5.105745","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"90aa97e8a642cacf4ae00f19f2afc9b3a2b67e34","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-dev.1.4.5.105745.tgz","fileCount":58,"integrity":"sha512-tupT7kwpDNOneh+AHBP4Ftl4DsIgsFncZ6LZtTsPlzD4prFEc1W+EtVcaH7GsFURFpw/JFR9xmOwgbqLdfuLEg==","signatures":[{"sig":"MEUCIG9RQvEU/teo27XZo3iRFuqoreTIyt/vWRqVXEq0mE62AiEA3cAStUGhY88urzdfz34u6T2ksBosYPdw3EineugAoUM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251275,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjYsnRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmra7xAAhV5ZPN2erBu/jVZVQl/MXJ1RmYNlGlpgo47J2StHLL00cqx8\r\nU8LOo/EP5APUfLFGXM60gZfuJuoIb+VsdTOyKiDKuloxyT7u6pCOYT584R0z\r\ns8HZMhFjIhT6yPkxaLUWAqH6s4CM1lLF1azvhKXqMp+gKouBzvRjWxVjLfUL\r\nqCKOZ/cFB4ggDdl501osEMXaGqAq7od/P5m75WQxvbctgsut3MIHn7S5Qytk\r\n6ad8RyB3ru3EY8bCLaMRMl/Ba7d+jKuxV5D5NZ8Z/BBRkdpOg5LfT+eFxc5Y\r\nxIJP2sq+pVjkcjtUKb7YyPh9t6vxi1kH9Tze2xd3BeLrZHIUC/TyPr/DIh/r\r\ndO17SUUPWU7HPrERdBfjavmuZmlmF471wu/iED7R1OcHaqFOQ8Na7S52KcEM\r\n8pCzjgKjjwcpshxdWMMehzjnbn+iUT4XvuyRttG8UD7gZLP5PHvp5VoUZV6T\r\nnzwbdQr3/L+65MZGzTtIsxZwCaQTfsXNNQ/75k/qigbavsofxQwZPcP/G5iH\r\nidn3hgxe8yVpOSCYVh1Ko7oEYncKe/4+aYRvtxlJo3ROXKNZwD7Zf4/Cb2gS\r\nPX78xzcJXpZddeIE4wzkbgblR7KN3wxRfEkzdZIoVDXtTPGmwlKT1P25AlpK\r\nfzRs0o41J/CKu8JxqHo4a7k+x57NRsZznZM=\r\n=wp8T\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-dev.1.4.5.105745.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"2.0.0-dev.1.4.5.105745","@fluidframework/map":"2.0.0-dev.1.4.5.105745","@fluidframework/cell":"2.0.0-dev.1.4.5.105745","@fluidframework/matrix":"2.0.0-dev.1.4.5.105745","@fluidframework/counter":"2.0.0-dev.1.4.5.105745","@fluidframework/aqueduct":"2.0.0-dev.1.4.5.105745","@fluidframework/sequence":"2.0.0-dev.1.4.5.105745","@fluidframework/test-utils":"2.0.0-dev.1.4.5.105745","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":"2.0.0-dev.1.4.5.105745","@fluidframework/test-drivers":"2.0.0-dev.1.4.5.105745","@fluidframework/core-interfaces":"2.0.0-dev.1.4.5.105745","@fluidframework/container-loader":"2.0.0-dev.1.4.5.105745","@fluidframework/mocha-test-setup":"2.0.0-dev.1.4.5.105745","@fluidframework/container-runtime":"2.0.0-dev.1.4.5.105745","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"2.0.0-dev.1.4.5.105745","@fluidframework/ordered-collection":"2.0.0-dev.1.4.5.105745","@fluidframework/register-collection":"2.0.0-dev.1.4.5.105745","@fluidframework/runtime-definitions":"2.0.0-dev.1.4.5.105745","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":"2.0.0-dev.1.4.5.105745","@fluidframework/datastore-definitions":"2.0.0-dev.1.4.5.105745","@fluidframework/test-driver-definitions":"2.0.0-dev.1.4.5.105745"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.4000","@fluidframework/build-common":"^1.0.0","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-dev.1.4.5.105745_1667418576835_0.6318969376466257","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.4.5":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.4.5","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.4.5","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"b3bfcbcbd5b318759568090dee637165cd4f5742","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.4.5.tgz","fileCount":58,"integrity":"sha512-GZ0j+/8RN3xkw3Cl7JKmYmserXCeVo+9kcKqHXI2vSMd0/o1qTlFBceXCxgqM7owXuwjb6tlS3JyXinWgOyxWQ==","signatures":[{"sig":"MEYCIQDqZHx8UET1UaUi2rMFjCfXQFIDevf+UdOE4j++le0xgQIhAN/DfTcjJ2mnidcpkaTXfdcY7vxH6h/kRuOgS6CtgoIQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjZBWAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoerA//eLPwl02zLQBvbDXngZeT29jFVY7Lfnp9ycK6yAsnd987egHi\r\n6qPgFdthSqpS+1BuQWMY9WxHh5qjPamkUZPMXLMliBljABvhIIAyVr3QMc6P\r\nOAKmvdYb2u5b48R/iAkAWwYKTgWrrSDuBOHTJ8VdPyIpx/r9fSeQOjkAuzK3\r\nTqBCg1I2xnkXIGBYZcqfkHigPLkuuzjuSPdQXKncTP51bzOOX84mcpBBtpQI\r\nZWQjQPJVSB6BfLgb/nYYK/aGQuM8UlRACfKdLWnb/DL5ahkK9ftC2wOYvaMZ\r\n1dVkAaQM55y/Xo6v+1FdVPsttICbYAHMIhf+dHlW29aYl9Gaw9+1Z1SvbGE3\r\nRD+YSGCcy6aGSNe6b2R4/i+JN544uEFe7ZiugL8IE+5fWln+ErbXE9TZHt/x\r\nuHmUCg/tVxv9tja3dQKKXt8eKsdr5o2Mofpwk6SiqTSaQkERomcviXDOLq6o\r\nCl9cvPwJIZzDg6H/sMEHxjGGdyW9P/5eVbuLT80gvuOlM13SoPCa+gc6ufT2\r\nq147tm/gI4b9Cte25/8poqrR74iHyepO625UWh2Y5ExMpzDXsLekGwAHmknI\r\nb5MWh4dPc8/r9MiUolmSQgN989WY2VXOI21zjdWKwQBL+Fp2AMWBPeXMBddJ\r\ncrBMiIJTnOvde7DFeLNj4vuO2gR6SeCsrvs=\r\n=5sz9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.4.5.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0","@fluidframework/map":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0","@fluidframework/cell":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0","@fluidframework/matrix":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0","@fluidframework/counter":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0","@fluidframework/aqueduct":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0","@fluidframework/sequence":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0","@fluidframework/test-utils":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0","@fluidframework/test-drivers":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0","@fluidframework/container-loader":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0","@fluidframework/container-runtime":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0","@fluidframework/register-collection":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.1.4.5 <2.0.0-internal.2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.4000","@fluidframework/build-common":"^1.0.0","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.4.5_1667503488182_0.023205209252986192","host":"s3://npm-registry-packages"}},"2.0.0-dev.1.4.6.106135":{"name":"@fluidframework/test-version-utils","version":"2.0.0-dev.1.4.6.106135","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-dev.1.4.6.106135","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"9d6c189c18924ed2902f5e78e6f3fbdf1f630a7a","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-dev.1.4.6.106135.tgz","fileCount":58,"integrity":"sha512-1WrQuwTVY5I8z1wn3mDeYc3a4ihHXg9Nzd3bl7RCDjd+rI7R0+9Tgxz45rF0LWnOYhg29LAGKEOeyXBNFeP/5w==","signatures":[{"sig":"MEYCIQDpEGRsFEHT03SyIkLvKszCOClMiSSqAW7jxiz0Dm273AIhAKSnZHHZ42NgLIjxjAinuXI7bsfsaSi/EhkBJjHLLYfP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251275,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjZDkLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmptqg//Uo5TVGAdIXTTEP5J+A59z/Xavn1q/+ag2+fnRFeiQAmI6qKK\r\nGsgFqHTGcZa5FChFiUgDO911gxt1z+fYsu+cF2jZV8Vn4w+U7YwjDW2CsAEX\r\n1vx2JzaTXBuQ+c6zh67Mfon3imK86wlw4Jm3NPdU5vBAfBKkAEL1wyx8mPx+\r\nzgQcKnRVMPxqpL9JaLo8p6MAtuEkzyvSfS8vLRlmRVzvzHXy71yJnlvshZoq\r\ncB/NIaKfs0jdWIf0kchy08oHqoDtyvPykfi9LBcpQDZSQvRp1K+Lwog6CQEK\r\nReV4l3R1BId9rLRs+ZPIbIIcrjOPDaUYmmrqZrs4nCTnXdeNx+rF06X/jcuk\r\nxw9mo4pDlLmiiVZeoWlHNDYqw4TXz7eccsCKa+Zm5VHQPO6RdUh+wp8KBSAj\r\ntFVW7EqFiT3EBHsW1Kyaq92IyO4HWfhe+7ZGoitbxt4yQWqH7eZi0mpyAd5q\r\nCQph/wm9EIoMqdlPMBGZ9+3jjM46UvjR8o0cFCnRZWdlbQJ5bphdi0wbepeT\r\nj1seo1GbSTVIsk9ag1WG7RJZ8jKTLm5+Kaw6LBFFYA9Tg9aKdzTzALnhootO\r\nG+AJzpEseoTo8/H6JCYSwZAp9fY704xsi4ZTQLvjzgaK0VkPPEojJauItNIp\r\nsfhBU07IuHYmuk2UTTdZ4luPwzKc7GEIpCw=\r\n=Zk/5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-dev.1.4.6.106135.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"2.0.0-dev.1.4.6.106135","@fluidframework/map":"2.0.0-dev.1.4.6.106135","@fluidframework/cell":"2.0.0-dev.1.4.6.106135","@fluidframework/matrix":"2.0.0-dev.1.4.6.106135","@fluidframework/counter":"2.0.0-dev.1.4.6.106135","@fluidframework/aqueduct":"2.0.0-dev.1.4.6.106135","@fluidframework/sequence":"2.0.0-dev.1.4.6.106135","@fluidframework/test-utils":"2.0.0-dev.1.4.6.106135","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":"2.0.0-dev.1.4.6.106135","@fluidframework/test-drivers":"2.0.0-dev.1.4.6.106135","@fluidframework/core-interfaces":"2.0.0-dev.1.4.6.106135","@fluidframework/container-loader":"2.0.0-dev.1.4.6.106135","@fluidframework/mocha-test-setup":"2.0.0-dev.1.4.6.106135","@fluidframework/container-runtime":"2.0.0-dev.1.4.6.106135","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"2.0.0-dev.1.4.6.106135","@fluidframework/ordered-collection":"2.0.0-dev.1.4.6.106135","@fluidframework/register-collection":"2.0.0-dev.1.4.6.106135","@fluidframework/runtime-definitions":"2.0.0-dev.1.4.6.106135","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":"2.0.0-dev.1.4.6.106135","@fluidframework/datastore-definitions":"2.0.0-dev.1.4.6.106135","@fluidframework/test-driver-definitions":"2.0.0-dev.1.4.6.106135"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.4000","@fluidframework/build-common":"^1.0.0","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-dev.1.4.6.106135_1667512587249_0.744574007561476","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.4.6":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.4.6","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.4.6","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"f0951aff6b53e7b87eacb045846996ec5e0b235b","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.4.6.tgz","fileCount":58,"integrity":"sha512-fux4QkNiSSv7W6SdFvUk+ThivaN3InY/Z1LItRObKP5nFIBXjxuBpChJhla9C7BIDyvpIfEFjSO1bODI1pisLw==","signatures":[{"sig":"MEYCIQCymSPh2qIKRn/aTliHqdaSJcl9wpKBG8yUZL3L4FKlHAIhAM0EwzCTsMyrIfHtzI2z3RFt7Cz6vvORG2Myp7rC4+6T","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjZENFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqdQRAAlDiO73BFoCPaXaiqPj2uAwMziYUvt5xjlhTh8Kc9CRgmtNk7\r\netvJBnxShz7oH0S67PbFjX9JKZeObDJ3rynr4hNnJ9d8cq62FduXGRN2h1cL\r\neqobrlnIpBb8YWJIdiV6ExSzfCrb+6wgUydeCtlKB1jMnQrklg7240Qg1uLn\r\n0pfKZPM85II44uu0zUxmfraNmJzleo63v4Xa7N8H0A45gnYG5P0YMNRTCyH1\r\ndyh4Ie/vH0N7lsAeVWNVGS9VzdDrZUWWXgaro4NYTuDoODf9ywdlxs2kOCdJ\r\nnPhbXaJAbaeQy9aZYWFpChCrWmFtDEF0HNMviRhlxLfnOjjSx20a/SVfrfs4\r\nmHxTkW2MaAS8mLznXZ6ViQupk/ICEcYav8yE0jzjGJyVIOqDew7xmMTnPT31\r\nuxK1JgPfUi/IcJ++TCwE9UjAkHGkvacsK3OwFI0D2J6eq//BKrg8/w8EXQoU\r\ndVvgAV5w19PKwWvzsOAB5nj/X1surKjB/Mtz8zJuzchjM70DPh5uPDutj5mE\r\nz2EDVLXB534yywZB9Zrm0YzKTI1PsMJFOmkdIjk/9ulsrxAPsWimz+ghOA3c\r\ng7Xd1tBDRZAzzgsML2+X03cl/znDNwADwbsXqQsstxlTP9dHkpnmQTEw3OaQ\r\no0cEhyTFcazqlti8ShCqfqOzRpjEdzIz0LE=\r\n=ExxI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.4.6.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.0","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0","@fluidframework/map":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0","@fluidframework/cell":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0","@fluidframework/matrix":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0","@fluidframework/counter":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0","@fluidframework/aqueduct":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0","@fluidframework/sequence":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0","@fluidframework/test-utils":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0","@fluidframework/test-drivers":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0","@fluidframework/container-loader":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0","@fluidframework/container-runtime":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0","@fluidframework/register-collection":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.1.4.6 <2.0.0-internal.2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.4000","@fluidframework/build-common":"^1.0.0","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.4.6_1667515205287_0.5422284666497701","host":"s3://npm-registry-packages"}},"1.4.0-106438":{"name":"@fluidframework/test-version-utils","version":"1.4.0-106438","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.4.0-106438","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"7e68c72c6b4887b57ac4a50b1318f7598c01d220","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.4.0-106438.tgz","fileCount":53,"integrity":"sha512-1ouN35+58NNK74HxxO9f/SAxsUXm82q3XtFIP0RkQE4xqzW4b4HLPznL+f7UnAHdJqIvgMX1IJUFs/vPJMdRbw==","signatures":[{"sig":"MEYCIQCcLyvfpnD8/z2TBYjzeaqPVrqyjOmRAo9CD/on+9U7HgIhAK2NChiwDC4fdQKlYRZA4cA3MojAyYf63GPVi4ZGwhHA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201320,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjZYxAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrEWBAAn/dq14/PI/xyjkcxVsmiO9pBsgcG9vzca77fEI7vAblhaTGa\r\n8sOSFaLsXtCp4mC1kWz4VT/gv6yqXFuFNoK1LPsrsCbyS7oT/rqBckb620qy\r\nnO+M6E9yCqj5Ya2NRYkiXhAFCbYiZXAusKxiAJA8DjJKeg8CixrmOEfoInB/\r\nm6iQqeBiNVZaNIWgHk6dCOv8mz8aOTFINflFj9sc/FvECMRylc7Bjm0wZC4O\r\nCFu3MtwHAq6adhvmW86yFxWAx9zLEgc75y2t+hsGtEfJq/3QQPmBFDyV7roH\r\nz1pXb70cKre5m9ic7y4v95oU+LnpG5wMjJpxpTvCNACuW0T7D6McLhkNAOuI\r\niu1TFcknSd3nPLvN6MUb/zD0Qro+dW5BCpmWiInZvVj1Ypi0dcPTs7ulBajm\r\nBHa//CJrhFUAsXimfFsy+fHgx3AwgSzo5vhaKa1nGY9lnKtTR3bM4N+c8nnm\r\nUblUFukqlUa79evSPTTunMzkFYuwDT9ZQfFYUZSbBwMvfcJwJOSDi04PYrlu\r\nMwufJXRIiKMrl4LEawSIb6J2FVnfq7ZVkAakz4qvJctepo5VgxZF56abILjr\r\n8MWH8CAyE6NvUEjmfir8h6d8wjg8TNMWuB2biCc3l+FqJmQGqrDDsvTsD9ml\r\nv+edHxCVNEzvISIOk248huUf1fu0eBRslPo=\r\n=jJ9A\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.4.0-106438.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"1.4.0-106438","@fluidframework/map":"1.4.0-106438","@fluidframework/cell":"1.4.0-106438","@fluidframework/matrix":"1.4.0-106438","@fluidframework/counter":"1.4.0-106438","@fluidframework/aqueduct":"1.4.0-106438","@fluidframework/sequence":"1.4.0-106438","@fluidframework/test-utils":"1.4.0-106438","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"1.4.0-106438","@fluidframework/test-drivers":"1.4.0-106438","@fluidframework/core-interfaces":"1.4.0-106438","@fluidframework/container-loader":"1.4.0-106438","@fluidframework/mocha-test-setup":"1.4.0-106438","@fluidframework/container-runtime":"1.4.0-106438","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"1.4.0-106438","@fluidframework/ordered-collection":"1.4.0-106438","@fluidframework/register-collection":"1.4.0-106438","@fluidframework/runtime-definitions":"1.4.0-106438","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"1.4.0-106438","@fluidframework/datastore-definitions":"1.4.0-106438","@fluidframework/test-driver-definitions":"1.4.0-106438"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.3.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.4.0-106438_1667599424216_0.7426524601533362","host":"s3://npm-registry-packages"}},"2.0.0-internal.2.0.2":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.2.0.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.2.0.2","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"e7b9531f7c4321419837c520193afdd4cfef4701","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.2.0.2.tgz","fileCount":58,"integrity":"sha512-4kd8E695ENi5dG/oOfseJf3FXUi1X94Rzyxt9hVmJqO+g/ueQ/pdwS2pvBxONmfkrdjv7dvv8aPhYRzB15cXkQ==","signatures":[{"sig":"MEUCIQCQCXwCzvyPRLKB326YEY2wc0Aux97c+DrFXy9Ddi33FwIgHsCF5RQ858yOpQRStB1MMIBkv6gvdj91SKX9cwrX6Rs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":252090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjZZl6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrWjw//Tbn0dhVJS1K/bTC7/y+V4eDMpeloVlnmCn3FJNfkLoihcfk6\r\nFTP/z8pg23JWzwiFj+2DVF5jn0G4TIihxa4r70fS1HbdKhrTj3s56yS+N3EK\r\n8XT8eFAHn1CCgPwfquRt1gQuYQufxTFkqeqot2TYjznrNu0WF9dEh3ekIJtP\r\ntONb7+i/avrR4I2UKpY444C5HZmMY8yoetaBgt5DoNMn/VO9c/Wyy9NJXbhB\r\nLPBywXrMe3AircOA6upf4ebVkQWL+QDMCtEjvkj1saRv3HS+3vwE3koKH1Ze\r\nzc7Y4NUxdib1UU5lzj6Azul4qhcB9Zu7m5f+t/ERmHGbDw5vMR5SmuPlAc4v\r\nK5FfJ3SQLaDrKC2HfzS4YEHImuJHIKS0RBuptd+5Vrfdtahs2dzVHPfkbDCL\r\n7Yzid9RJUwtvvWQhvi2KW6IhvVQ/Zcrs2VANcqCe+hpXtU0iu+zFjIu3LczJ\r\nkmksLCIYztdyT60Gv3x3fsuFkOySZlQh/AL4Oomht/+wUs/cJMy9Lacj6EfV\r\n7ucVqrLwkfQAdEOzf0Ol02VYHrCZUXPNQ0ZrM0c5g01kD5WI9ovR//tS3J1m\r\nUsNe3g0y4Zxz1vV3f4/BxU36aTljZvCG51ZN3CX9N5iw70+WkvF5tVP0xTwQ\r\nKmnlHMQPshhYfZDxsMGlvN5PvJlQd1bPiTA=\r\n=9E87\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.2.0.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","build:compile":"npm run typetests:gen && npm run tsc && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluidframework/map":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluidframework/cell":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluidframework/matrix":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluidframework/counter":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluidframework/aqueduct":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluidframework/sequence":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluidframework/test-utils":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluidframework/test-drivers":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluidframework/container-loader":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluidframework/container-runtime":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluidframework/register-collection":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.2.0.1"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.6000","@fluidframework/build-common":"^1.0.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.2.0.2 <2.0.0-internal.3.0.0","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.2.0.2_1667602809799_0.06420076025597865","host":"s3://npm-registry-packages"}},"2.0.0-internal.2.0.3":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.2.0.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.2.0.3","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"8325cd320ecb04777af255e32c7c76cf1dc0b5d8","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.2.0.3.tgz","fileCount":58,"integrity":"sha512-sqsnomRrO4vBno5hAYpYutCbwxuS2dX7kqF8mfAxmuEW7wnOtJ8CG4//Db1cyhCbIIt0/HKH1XztJGfmHoRYcA==","signatures":[{"sig":"MEQCICuC1yT+afbsDgsRVTxgR7qe1482LEkIFigsHd4Il8QnAiBP8KBHqZSV1IUIGBDzSoMRjnfGOQdlvyuQf6CKUkCRvA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":252090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjbUeoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq6xBAAjAWxV76kN8uKMkH4x3c2sXPzPBruw/O6wyisJwbvG0LZcD0E\r\nDJhNc1rttsepnNQt9JnLSrQwPO4Tx1T9AQFIgWiQySAKr2reIkE2kzhrguyn\r\nh2BexrLPOkLyDJfI8yaBLDzEe5CpQBrnmY2rCGDWFVLfy6KHuvzKLkBrf+bu\r\nchtfBXfJgK3k4aM+DI16sFyI8w04yAk8WCcpeQ4ziKa42195JXHk+tV/5bkX\r\n3JL6eCPpN9119MOkT3hhr4UyBFNmKYWZXIIMoCBA6+YdcGwuw6r4iq2HXTes\r\n6E+ncc8W/y/GG0MbBIvlyExyY2a7zM/EDU10EqARROTrnkgg84437gw3e2yo\r\nb81AAzLamW9MtcXVSLa2ba+W4VvO2BGZ5QbuzarPSeVNaj87GA6ZpfZS7iV9\r\njjr+jrF52G6SZiDrKGQc3jh48oHbW4Bkj6Fhc+gv/R7XzDYp9S+XSU8UC1Zw\r\nT7o6xstzYLdaEbSFo/6h/7nXpv/AibcR2l/m24/UC6lPpIznxxoRs97ivgDQ\r\nISPK+7vi2jCYvp5K5ak9N38UMOLpa4iCfynX8vN+iQ2FwzNnpu7Q1q3hoFf6\r\ngyKrs2yUuTyeCRGhqyY7k50g//F4fG90AKG2jIwW1njo/rYwhmgLihVxmLs4\r\nWT6PWwHh0pcrT8hvcVXxyYNsu9XatHq7mcg=\r\n=XCN8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.2.0.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","build:compile":"npm run typetests:gen && npm run tsc && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluidframework/map":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluidframework/cell":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluidframework/matrix":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluidframework/counter":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluidframework/aqueduct":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluidframework/sequence":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluidframework/test-utils":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluidframework/test-drivers":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluidframework/container-loader":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluidframework/container-runtime":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluidframework/register-collection":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.2.0.1"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.6000","@fluidframework/build-common":"^1.0.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.2.0.3 <2.0.0-internal.3.0.0","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.2.0.3_1668106152606_0.05701222064427447","host":"s3://npm-registry-packages"}},"1.4.0-108057":{"name":"@fluidframework/test-version-utils","version":"1.4.0-108057","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.4.0-108057","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"0a07baa58a5fb5dddc9896a48cf6d141d93654dd","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.4.0-108057.tgz","fileCount":53,"integrity":"sha512-4z2hJHA66JLzb+DXJ8R0BiUWw13CgiBdfEGZL0u6ASS4XKrmJvoIMu2SAP1d/JWdcpepMHdML4iAXC1AsJQtZQ==","signatures":[{"sig":"MEYCIQDtFL5q6Ji5cbDq3JQKUBeaS1Mwf/QbD/wEVuOIWfcqcAIhAK8auy5uCi3VzK3WNPeQOr69R1mS3Nnvl7ureiN+ZCIF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201320,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjbdE4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqzdhAAmw0b9tVXFCmxwbbscxXrgvwZ3OF5stl4dYeVAkBbc5dCW4Ew\r\nmzkkF6nOSJNZtfEkDGgJdsSRgthWbpUUAx2gaaHC10Mna3kLbkfNimRQyfji\r\ncRw6xJPKCURRw8RIwMz9QIizfp58dm8SCi8KZkwlRzLRDwyqxO2pX1gydRR7\r\ncWKz3T1+Y/9wSQBrxWiJ5JJa5my1RyrpQhEpLucWdIFLk+2HLK1HtZ/uMEsp\r\nwHd7WzxKa+WX6yzl+Js/9OuPn/ZRaZSQVk7nTeBo7+dKUZgo7ng36z9Ubb7n\r\n40M2VG+5BVe8lmMHskC9+6tAjH+WD5ZXjDdvX6gDIUwM+kh1MNpNTMtuMmnF\r\n5HwJ3fyRGa21vnscyJ7WivqStQeti6qq6gwGMQVli8zmiQiuiYucmBLtl161\r\n93QRUcLIl/luSSt6tgcSg+1AOP8fIogpmWyE+it2QrgxYrov7EnL94/16u1U\r\n96SGJP4LY7qxlGt/6UvUQYKP0I7cfBTbJ25RRfvqZW4cwMUkrK17eEkPuY+s\r\nY1N/e3bBYRxAB9geTwdAV57HVdQr2o7IoMMuKOJ2B6/awcV027NSc1VAeOG1\r\nHVhQaI7sZgcznm7yZ1OFIo8nURcN6QJMBztAM1ALX/n5MYwKrNVLCtnsH4nN\r\n+fm7cI0CuxtYV+FF5PmqFR2lHXo3/l03Yks=\r\n=v7pp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.4.0-108057.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"1.4.0-108057","@fluidframework/map":"1.4.0-108057","@fluidframework/cell":"1.4.0-108057","@fluidframework/matrix":"1.4.0-108057","@fluidframework/counter":"1.4.0-108057","@fluidframework/aqueduct":"1.4.0-108057","@fluidframework/sequence":"1.4.0-108057","@fluidframework/test-utils":"1.4.0-108057","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"1.4.0-108057","@fluidframework/test-drivers":"1.4.0-108057","@fluidframework/core-interfaces":"1.4.0-108057","@fluidframework/container-loader":"1.4.0-108057","@fluidframework/mocha-test-setup":"1.4.0-108057","@fluidframework/container-runtime":"1.4.0-108057","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"1.4.0-108057","@fluidframework/ordered-collection":"1.4.0-108057","@fluidframework/register-collection":"1.4.0-108057","@fluidframework/runtime-definitions":"1.4.0-108057","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"1.4.0-108057","@fluidframework/datastore-definitions":"1.4.0-108057","@fluidframework/test-driver-definitions":"1.4.0-108057"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.3.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.4.0-108057_1668141368363_0.33550363391690197","host":"s3://npm-registry-packages"}},"1.3.1":{"name":"@fluidframework/test-version-utils","version":"1.3.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.3.1","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"414baa7e30c795999fb7211b4163345ebbfbf1ad","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.3.1.tgz","fileCount":53,"integrity":"sha512-AiellsKFCNfo4NZN95qAU56od++HAtbwRvSiqBkKwn/lYM9f4pvtKrU5ITcE1X2VuMwlUHpxSvCG00cl1ohCEA==","signatures":[{"sig":"MEUCIQDYq+T5EI5fBh5zK4k4iCu8PG1qlbd8v+yxOik7+reLAAIgHB7Hx2Q95+em7Ble9SQ9gW1bxg6gCsFS41FT4FLkYQ0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201157,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjbrJUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr/mg//bCLu6VSHQTBhnULLfHZVxQV3TOZw9JHHC0gyuSjGaOSFg43O\r\nTBbXOux4Gn3D4zRCrCtf8Eo1WZ1nmy3Scuc/iGNf0gbiXXQwmT7wvcgFxVMS\r\nHFDM9+AfLyPBfaGYffhS0hVIjux8IWWYbk80bdWm8isYL92mLk+4aH+Rx73z\r\n+7abWS49R7IhOry76xg4K0QOOrY777Go7WMj5R8sy8xBecA5eyiWjIE3mnId\r\ngfJiufBqYw3nMZLGltdt2xDfVbXShL+TNl10Bfgj0/WmhLWaYwv5ncd8V4KP\r\ntLcPnmtkk2SgClwbxEp1OcUWSprUo8JxY+5lF7EzrYgui4PoSulabuTE1jlU\r\n5LYDecOmi0jq7qzyoFzrDOfZGz8VmgFTzR6UrLc3RsnW+4yyPdNPwf34qt/H\r\nx+Cx2AAPSidFZrf4wxgwLwiYqhbCDAb70GSZL4d/8zrSXxl8jwxW4aJnZMdl\r\nSBdSORp6NsKM+kLJikccmL1bd5pOsHwp3B1VXfVX5INMlgz7hGqvv8e+Uo5Z\r\n7XIcCqi6gqfPstotjJvSt45nzl0OfzWMQmgyDxyuU7SzoHTVyng7PxLT2tRD\r\nhrjOfGUdv3y2xJP9mDC/XL407gyPO5jRHl3vkJp7JYUNbpaUPRg3C7IfeTuC\r\ntuRVXz0EtwWs3/KmTkVKjU/6UzTbyPFYLks=\r\n=OL9M\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.3.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.3.1","@fluidframework/map":"^1.3.1","@fluidframework/cell":"^1.3.1","@fluidframework/matrix":"^1.3.1","@fluidframework/counter":"^1.3.1","@fluidframework/aqueduct":"^1.3.1","@fluidframework/sequence":"^1.3.1","@fluidframework/test-utils":"^1.3.1","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^1.3.1","@fluidframework/test-drivers":"^1.3.1","@fluidframework/core-interfaces":"^1.3.1","@fluidframework/container-loader":"^1.3.1","@fluidframework/mocha-test-setup":"^1.3.1","@fluidframework/container-runtime":"^1.3.1","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.3.1","@fluidframework/ordered-collection":"^1.3.1","@fluidframework/register-collection":"^1.3.1","@fluidframework/runtime-definitions":"^1.3.1","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.3.1","@fluidframework/datastore-definitions":"^1.3.1","@fluidframework/test-driver-definitions":"^1.3.1"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"1.3.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.3.1_1668198995984_0.9182468558566113","host":"s3://npm-registry-packages"}},"2.0.0-internal.2.1.0":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.2.1.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.2.1.0","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"5f994660ad264ed921bda4e385bd9a0ca9155bf2","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.2.1.0.tgz","fileCount":58,"integrity":"sha512-EECkN6Rb7YZL26X3Yd7vowQ88RIvfGiBmxx13PRTuk/Lko8oVlOxfof0TL01HLM9ZnSAlDOxAU2a9qV4wQVZpw==","signatures":[{"sig":"MEYCIQDC+hKFnK4/OpBbAmvAyvTeaFRAz838j+zSdh2JUJNQiAIhAJitu1LkyNba/I+yPfp/+brqT38x+/Jz9zO5+6GTf6J+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267745,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjcpOZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmppXQ//XMdnNg0hSbN5nPMAF1wtU29osNlQm7wgoX0r2SMVh+ZT7PLe\r\nsaRFBMfgflWpxrF0M+sXtwH+DCjlJSAzMGvlEiMI0C689rfBUpkVX9dQBtY1\r\nRa2mjwVsQr32XgcscixYS2+dMOwa/hZQWWH6PEotIoaYpLQn1ZD9MUAjUErw\r\nj11bru8pSBAfbBZM5UFxqtxROaW7r6du/hM1jkXNehFXO4NS0elNK/A18IdY\r\nu0YWwli+cmPRH5nXZagrHYdTHYBmizz66Qw304bMmXRHMJ/ejvwWjyznMM1m\r\n3HZqlqHyPtQCho+L/iw3svFI5ncaSDQGAefYA3rMtbhDLf1wl7ppxHl9ALC3\r\nDN9Yanqwz/UylWL+D0oNQqsHTNZs9pHZDbeBo8oBOA5dPTldp5lNlVflMfe5\r\n5+NW6tNfh3HSuP4ZDBad+tMtvN6Zym9okesjq1LChPgTfWQyq27/imfnmcTO\r\ndY8ZJOE6Wjv+XAup1O8mIQSVgM9eBE3Eegdxy9dWlO7YtdH1qtt9en8c+dhm\r\nsVaLdz4F/dyLRoKqy3VGdizeREXnKgnVeuWQYKUo4YwS485Y6jcvn/WvrfS6\r\nALlGHtpMaBhr9TEb7ZRGku9TsBzwz+ORR+H8NE0sUbBaQLy2NGo8wafb9qtu\r\nqD9LyZ76KNx/rgTIec/WX1KAXrql30X58HM=\r\n=yP47\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.2.1.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluidframework/map":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluidframework/cell":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluidframework/matrix":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluidframework/counter":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluidframework/aqueduct":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluidframework/sequence":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluidframework/test-utils":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluidframework/test-drivers":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluidframework/container-loader":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluidframework/container-runtime":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluidframework/register-collection":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.2.1.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@fluid-tools/build-cli":"^0.5.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.5.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.2.1.0 <2.0.0-internal.3.0.0","@fluidframework/eslint-config-fluid":"^1.1.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.2.1.0_1668453273357_0.5190503589422946","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.4.7":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.4.7","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.4.7","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"da5fb7726f1c2c12fa5bc02a6eba1324d5c02a7f","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.4.7.tgz","fileCount":58,"integrity":"sha512-trjJLK48Z765fYrOBGcGLcXcsEb16I89BvWDnGMYWRruMjNatnoCYVUhlYOJBNKEGinC9/lvY2pduJeOiAo/7Q==","signatures":[{"sig":"MEUCIBFqMIZ5HDjEgzdFOPaExms3rIGqYwt0DWz1cs0O+IFcAiEAneePCioTI7jEHa62XurKcDM03sL0kZnacAXbi6UEa9o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJje9Y3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp5nQ//XrT2rFBZfrX5z9BwSu9sCZQ/akTBaym7SIoHfHh/4i9Rl2HW\r\n2XYNem/qF7tBs/7Df4YPvUzJsAn/+vgKMEg8u0P5Fsm9p2zucSjSiDy8mV/7\r\nWEy6ldIA59QsWhiYwbL6DtbzwuEit6ZdzjAJ4EbtnzeWJ4JjVtrW/YN06IvG\r\n50JoQ1bDYaqC/EpWELKGK2f4MzMMSxLAfLv16zPQCsKUWt/kmca4AvFJMxS/\r\nmTqdmzEJwXVWs1mG+2rCMBAC0P7na9GhTds48DjNY7s4MXmV6SqlWbsVPzOc\r\n1M21FpTzp6zfKXKXFEzeyksGAtp1Yuehccyfyd7vp3R2cj+s+E5jqHcH+CuN\r\napEGkhpmblfB+t274kvHDbO7+Xz78XbmtZurBYP5GWghQntpSOEITWilIoXE\r\nnBF/mN/6+j7ZOZX7fUZtl8GYApX/HATuOz9CO318gbZ87ta+SrFcDIn0cZ50\r\nONoddGfWQL7oaU1XhKwymRJWL60v1CrBsZQzcChPlsV4NvD6P8KPI4oyfgVT\r\nM2tPG8OEMA9DGWAvd15PQzdkVgxHudLDvf+QovJsgfj3JKWiyUe31jtbsBkC\r\n+s4mWThvuaHcsd9cvmlFXfC8F24W7gk2gN4LQtLmIAYoeSTvwWiIc8XZNgDY\r\nCkGb52qGNcNK/ujeRqOtk3iGXY5Ugu/kT3Y=\r\n=W05O\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.4.7.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0","@fluidframework/map":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0","@fluidframework/cell":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0","@fluidframework/matrix":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0","@fluidframework/counter":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0","@fluidframework/aqueduct":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0","@fluidframework/sequence":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0","@fluidframework/test-utils":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0","@fluidframework/test-drivers":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0","@fluidframework/container-loader":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0","@fluidframework/container-runtime":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0","@fluidframework/register-collection":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.1.4.7 <2.0.0-internal.2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.4000","@fluidframework/build-common":"^1.0.0","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.4.7_1669060151232_0.2953175567278232","host":"s3://npm-registry-packages"}},"2.0.0-internal.2.0.4":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.2.0.4","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.2.0.4","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"a69e29bedde7d2f60dca463c3638656797fcba6a","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.2.0.4.tgz","fileCount":58,"integrity":"sha512-lo9xOlzbMPSvRNCRsxeh9EE3AGGjRTDi3Cxm3UnVYWNJjCB+I5bh5cIZFVjuvK4GFSGw5zW0pssUmspNiQWCrQ==","signatures":[{"sig":"MEYCIQCaT7gOeyq2N+1j2BbELbdXzjJEoPAaYJ8iZxjZSIWXqQIhAOr236ZtNK9kbBm/CspgjtWDX5OKS4fHxl0KnS8G8UNL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":252090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjfAPoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq+4A//a9Rp0iEoG5hI9pDLlvoaG44RzI+vuYqOUhzVE4hsL+rymXp9\r\ny7xd2P2CHuc5G3ayKOC2SWKlJ2zRoKewpe0Ry1iduRStBAzopiqJSKS4URIQ\r\nbI52+pMnndJhTSqSF6Ch6lCcdY0fTdj5nbIe/BXRxDiXz+bASQbED6gXGOPp\r\n/IaJAUip8DJDOVrmz5Jy9QwS4JIZpvXe704p/WuWafNNdMQJpIYZdDjwhwHf\r\nyTHfMZqmv4mnnJZck6XrU4T3E5QAXC0G0F2GS34A1mWfceyuCQxTnkmjVcVu\r\n80W4v0nHJ+C3kSnAETvqcIIlG+8xqolBgWlq9nnIFLkVGRfnE67PPX/0nILV\r\nEFjW/8A1obKHVlagT3dNVT8cAfM6Z1X3/q8646s82RIHq4ZOTRX+j+Acm1lL\r\nR09CaB5/XT8zlzTk9YmjA/G6/e59iISwiOANh2XiBOb/1feymDv2ZhnAsX5z\r\nFQN17GReT9yjx1+lQYxw/txM2H+jxUxHLJQbaMlK1pFflJarlsrT3zyTjq5T\r\ndx/r6MbbCthSfIslXbm0MAu763Fwk8Sh8I6h3c6+5GjwA2eDy5U2myKkDhoi\r\nyms12oZGOXC2Gz1VwW2b80ou74/GLDMnlK9LuLx+X29b5vZhoFCvnLEoyBug\r\nC98tZdJ0CUFTyL9fOxalkGMIqTTFkfmM5+Q=\r\n=c97K\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.2.0.4.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","build:compile":"npm run typetests:gen && npm run tsc && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluidframework/map":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluidframework/cell":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluidframework/matrix":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluidframework/counter":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluidframework/aqueduct":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluidframework/sequence":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluidframework/test-utils":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluidframework/test-drivers":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluidframework/container-loader":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluidframework/container-runtime":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluidframework/register-collection":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.2.0.1"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.6000","@fluidframework/build-common":"^1.0.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.2.0.4 <2.0.0-internal.3.0.0","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.2.0.4_1669071848636_0.7599400774128386","host":"s3://npm-registry-packages"}},"2.0.0-internal.2.1.1":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.2.1.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.2.1.1","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"88d21d8d7264f021caf8a83dcc5a224ee7a56c76","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.2.1.1.tgz","fileCount":58,"integrity":"sha512-C/BnBwe1miFCKlSxTB/flk7g91rQo0Zn70zK3GQCkYcZfHPtLdP/7CVSewZiKccRO5euZJaRtXSGJBY/PFHpIw==","signatures":[{"sig":"MEUCIQCcSmG1yOxqBBg2/ub5riA67ayq1biUe5YtdWMG1Vx4PAIgTae4lO2Syqv9fP90yZaHCbHJV8sI+2WBYyrefubTM3Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267745,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjfASFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr/WA/7By/TcCzy1EaLACZDm5Nuv78M9c1WsjAmiZEzOR6x1CrhkIHf\r\nrZjkjcE3D+mUDSspYBgnIBa27s40IS7D8Kg0EF4Dmma1+zgCXNIl1hNbUKqP\r\nKZxVzD3KRXeLETDBY1l+UGoDgRt3vlKhBSZ3N2J7OSBxVKN5MGi4NhEQBRRL\r\nBWgj9liDhNjOCTjjTeI0+p+HKWAaRs3se2KnWDfoT5R5lsF5LqvnegLbuddc\r\nGOhZdm+jjD0MFB6R2f/GCbe7RwdVTxSOg0Ks9YZINZnSMgxGDACUKie/dcI4\r\nLBy8TGWSElIPy4/8MBC/zSeDFC/4AvxksCJHyTNuTv/86ueE0R88eswGf1d3\r\n3EIVaOegVBM6ZyPcRNdong3un46pYF3X+ApcgeTzUKu0ouB6qBnXIhZXOjXy\r\nCrLFH7/HnT+RObhsaEEVOFO7VONVso6Pf2A6Nq+bvSsWCEXn25Vr3RNqej4k\r\npBAzfQ26QcrUI95HLCBO/80AfFLgR6E6SrmXimvazp6SNeUI/NWl2bxxEQ5l\r\n7PLZUxoGZOt+bVYzLoDoFlpIgbxQaBQuj26uqGAHj3Zbo/8I6weiZsWvtAWk\r\nZsKg+Qnef/NzPncuFk8n4FeQ7ec2/aktbVNss/10K+/o28Dr55WBarCyefgX\r\nL62yeBovt9nu6z0KPUaKoZp9V73L49hzF1k=\r\n=E2jU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.2.1.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-validator -g -d .","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluidframework/map":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluidframework/cell":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluidframework/matrix":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluidframework/counter":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluidframework/aqueduct":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluidframework/sequence":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluidframework/test-utils":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluidframework/test-drivers":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluidframework/container-loader":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluidframework/container-runtime":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluidframework/register-collection":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.2.1.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@fluid-tools/build-cli":"^0.5.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.5.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.2.1.1 <2.0.0-internal.3.0.0","@fluidframework/eslint-config-fluid":"^1.1.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.2.1.1_1669072005243_0.5242936094963053","host":"s3://npm-registry-packages"}},"2.0.0-dev.2.2.0.111723":{"name":"@fluidframework/test-version-utils","version":"2.0.0-dev.2.2.0.111723","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-dev.2.2.0.111723","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"241ec82001cbcc55cf6d836d20cb21b63063d667","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-dev.2.2.0.111723.tgz","fileCount":64,"integrity":"sha512-AT2VCBuaU14NOR38R6UC6Gr9KnAt5ttLcwWsMwfvrq6pHar7+nuhtg4zyJomjCp7t77/qLjTvU0Ky+iuSU1Zjg==","signatures":[{"sig":"MEUCIEwMJFsGNJ4lfpH/RpzCqtc0aDWDwhKTQ5hXJSMJQCDhAiEA76RMOZP57e2jRXSAdV5cSwouBeGX/SWGFZUypcecDtQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":295583,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjhNQ2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpichAAmlIw/gnthSjXvSIsk0PQta/wU61hWuYIbMscTFPUTYfi0wpF\r\nveJaMAsisYPKTYj6DTdBC5JiVZNLsXXawGuXelnpv01sSuVIWB5tJlidhJpq\r\nsb/7AA6rhUr9g62VYPBal7SB1vufb3NAPc1QKPV2Vg4Gufhzntj8cLBNnAhn\r\nSNj0LdYQ0uMtDVq4i+3f8OJOsQabadXmWBPrzF/KdHWWD002RDaUXcuX6K6Q\r\nlDMy7faKJKr4VEANh7m/3yMKSAhuBUgFpIfgjWmpjAd13MhYi28b/q5HNm3x\r\n8hQJbiutu0GuhznABJFUZpP6RRxd/dTuGc7/NTjbpFnNHXRIp07bOSPDBGOk\r\noQx5qSbYVsJU+lTLPsC6PRtYRpb9gXA9rXQTXSTeIRwd84kXc2Ar7D9aIGeS\r\na5p5Rp2a5ZO5oULJWurQ/PSO6TCkf0n5V+9A9ASzwhDyap92xFokFQ3ziDO4\r\nekXZ7732SpABqsvcQwKtDJl67ZVF223OXEJPv4FgUIFPwBeyNnVBGcnvWr7y\r\nLWVKArewB4jbsBjIeZIYkeLVk7x6M7pOMW6IaqSMtjib3FEJla4EtTF5pL+v\r\nGhd5i4QuGurbdH0HPrwoYrFgcxpSsvPF8CcC2ZUaD+56vCLlZzza/b+k976p\r\nLcx2jfNaZnyut9jaBH7y3kvfMOLotREUs1w=\r\n=Mwf8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-dev.2.2.0.111723.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluidframework/map":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluidframework/cell":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluidframework/matrix":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluidframework/counter":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluidframework/aqueduct":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluidframework/sequence":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluidframework/test-utils":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluidframework/test-drivers":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluidframework/core-interfaces":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluidframework/container-loader":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluidframework/container-runtime":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluidframework/ordered-collection":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluidframework/register-collection":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluidframework/runtime-definitions":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluidframework/datastore-definitions":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluidframework/test-driver-definitions":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.2.2.0","baselineRange":">=2.0.0-internal.2.1.0 <2.0.0-internal.2.2.0","baselineVersion":"2.0.0-internal.2.1.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@fluid-tools/build-cli":"^0.6.0-109663","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.6.0-109663","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-dev.2.2.0.111723 <2.0.0-dev.3.0.0","@fluidframework/eslint-config-fluid":"^1.2.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-dev.2.2.0.111723_1669649462094_0.08052286594636615","host":"s3://npm-registry-packages"}},"1.4.0-111997":{"name":"@fluidframework/test-version-utils","version":"1.4.0-111997","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.4.0-111997","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"3d2d9c1e87ac44c5d4a00609c932b6f8bf924728","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.4.0-111997.tgz","fileCount":53,"integrity":"sha512-8EoZ7SvKv1fwlWqNlyCxFDIn+DyT1qAaGCdcAmTbsJEeDxv8vw0kLzpuW5yWaXFdWTFWOxZqD+Ii9gSFI539pQ==","signatures":[{"sig":"MEUCIAkwL68zGSy7SXp+KpO6CJec3CT0jckSbJB8D2aM2MFWAiEAknZ7FHXQ0Qfhq3MvhffEsjR1g+3zfcMBkBuGMx0p3hc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201320,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjhiGZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqH7Q//ayEA9aq9YuIr0ujL4B1xg7ZmfDFBJwUYVla9UGybd2/pvvSC\r\na5HU3ek2xTv5DFg4nsDFi1EYgcT9aYDTPOl5U0K9v12EZH3zKOSMRgc3hJfc\r\narLjP051R7OWqW07P8aisC5IwTMUsnK2v5IL8Soq9GFum+HWekDBLrJvZo4/\r\npeOzXUKygNf2lNLcfU/8RiKetyDfXBwuNDkCmwFsBDTUe03VdRPmBYnJ4ALb\r\n/+vWSBoDMFJqbB8QCphiyf+6+jvABF18D+2EpaWhbtOyj+1fu0Ivtd3TfDec\r\ndgbbA5/MeVJkuoIeDN/C64QXbfAsWzhWBqb00RbTVIm7iWc2b04eRZF8LzE6\r\n6qSstanVUUR5RsiX+y82CsNpylCeKbwSzp5NW1fdQQ8fMR6oizb4EWjs/R8c\r\nmyWmZNyq07xS8mlh6aamTiH/i1SiPgnDB0gPF63Dzq6BU1Dxf2Tyac6Zyd9I\r\nxp6VAC6tHKDWiGggbh1/ySw4Out7SImZOxpKsmyscqEkAsha1ydVH3B6Occ7\r\nG+N7HLbLTnNVK/wzWgjB827nCHO5/ErRlx0yGE7zWq6z0ozEXzd5GbQBoVsb\r\nqgOiOjjoZNGZIRAn/9TaVmtxCWBEWVFXy8M3BHrShRsxQXkHLltb9x3+3EnO\r\nJxV+moGoFVRq26/GSLOxWRfpfPIiVFVZ4fc=\r\n=InEE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.4.0-111997.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"1.4.0-111997","@fluidframework/map":"1.4.0-111997","@fluidframework/cell":"1.4.0-111997","@fluidframework/matrix":"1.4.0-111997","@fluidframework/counter":"1.4.0-111997","@fluidframework/aqueduct":"1.4.0-111997","@fluidframework/sequence":"1.4.0-111997","@fluidframework/test-utils":"1.4.0-111997","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"1.4.0-111997","@fluidframework/test-drivers":"1.4.0-111997","@fluidframework/core-interfaces":"1.4.0-111997","@fluidframework/container-loader":"1.4.0-111997","@fluidframework/mocha-test-setup":"1.4.0-111997","@fluidframework/container-runtime":"1.4.0-111997","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"1.4.0-111997","@fluidframework/ordered-collection":"1.4.0-111997","@fluidframework/register-collection":"1.4.0-111997","@fluidframework/runtime-definitions":"1.4.0-111997","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"1.4.0-111997","@fluidframework/datastore-definitions":"1.4.0-111997","@fluidframework/test-driver-definitions":"1.4.0-111997"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.3.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.4.0-111997_1669734809703_0.24982243419430716","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.4.8":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.4.8","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.4.8","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"b7ecc0a788b8f4b978e6c2ff613f06438fc29d31","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.4.8.tgz","fileCount":58,"integrity":"sha512-frLmGlkg9T9c5OYyf2CiFmCyb+86bbQ7lwOZvQv1lM8jCBPmUn+UzCik93oaNeAjcMCFvCWozWB806xDyHgY0g==","signatures":[{"sig":"MEQCIHdQdd2UOGSscD2nzftZ+46aZUfEw6o+P6RkEFm2rzC/AiAPJQturWxbGsNMavTdCvW7xOMGE4c27/i5t3rm4H1fCw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjiUczACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmom/BAAnx2zTCxvhliaa6J4SjT8iVp3MSJQLpK25vWnA6BUQCAEF/6T\r\nE9Trs6GbtdETMwSIkjM2++hQMXhwuDM7A1eZMC4SwOKvcNO4pscwBf/VLz4L\r\ndc33gzneqczXuQUiCJgoXVTlgQOaGA87Pi7rPxGsnzsehBE4t8gCDtocT0Zd\r\nBDzbJU9gdvIg7HiyA8dIb5w5hoNmWkxm3oJjjv9z4YzDB2Wz8vLOqIFWRDLE\r\npx17R0l5K0e8/J/J/lBjIP7oicag5daLFaiTRkQ1e0fKS/OUMicPnhqNh+5L\r\nKl905dsh4kKSpSOI1vlTDBfpadxNhNUjKAxCPum2t8vnQFL/EHjB63EC2T7E\r\nxQNF3/iFER3rvxMSNeEFEXOJvsYMOhYkWHpfX799LFInfx4aAf2LWCvagO9/\r\nEu6BdEWWRedA8queaXL4o0TmcOEo3gySsSr+euE8U/OuEG04j0h1eLlJNdnU\r\nMuZ4MDloou2zsKzy4SYoMfPp9xkshZ3pyOvSgD05U4z48FQ/Ee6r4IVsZd7X\r\nqQwxaGP4OdLwP/Ev34B9Zk+VlL5Ws64fvXWipggnpg4a0cYkKlVp/NuMHMUi\r\nt9eHRidZDmBRv9lmuNeDRWFjmpjBsf31VjHx8N1vOxhoeoPSBYXrlzfuuKh6\r\n7RXxzpuwE4PkPDD3wLiQZGPlG/jrl99QfXk=\r\n=Ae4u\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.4.8.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0","@fluidframework/map":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0","@fluidframework/cell":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0","@fluidframework/matrix":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0","@fluidframework/counter":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0","@fluidframework/aqueduct":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0","@fluidframework/sequence":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0","@fluidframework/test-utils":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0","@fluidframework/test-drivers":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0","@fluidframework/container-loader":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0","@fluidframework/container-runtime":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0","@fluidframework/register-collection":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.1.4.8 <2.0.0-internal.2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.4000","@fluidframework/build-common":"^1.0.0","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.4.8_1669941043499_0.13316640942488744","host":"s3://npm-registry-packages"}},"2.0.0-internal.2.1.2":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.2.1.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.2.1.2","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"151453fc0580442a1006d498a7fb73c7a8f693c3","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.2.1.2.tgz","fileCount":58,"integrity":"sha512-NN5rJzta8xCG2Ce9YpRwYXBG+PgIoF5trJW7LK8a8+s+JCsuYBL8vfglqWczQ8DjGWPZTnAxMt7FR8X/kgcBwQ==","signatures":[{"sig":"MEUCIQC6jOogVyK6cwu4aiQ1Yis5/7ong81lHmuwaVG9NjPtPwIgAI5iqnSeGMnSelRSdAGyu98xK77B+5av60FMfu6DPTA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267910,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjiUiXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq+Ew//VViQnVMsp7ixuR5bNr32M3uEautILoa8XW3PpiVI2L/yUbFj\r\neKtcEKST6EFPxP8Eaz22VEUvw8jd2JiyVkd/DQw3gh2PBrPjB+Jf06eLwgKO\r\njh35+WWmfFQtm+tecIMOOw1f/gRsU4/lIz5j0dTJ3KnMwW9Bvzsono8IuRCa\r\ndmndeT98QCQPjoIC1kwcacOq/OubDWzr65i6TeWDoUpY/9yHEt7VY4N3UKRP\r\n53Z57rS7NCDgRFRgnpZc/Pl5n35m2HZIk0sFIi9GaUrqQav98Xxyw4yvlRz4\r\n1G5gDBTCf+C76m8yS9sqnVPnq0sdohtgiWkav50ypC8ygKmlDElgnXHoKWRM\r\nZsLCKryhs7cGEEQpRLPyUs7P5vH69B8Ma2isXwVh1mHx0LCydXxe1zU/jZI+\r\nZHhiiaN3Kvh29TkH7m/Y48OmYHx5A4Uu62SM2b1Xnxjyirb3mfrPAicDcgit\r\nSmQefHrl8SV69noRyQAncS9GZ4o0NVf4JtFLEXk+vj928dZsW40wcZI3egwU\r\nCO3JHELJCmX06ftv3xL63vnplfzMsRjDUltdFDPU3z1pSxT/D6jkEWfrAQvG\r\n/kxVK2/WlAeZ8BZXiXN5zlQ6ZEqHifv6TyioBcbEI+8uUOVHFU/qhPXwW5Ra\r\nnH0Y1Ny3t2IoMp+5+Ji3n7f64BvmJLuPovI=\r\n=Q+P2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.2.1.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluidframework/map":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluidframework/cell":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluidframework/matrix":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluidframework/counter":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluidframework/aqueduct":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluidframework/sequence":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluidframework/test-utils":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluidframework/test-drivers":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluidframework/container-loader":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluidframework/container-runtime":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluidframework/register-collection":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.2.1.2","baselineRange":"2.0.0-internal.2.1.1"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@fluid-tools/build-cli":"^0.6.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.6.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.2.1.2 <2.0.0-internal.3.0.0","@fluidframework/eslint-config-fluid":"^1.2.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.2.1.2_1669941399270_0.9901143700450474","host":"s3://npm-registry-packages"}},"1.3.2-112998":{"name":"@fluidframework/test-version-utils","version":"1.3.2-112998","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.3.2-112998","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"ede6dad00d680fb04c93f4537f0098d9390af3bc","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.3.2-112998.tgz","fileCount":53,"integrity":"sha512-cUPF/MHKlVc5oQVwNs54psclCQmKmPDj5qWLGQeQoPd8l/G3bgHfxSa0U/M2o21svvuMVux35YcfhYmKzvuMmQ==","signatures":[{"sig":"MEUCIQDfwM28ELJxpaO6yN7nOFw5wMWNqV3v6tHrAacQG8KDKwIgXGFFChamSbpku7ipA8PtbKgJLKo+cdA0iSRG0jE/QFg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201327,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjiU/9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmriug/+PV0Y0z9gUjdqkP8kzN0hhVH9uJ3g4IZiKiCFuV98aUhvK0d1\r\n0KUhrjDuww5BeoIliD/WOc79li0L3Fg6GIprNnKAScjoZXDf52ecmtKYZ/5y\r\na8uqVHpxzwIt8QumEQRr3Q4qwxCpuqncyqj52Sb4Bunjc0GBV8EvmykLkbwD\r\n7xdKoZKlyi+xjNH4hfRIaC6dvoHAOvVotK6ouLxHtdTcxtaELlU1TH3MDKvo\r\nJGNGX/vKZLcA2oR0IHZWCtv/DdD4BpWEOsmMngO0lSSjItZx+PT3axvZUEWS\r\nz7ZFleRdLfy9a8/gcxkozYWlm1ndZ5Xa5z4lW1zOJbmx83EvMrA42hSWbtAL\r\nqG8nYJ64zIxMXzwWHWYxXKBptn7FijuCJHtmA+Q+Qvb6n7dqNgEQZC5oP7Eg\r\nvJvLCPNtQ9c2OStvOaKr/kOef+ptUcqcolekNlHzlbuLBbtRWVn+JCcMzUbt\r\nuyPxkN8x6KQ4CrNULLWmvcbD8pnsKJMMeHQ27H6NlBCpCDEBQdKkEd/EHuau\r\ncvIq3zPkYKYzS91w2cGin4gEJeQdIr353AssvVQEQlLKlCUYUqVAHoCmHTXs\r\nncty53UBsFWT2arfpFPv+OrJ+VseDLclOweGH3muP21NesjSbdDX7FaIkBmx\r\nLV4dfX37VjlTC/DSHbs/hKwShLNg7B2thF4=\r\n=Vxiu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.3.2-112998.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"1.3.2-112998","@fluidframework/map":"1.3.2-112998","@fluidframework/cell":"1.3.2-112998","@fluidframework/matrix":"1.3.2-112998","@fluidframework/counter":"1.3.2-112998","@fluidframework/aqueduct":"1.3.2-112998","@fluidframework/sequence":"1.3.2-112998","@fluidframework/test-utils":"1.3.2-112998","@fluidframework/common-utils":"^0.32.2-112764","@fluidframework/driver-utils":"1.3.2-112998","@fluidframework/test-drivers":"1.3.2-112998","@fluidframework/core-interfaces":"1.3.2-112998","@fluidframework/container-loader":"1.3.2-112998","@fluidframework/mocha-test-setup":"1.3.2-112998","@fluidframework/container-runtime":"1.3.2-112998","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"1.3.2-112998","@fluidframework/ordered-collection":"1.3.2-112998","@fluidframework/register-collection":"1.3.2-112998","@fluidframework/runtime-definitions":"1.3.2-112998","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"1.3.2-112998","@fluidframework/datastore-definitions":"1.3.2-112998","@fluidframework/test-driver-definitions":"1.3.2-112998"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.3.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.3.2-112998_1669943293255_0.014059776386875056","host":"s3://npm-registry-packages"}},"2.0.0-internal.2.2.0":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.2.2.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.2.2.0","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"0ed927261390ebd74c8b33be6284047e907bc248","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.2.2.0.tgz","fileCount":64,"integrity":"sha512-pc6+OdalaX+qmLcTtf+QfZxmqln8xG5yjAsb8goWDnOFk1dsxEtxx9E8m6jj8mmFNa+/vUAQHsNtJJUYOWtd3Q==","signatures":[{"sig":"MEYCIQDuurqsQsW8Ith8Tvd2pNaEgwQCvVAlIxldCBI8tlzZ6QIhALU3JVBo/ggzFiBNqqD3smKdudszFz2ZSizIzXI81e5t","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":295668,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjk5AxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq/8Q/+OXTYuiQ1YGqPeGJjEYcqHJJCvyap9HfdM1GmRq/0l5EonWgP\r\nuFCVfCPkEjo8j10P/1G1tlueDppDe4HDSX4laDyKISbpDNy9FexInA5gt8UB\r\nvvkPy9U2/81UrWhpRy7TbVZBDTMh1xChyeOOVFw+OpFtOI63Ppt+IURXe3d9\r\nNpDX6h+cjwJlPYAfUHsCajJm8TuvkW3tUmJwAAnWjYrfZsQuSqH14yR3jYqU\r\nOL7ST8i3wTlM5lYtwR06FgxKY5mUuLzep4UafbWC7G44OaIFoBgD5v39kjPY\r\npQHzhZDqO0WmYW4O08bYW3zfBQKq/XgQJ3Zi9RUI35zf/ogeHh1vFzVqRiCS\r\nE4F0vv0qtWUkVVD8Py/RzKzOWqsVuk3KkPPr3a4/410ZnI4imdUwNl3DfR3H\r\naxqeeB0ZBl9fmx/TnY6HGvfn8XNuLq47F2spZc4hkNe3DOQ/GjE1kll9WIS7\r\n/UnQYSY1uYtceoFeu5zEiBQU+MbqjAim3JDxl+xkehy4B8WFV7Y4j8dWO9JV\r\nxd8B3gj+tSl5WWvsb9FB6vqgKZNGRsDgM2knAaLWgq9+38AUbGMlPzZlYR1U\r\nrRGcPCzMIV4n49n7n2SPy5+kp5p+8Lgbhpx+3t5u6YD7vGGFK1hmpDPmWjry\r\nyHUZVmALJ71eGGV4tTB4YfbJVFUK2Tgd73A=\r\n=PcxX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.2.2.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.1","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluidframework/map":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluidframework/cell":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluidframework/matrix":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluidframework/counter":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluidframework/aqueduct":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluidframework/sequence":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluidframework/test-utils":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluidframework/test-drivers":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluidframework/container-loader":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluidframework/container-runtime":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluidframework/register-collection":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.2.2.0","baselineRange":">=2.0.0-internal.2.1.0 <2.0.0-internal.2.2.0","baselineVersion":"2.0.0-internal.2.1.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@fluid-tools/build-cli":"^0.7.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.7.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.2.2.0 <2.0.0-internal.3.0.0","@fluidframework/eslint-config-fluid":"^1.2.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.2.2.0_1670615089013_0.389013534531238","host":"s3://npm-registry-packages"}},"2.0.0-dev.2.3.0.115467":{"name":"@fluidframework/test-version-utils","version":"2.0.0-dev.2.3.0.115467","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-dev.2.3.0.115467","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"980229508220ba66fa5b949756d0c62d118a5743","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-dev.2.3.0.115467.tgz","fileCount":64,"integrity":"sha512-FIG9FQGFYO3SwhYmw6kkqdHggd1r3vnDSb1M/uYyB7mXfIWDyy+YTGe2nZEDHI1hgRVU9MzVCd3kdj+nBf7MGA==","signatures":[{"sig":"MEUCIBMH811dnZDeWKOm8DUDkslX1rRVj6/MqenuNQ8sMAI1AiEAiH05IGNiv9KQSFdGWr6rPHe3o3Tm9yIXORsQ/bNYxgM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":298350,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjmQfKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoD5A/9Ga/nz26mv0o73GoweTSqyc2rvJuqLDIeoO34NmYBp6778Lrj\r\neg33QqwlkHs8iU3zKzAe9B4ehdcfARU0y3w+PPpWTVfHosNXSYS9r3bXQrgV\r\n7tYFYVMF/eGN8CnAWn1pPoXoL2e7NOqTNzdwDX2zx5zA84xCE66SdW3AP818\r\nrUK71UyRX9CjP4uBthGXqPUpWP97z3X71cnyadeNB5NDP+S11r779lmILzYw\r\nbwyrIiiD7e+lUrvw7hD11AsCgvqTtAt9cjHzdsGQZrD2HnkJ2f6h234hpVgP\r\nbs03GoGWPvUfJ6I5qX3zBMfOzZpKt3dcJ6TH0HGdJoZiGik8stZSZFXACkVB\r\neXmIlG5ug2U1v/N2JGbkOzp3SN3TxI5hbf4Ckdt9quitCP7Ni/pr7f4/VGpk\r\nGwinF051ipCSM+2sRArvxXmmZFchH6hQUTyzlaqHCubB2GArlXJjXJ4cmsTb\r\n78LcdgP/8MV3XRrubZ4PldULYEoevhoDVTI1ZkGfPFMiQi5mSfiN7S04jcpV\r\nSnebzbjqKjjffdu3JnSlSGCzoXWSpylFuIGS3ltxqtKYKQIvHaZGQWwVyt82\r\nXy6zb9vm25PHMyfdL8AKEisUQL+cHTZaoGMv6Zp9c6sg51nHqu6oDQKKTLjt\r\nX8TEE6lP+SAzRfH/pzChXiSA+3O7QpcP/qA=\r\n=1IGF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-dev.2.3.0.115467.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.2","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluidframework/map":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluidframework/cell":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluidframework/matrix":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluidframework/counter":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluidframework/aqueduct":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluidframework/sequence":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluidframework/test-utils":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluidframework/test-drivers":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluidframework/core-interfaces":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluidframework/container-loader":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluidframework/container-runtime":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluidframework/ordered-collection":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluidframework/register-collection":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluidframework/runtime-definitions":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluidframework/datastore-definitions":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluidframework/test-driver-definitions":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.2.3.0","baselineRange":">=2.0.0-internal.2.2.0 <2.0.0-internal.2.3.0","baselineVersion":"2.0.0-internal.2.2.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@fluid-tools/build-cli":"^0.7.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.7.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-dev.2.3.0.115467 <2.0.0-dev.3.0.0","@fluidframework/eslint-config-fluid":"^1.2.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-dev.2.3.0.115467_1670973385945_0.40778348342595705","host":"s3://npm-registry-packages"}},"1.4.0-115997":{"name":"@fluidframework/test-version-utils","version":"1.4.0-115997","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.4.0-115997","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"e593d5bad967e6a81c816d58fea4a1424461bba2","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.4.0-115997.tgz","fileCount":53,"integrity":"sha512-57syoSqvxprkUROJxyicvRkkk930vQPeE/6aUjJ1CSTHxbCWNvMCcabBPTTS+ksB7oWVoQQyeXgJ+T9oolxhdw==","signatures":[{"sig":"MEUCIHgJIrfh4yvaYic1CW8YR1Zua9+OXUbCbu8OFeeSMP2cAiEA4dq5sFjTe5XlgSHTf0ELuUtdeUp6liwkIBLJ2MdTAa8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjm2gxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrA2A/+J2FSe+zZj5pr5yIS1tWohHtp/4AicH5yu4jpHc0SjvRFneae\r\nlakXwm9unJq3zjKuL1juezn3k1rXMijZuy62ablt6r3TlAoYryP7ncj0bGXD\r\nH8XWR5oA5UQv+z2ZbrYaBxDF3uGZokb3fOkoLyXUZrdMOQ4aiom+hXHjWuF5\r\nc92lL028v77wS0gsVXJFQ+6gGL3qq49zHfhmt6Co8D2QP5onqLZiWuuay3X2\r\nlq+FaGurlR7EHCSJinZW8CJCGrFOHNsh4fbPnJwjqibv3mWwqfdTaP0hKKIi\r\nIs6FG5t2QslmIogjaCBJlCbC/7CZRqWvcu+Oj/esD3jwDjOpAY6nwpKQWqtr\r\n7KrYvpbG9IPfvaJPu7IeU6HCVSf0aFPKpz85Iw5ephkCVlFEvCNYwtmSklDc\r\nkZV0o5ed9h0tmozcgMjx3CAFdU37p7jizpMyCpZY35nSgbqWLRw9fU8cH7w2\r\nyUa6R0hdqcxMX4y3mwFgLxiBsOrF837jx4SnAzcAnzi86awWb7Kos8sUUCui\r\n6cmqNbGzmLVcwJ33K4C85zuF2tYUKgFv0OG0l00Kv7q3zOLIuqYvkySETPsB\r\nA4uBGp0ns49AyRak6H4OwqjZ3xF0Web0ouY/XUfD6JElZgMc5XJ2AqR+o9Gk\r\nR5Zk5ltXdzB8C+tBTxb2ScEOnP+0Qrs4EfY=\r\n=KPo+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.4.0-115997.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","typetests:gen":"flub generate typetests --generate --dir . --no-generateInName","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.2","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"1.4.0-115997","@fluidframework/map":"1.4.0-115997","@fluidframework/cell":"1.4.0-115997","@fluidframework/matrix":"1.4.0-115997","@fluidframework/counter":"1.4.0-115997","@fluidframework/aqueduct":"1.4.0-115997","@fluidframework/sequence":"1.4.0-115997","@fluidframework/test-utils":"1.4.0-115997","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"1.4.0-115997","@fluidframework/test-drivers":"1.4.0-115997","@fluidframework/core-interfaces":"1.4.0-115997","@fluidframework/container-loader":"1.4.0-115997","@fluidframework/mocha-test-setup":"1.4.0-115997","@fluidframework/container-runtime":"1.4.0-115997","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"1.4.0-115997","@fluidframework/ordered-collection":"1.4.0-115997","@fluidframework/register-collection":"1.4.0-115997","@fluidframework/runtime-definitions":"1.4.0-115997","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"1.4.0-115997","@fluidframework/datastore-definitions":"1.4.0-115997","@fluidframework/test-driver-definitions":"1.4.0-115997"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.4.0","baselineRange":"~1.3.0","baselineVersion":"1.3.1"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.6.0-110101","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.4.0-115997_1671129137109_0.08909855798896982","host":"s3://npm-registry-packages"}},"2.0.0-internal.2.2.1":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.2.2.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.2.2.1","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"01dbc46698ff57a4187f5a268844630088e7ff54","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.2.2.1.tgz","fileCount":64,"integrity":"sha512-9YOrKNwT8dhONEF5ZqVDydryO+AtUjrK65d0bw+QU+HEvm/o3GIEt4dojNGM5zoz6/wn5YbnxCNWnfbkjnp+7g==","signatures":[{"sig":"MEQCIB7yyLIBHl4++P4LBx399g888fM91O5pX2IvebXpd3LMAiBIkLXwFNFDVNKepmzhnNiiIbX4Y0mORdEgU++nlBYA9Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":298335,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjuMlfACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrKWw//eSSeNOigVQPf+R7yla8uqsX5ZTfK065vJXfcHvCDun/FB/S5\r\nGx3W3h9DXsGMYmw+D541oti9Ixr/eMai3ZMDtVYZCKN75M0M6KsgWhZARBKo\r\nFYpRBJyTtwGBvJwQuz6ph6vym8K1wqhTQtPvBPhzESozcozVD/CYX87mpleA\r\n8nQxBgConTl+sIXYRu09kv+i+togdQE1ozO6eP05kFvzsiVuoN3M/BeH+vLI\r\ntoae1Hs3xspZx4akwQ6gIzEY1Y60zdjeJSaXVVFKMPp9I6TMxB8piDozEuUC\r\nRsVHIeC0KTc3sIuMB6TAAB5bRVJ/Wft9tY4EGzjG6vXBsUAn1Jq8lrDHQqXx\r\nFAocNXWetVrM85LWOnAqyCk2sY+t2x4QtXrwiHzWcTql2mWh4h3DhrFGjvCB\r\nK6ktrEPfMzRC423xXRs/S9XxMrNeB9ngZn+pBkzAo8+kXbHCARz2zx1iMQKX\r\n6gvvRfuFmFCW4XTJUSRug7tVmkXcXjvQYrbp1kQWvaAzuBtM24CTch7gw5Ca\r\nKSNvqowXivIcYNAK2XSbXv+xhRpFuMMHCEiDlfbuD+U2795lcODgPJDh8OAT\r\nbOq1UxIhS8RwnXu2UnZfhahLyKFt3uVTlONcAdH28juuHYDdR3Jz2bOk8N61\r\nXcPTfY0ujk1GJidCKnuuPfXtQljSSXgFHwM=\r\n=yA4l\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.2.2.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.2","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluidframework/map":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluidframework/cell":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluidframework/matrix":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluidframework/counter":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluidframework/aqueduct":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluidframework/sequence":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluidframework/test-utils":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluidframework/test-drivers":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluidframework/container-loader":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluidframework/container-runtime":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluidframework/register-collection":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.2.2.0","baselineRange":"2.0.0-internal.2.2.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@fluid-tools/build-cli":"^0.7.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.7.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.2.2.1 <2.0.0-internal.3.0.0","@fluidframework/eslint-config-fluid":"^1.2.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.2.2.1_1673054558901_0.32133856893814294","host":"s3://npm-registry-packages"}},"1.3.3":{"name":"@fluidframework/test-version-utils","version":"1.3.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.3.3","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"d75b3b901d0bbe12d9977ecfb37200a0c0ef43d9","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.3.3.tgz","fileCount":53,"integrity":"sha512-MHy8QR2Gg16qblwpc+1Fg5ztEKGGUliwyprd9/c4ImgptsJBi/Tzxs9pb+pDhWQznpiCqITcrwQj9KRnDr1+Pw==","signatures":[{"sig":"MEUCIE7jQ5WJwcqK55EWsVP3RoQbjnIubO3QTijDAsB9RfhqAiEArkfHzSCy5hbbjnuWyUltxZJvfhDb/s+Uo+jgSaVK/vc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201157,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjwF27ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoPVw//SOMFY4au/uvgl+hy1IbjWWnKx4ZAlx/D3wxJy771xlFP2kDx\r\nB7RlwThsj8lJn2nUwVtT9qNHFmapPqxIAKKB6ktoceOeZTf8Qhe68MPzgRIX\r\n8UOtRUh/zepmGex38Jj6OdABx+WWwsb7I/am0G0+NcRCgkzxuTksbE5B6TeU\r\n9+ScwWZBrON2L7aAuWY9ogWLSFOSjH9DuzZre4NddkzpB9af88/l/Q6PvZqz\r\n1OjTrtFpq0fIj6BPXA5DkS9aW/Uo2S/4zd/L3xRLqYOSBFgQXd5VbX6Y6fkx\r\niuNzOwaXyZVzH5QSqmzQwj71UMqXXY6HvxcfofDY5l8cYUp8A5iYt4zXpBKt\r\nW7lxlCp7gzRANS1IGScgS9d8O/XHO0sqhVa2nxF4Ctp+0VBh9w+CNBa777O3\r\ncxs9oMPJCIiWPYWAnh7b1m+MPV8EangRRW97zP1+DkEjBIVIngpRx7lc0vZ+\r\nxFrdDzbi7dQ4nRdJh6obUM0A8zbqj12Ou88FzFn52IDkzu5s9GrcUf8GHalv\r\ne6L4XzA3UxEZZyYAeW9WIEKe2cqhgeaRKDg7yv2FHjWN2nvn8gLw6oRpR1xi\r\n5L4dxfEz/ttbb3E84J3hDtyF9SK9iLQzeSqL7DmeturrbUGNBaiKbmIRzpvL\r\nG+lgOQOehz34yMyWRysmqkjXs7snsdKjErk=\r\n=XaoV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.3.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.2","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.3.3","@fluidframework/map":"^1.3.3","@fluidframework/cell":"^1.3.3","@fluidframework/matrix":"^1.3.3","@fluidframework/counter":"^1.3.3","@fluidframework/aqueduct":"^1.3.3","@fluidframework/sequence":"^1.3.3","@fluidframework/test-utils":"^1.3.3","@fluidframework/common-utils":"^0.32.2","@fluidframework/driver-utils":"^1.3.3","@fluidframework/test-drivers":"^1.3.3","@fluidframework/core-interfaces":"^1.3.3","@fluidframework/container-loader":"^1.3.3","@fluidframework/mocha-test-setup":"^1.3.3","@fluidframework/container-runtime":"^1.3.3","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.3.3","@fluidframework/ordered-collection":"^1.3.3","@fluidframework/register-collection":"^1.3.3","@fluidframework/runtime-definitions":"^1.3.3","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.3.3","@fluidframework/datastore-definitions":"^1.3.3","@fluidframework/test-driver-definitions":"^1.3.3"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"1.3.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.3.3_1673551291664_0.03416331652147808","host":"s3://npm-registry-packages"}},"2.0.0-internal.2.3.0":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.2.3.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.2.3.0","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"03c9317fa94f5deced7cca96f4bf3218453d5867","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.2.3.0.tgz","fileCount":64,"integrity":"sha512-ZyQGq9EwYqjiIhdUWsCdfsuTNJ0WF/1Qa/61rbfrcWxG7vkLeIBq10w8ZaNf2FX2p96q8P2hd02PT1NzrUseKQ==","signatures":[{"sig":"MEQCIE396eA56BSmZAFmTrjcl8UXU9EYl/MzdtoO66X3hJ5xAiATvO048KJ8Xvp9ikDwFH+TN/PSL4cplqM0ln6bhUSKAg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":298294,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjx06IACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr/dxAAgAmpXUZBUc/DmePPBWVbnjNFp4AHXzVL5wj0yK9gPCKy8QZb\r\n+pJb+RU1J74bi8yQlsHcMO3/c72JAdC/hoqv0CqF1lU+YAl1NIQR8Bj0ccZJ\r\nCmp6Ip0iWemG521Wkl8rA5VNYo9aJFXGsMad6bu9tyQrD/hvfkAZSKk5dSTt\r\nP/mS3M4RynEiQ3tPsX6Vwh77UoozmAjQQ5SwmKf+AyyjtGibi/wxAoHuJFif\r\nZDvet7jiFU9RIli3MyV7riEMdSInZpbrxNmxykOabo2E5o4WBG5co9vHIYuC\r\nvA9CXWBVMVA0bjGivxYWyl1ADpSOY7lKQMh/uE17LAYAUy8y9608hlo+CZZV\r\nIMsV5JrLOSLLkwJzAMvcdJMdT/E2JlDSv4JYTxP6ClSVZ2DNAWu0fAQoPpw7\r\naXKy0dvMlht+WMWHCPbAbceGFSs/6/ZsIdD1PCRSfwPctf+IxQGc0WDOj10G\r\nmwRC8GFiI1in/Fkps2bKRwr61xopFAaoMxMaAaWaIyUnghLT9/yKI+1k50AC\r\nJZnoDOUF+USxx6daGes85Ps62Xue7xRzOwz+rRj61s3WPADnc5NqER/u5qj/\r\nMVjxd6/xqrnO+SbjfkvLsvxwgaprLGmEcXJokzxqVpybmm/tItm63+UOYcGG\r\nN6m4Nl0KaRSWFapG+ztewuuocmPIRh2KfFI=\r\n=uTzb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.2.3.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.2","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluidframework/map":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluidframework/cell":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluidframework/matrix":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluidframework/counter":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluidframework/aqueduct":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluidframework/sequence":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluidframework/test-utils":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluidframework/test-drivers":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluidframework/container-loader":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluidframework/container-runtime":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluidframework/register-collection":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.2.3.0","baselineRange":">=2.0.0-internal.2.2.0 <2.0.0-internal.2.3.0","baselineVersion":"2.0.0-internal.2.2.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@fluid-tools/build-cli":"^0.7.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.7.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.2.3.0 <2.0.0-internal.3.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.2.3.0_1674006151880_0.4528760765801505","host":"s3://npm-registry-packages"}},"1.4.0-121020":{"name":"@fluidframework/test-version-utils","version":"1.4.0-121020","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.4.0-121020","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"505ca56e1f834b48a763c8196bdfd6765a6ffaf6","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.4.0-121020.tgz","fileCount":53,"integrity":"sha512-6JbC4aFRV6SWfxcmD/IvkkJ+Ib+IprxBC/WM3CbGCv5pGYzf5ERuKTu1S7CrEPj8igSQbPPUbCk/IWjSyBrtBA==","signatures":[{"sig":"MEYCIQDVINzYqQ6eHBzMbbnOrysRAhs8gq0N9z2x3j7vK2+bYAIhAJ5qNS7suSV1kLaqU5yUBf0Hs+DSmCWcGKPXpmxrx8uv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjx069ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoqYw//VqktzpGzLUPzZZRb8oxgmb53bxk6zTP6kvXLt4QdnTOOMuvc\r\nsBPOPQ4T/KTuwslxWmfMcw+TD8cBFgAWx32yUJRQjloefeLFZyToo4VjB873\r\n6SrC6BrBHDFvKM3xn3GAj6rFBNS9PmluLOmUdHSNsffXxU0TZlVLqCt8egbv\r\neZDMK5coOWkgWRXRglvtZvl60s1xirzkdCElztFQZMOp9YhCAo6rIiyhpnNq\r\naIKHVfXhmHhhdrXQdRA3NaKEkcEJ7p/hENHwIL1KgdyLxMGi1Xl071faZMug\r\n4pbTIdEdNdwXkfE+9rbRWG1iREtksyG4lTnC1+2ZORY+s7ZTYe3R2zZQSKS5\r\nRlqUd3j3F105Xwo97B33qx1F+zl/yYBHkYAIaYaiyZHILYESK/BCxppYIeXr\r\nHvD+YtEZUsfVQdVbStzMI32bYfCAr/na4rLlXe/Q2Ylx7Xe/RMutRcmTR9Tz\r\nblbKpXu2/DEXlRdtnXBGIy0YMUJnFE4FUhiuj86Escp6UUUmQQiDHYDZHK+E\r\n7Bl8VjX2A4SsZbfpEocLjOjWHGkSxSt2nCdhY3TAjr3a4wPFZuRAHu7gu7VY\r\nSMElgTNeG2IURffk85ExV6hh1DM1GrpVOp460nLuTLf4QoSgScDf9L4hYjuD\r\niU3MVOBlkgDEzhccBs5yh45b8jZGhHPl4U4=\r\n=XPdX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.4.0-121020.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","typetests:gen":"flub generate typetests --generate --dir . --no-generateInName","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.2","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"1.4.0-121020","@fluidframework/map":"1.4.0-121020","@fluidframework/cell":"1.4.0-121020","@fluidframework/matrix":"1.4.0-121020","@fluidframework/counter":"1.4.0-121020","@fluidframework/aqueduct":"1.4.0-121020","@fluidframework/sequence":"1.4.0-121020","@fluidframework/test-utils":"1.4.0-121020","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"1.4.0-121020","@fluidframework/test-drivers":"1.4.0-121020","@fluidframework/core-interfaces":"1.4.0-121020","@fluidframework/container-loader":"1.4.0-121020","@fluidframework/mocha-test-setup":"1.4.0-121020","@fluidframework/container-runtime":"1.4.0-121020","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"1.4.0-121020","@fluidframework/ordered-collection":"1.4.0-121020","@fluidframework/register-collection":"1.4.0-121020","@fluidframework/runtime-definitions":"1.4.0-121020","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"1.4.0-121020","@fluidframework/datastore-definitions":"1.4.0-121020","@fluidframework/test-driver-definitions":"1.4.0-121020"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.4.0","baselineRange":"~1.3.0","baselineVersion":"1.3.1"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.6.0-110101","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.4.0-121020_1674006205473_0.9827759544443004","host":"s3://npm-registry-packages"}},"1.3.4":{"name":"@fluidframework/test-version-utils","version":"1.3.4","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.3.4","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"0772a3cea1d0c8261999e95495ce3267315e3d43","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.3.4.tgz","fileCount":53,"integrity":"sha512-9yUE2kViCw3erH8h0JMmkFkyRogeRImLX2LWoIOnOEmwjRtvOZmuFfu88pM9Rx7r7i/Vxqa+TRPDIgyM50SgSw==","signatures":[{"sig":"MEUCIQDOx1eGJWy1tmAQ1aaoQBYp0ZVz923VaDZSzARo3BeuLAIgHsM1O5bmJGKlmXd25Fh6pclx0yMRs3lDSEzP2fZHtmI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201157,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjyEbwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp7zQ//WDb8SA9+aEsvVnk8cZqPQH/4ROQZyVI7CCoAlRPypmg2GOrQ\r\nVRFXppDa5s/uXcmuF0DSOcq43CXS1j3bOVcUyZw6l7csKnWoGHowHEQUzB04\r\n32K7eoJkR3wcB0J0A0+n+lx6eITZ3hWWQ1YmPGqqALyKI2HYSKFEYhIx+SrT\r\nn0HddGdT7WoEryfRwRzQNOdF27TUIGJyDkh+yUo2GwfZJoYITTDKOaMHqUSU\r\n9A425QbOb7rKKDX+ikDACe9d/s3uUO60nx+hDf0fyeGt7xMw7WN8bgaHxEOS\r\n9qZTs0W9X08CXOPVoltzWAPZ82daeD31PKPS5n8r4ND6i8knx0QnbrvGlkfH\r\nk4AIwbeMwHWjn4UIjjcUZo0jwNNlgw6ngWQ1T6Y/29TK7l/3rMwEcfw7cd5c\r\n2Tc2Jsh+X4Scv2kcMI9tdBsm/Vsmgxm5dhrNE9lyqGYuJ5+KaFHomoZ0z/sA\r\nnrHufnFtmKP0H0I6l60dncOt/1pV17cWO2hJpeU33Egcc1xTCUi4tLmaTFEQ\r\nN1AR9rwLLQkpC4+5/OGql/oFSbedyuqR7xyjup/l0BPw4TE4zjmb6PcHO9b5\r\nRxrec7bp6/rgrLMqCjnu5v76V7VcUqBgQImpZpsR0MEH94NuKn1hyMP5O0Rv\r\nzuz594BP0VdcWO/l24BQaY9Ak8KEtOVCUbQ=\r\n=6nAO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.3.4.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.2","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.3.4","@fluidframework/map":"^1.3.4","@fluidframework/cell":"^1.3.4","@fluidframework/matrix":"^1.3.4","@fluidframework/counter":"^1.3.4","@fluidframework/aqueduct":"^1.3.4","@fluidframework/sequence":"^1.3.4","@fluidframework/test-utils":"^1.3.4","@fluidframework/common-utils":"^0.32.2","@fluidframework/driver-utils":"^1.3.4","@fluidframework/test-drivers":"^1.3.4","@fluidframework/core-interfaces":"^1.3.4","@fluidframework/container-loader":"^1.3.4","@fluidframework/mocha-test-setup":"^1.3.4","@fluidframework/container-runtime":"^1.3.4","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.3.4","@fluidframework/ordered-collection":"^1.3.4","@fluidframework/register-collection":"^1.3.4","@fluidframework/runtime-definitions":"^1.3.4","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.3.4","@fluidframework/datastore-definitions":"^1.3.4","@fluidframework/test-driver-definitions":"^1.3.4"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"1.3.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.3.4_1674069744697_0.790645134284661","host":"s3://npm-registry-packages"}},"1.3.5-121405":{"name":"@fluidframework/test-version-utils","version":"1.3.5-121405","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.3.5-121405","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"4b055bae99f7c431b2197240ebce5e197a1cb533","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.3.5-121405.tgz","fileCount":53,"integrity":"sha512-A5+MXcnmhcUJbZzCvqTP1DlybuBh1kGhTFFiOK8L8IR/Z1H1Ph1A5hr7BIGkTLFjNf/GcIWEaDdM+8sPQ7zJcw==","signatures":[{"sig":"MEQCIF4cmKUw2tW7xvJBwk9DHcgBU7yqdaCW2JspO2RDRAm5AiAV/7FMySDVCTefRzIg4x4y6x5F08ViEAoVEA2HFjt30Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201320,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjyIvpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrHAw//dbqJ0OtuTe/NQthgsIxNDgZR10uZxMACcny+oBrdp35DTuBY\r\ncYaw+f7zoMvRIEezJ0l7Dd1rCYgptnj4tZVa1Xd5qn7KCDKu2t1mkqDZP+31\r\nsjj+2NGCi3wjqSJVtymcClGYaK0F7hBeLHHxSJpZKq1y2YokjjzyxmSDdLGe\r\nSWGP07/Bp5uzyCN6ncHLusStEEWpQE6UDCjpJLjznxQbBWnq3JUhoQdHcpeM\r\nUeIWFbeISdMbKMXwVX2VI3gi905nglkV0cBxzgaCoXNrEVDIYeSrsL9qwYgY\r\nm4NHz7e3ls3p712vUDfLRb7WaT9bYQ1m7dzloG7iDVkdmbxxfx+caz4XSTxT\r\nN/aZh7NzCspxaqur78jqnNDsF2ENMghwA90fqyqlzgOH+ucvLcjqfdzpS4kh\r\n/h0XjkNnNjyi3DqklBOSnQpyoYe1piORanjxbc5SWvXC9QaMAD8P7HvPPIKX\r\n/mIn4SMk+3nLETGpQadzXy78qUEQc7IiNoELIOqvwMHlh9qmnAqoKLHx4VPT\r\neIoo6D7KPYs68QHBWJ+7M7KhHB+uwH/DsQtwFBSgB7D8im1C5i/LEhQfpDd3\r\nSug18zjaN3uEJp3XteT/acEH7pliKt/N9Egm1t6Ckb+sUaBboOWFf23taiB9\r\nUoajRXDrnBw1u7XqQRqA5W8a5wgbRe6IXz8=\r\n=ObEq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.3.5-121405.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.2","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"1.3.5-121405","@fluidframework/map":"1.3.5-121405","@fluidframework/cell":"1.3.5-121405","@fluidframework/matrix":"1.3.5-121405","@fluidframework/counter":"1.3.5-121405","@fluidframework/aqueduct":"1.3.5-121405","@fluidframework/sequence":"1.3.5-121405","@fluidframework/test-utils":"1.3.5-121405","@fluidframework/common-utils":"^0.32.2","@fluidframework/driver-utils":"1.3.5-121405","@fluidframework/test-drivers":"1.3.5-121405","@fluidframework/core-interfaces":"1.3.5-121405","@fluidframework/container-loader":"1.3.5-121405","@fluidframework/mocha-test-setup":"1.3.5-121405","@fluidframework/container-runtime":"1.3.5-121405","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"1.3.5-121405","@fluidframework/ordered-collection":"1.3.5-121405","@fluidframework/register-collection":"1.3.5-121405","@fluidframework/runtime-definitions":"1.3.5-121405","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"1.3.5-121405","@fluidframework/datastore-definitions":"1.3.5-121405","@fluidframework/test-driver-definitions":"1.3.5-121405"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.3.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.3.5-121405_1674087400823_0.6551613162722207","host":"s3://npm-registry-packages"}},"2.0.0-internal.1.4.9":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.1.4.9","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.1.4.9","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"543c83856e88edf489553d88d8dd4c9ae9a74bc4","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.1.4.9.tgz","fileCount":58,"integrity":"sha512-hXF69HKmbzapWsKUpMcVlWKeUisHX13/xvu4TBtWgRU/bJARbp8OtcAtVK8u28IE0bpphubo8PYBj/UzL/CpdA==","signatures":[{"sig":"MEQCIC8Hxpf+KcotUXgmd+7LYhQmWCt3qCB7e6p+noFZ02euAiA9/Hbb0dqWKV8II8OT5n9wPRTQOKTRUdZgzxJAvWsxiQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjyIzAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmokKRAAh6MgT1gjDmY+odM6C4lJxwMVvgR4J466wIf6/HmDTR8KRW2v\r\nmUponHBLTnXvoPoW6uzE9xdBSYYfmgZvk3tWvRPmhxgC160x8FLnFlpkk+zS\r\n4Jn6jTIjSUVHZ6AnMfx2xTAchHXjFSvnZTsZDJbyEPd06/1wu4aXtUM57pms\r\nd8eCH6oFwrf9s74C+zlva0X11RLC/71w8mvFIE6BIiYRbb1QsbA9XvkVlM6R\r\nnOfC/j+qZPd50X0G3vFzXb5EFzzqy59Agwc4aHEpN2TXWyjxbtSgIHD9YNJq\r\nu3gsRsqS2LzUvWdWBOtzpR+jrMpiMB+pMNBoqBhRAYo7jFbl3XGc5GX8wv/1\r\nizQ+6c4Ra9bMV5HQQEB2u7HUSJtdkt4xgIoluW+WWI+cAtXH6aEb1amhQHFL\r\nYWU4NxboW95JW5NO+Mrrw5+54RkaV1epW3h21/ddm5+yzOC4hvpqU9ZUAhx/\r\nOuYcObSql6LPKSm2qFRi8CON4pO7B7t9+bHv2KRNw5btG4JQc/KpjcD/3bzN\r\n0mn2txaJxDhT01jfv6up81PCJxmZAFcexT+tkusGXBy7hMLlcdL8NqLm3Loz\r\nXQZIzVwwmYFxpr+LPBpXFGFZJ51UYJCP46l1VMvw66D71XjeacQ42vwXxanj\r\nWk9hCWYApDqnUyNbHoPztDXiTmPXxE8xGX8=\r\n=Nb0s\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.1.4.9.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.2","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0","@fluidframework/map":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0","@fluidframework/cell":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0","@fluidframework/matrix":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0","@fluidframework/counter":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0","@fluidframework/aqueduct":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0","@fluidframework/sequence":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0","@fluidframework/test-utils":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0","@fluidframework/test-drivers":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0","@fluidframework/container-loader":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0","@fluidframework/container-runtime":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0","@fluidframework/register-collection":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0","@fluidframework/protocol-definitions":"^1.0.0","@fluidframework/container-definitions":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.1.4.9 <2.0.0-internal.2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{"InterfaceDeclaration_ITestDataObject":{"forwardCompat":false}},"version":"2.0.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.4.4000","@fluidframework/build-common":"^1.0.0","@fluidframework/eslint-config-fluid":"^1.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.1.4.9_1674087616176_0.4053509643096542","host":"s3://npm-registry-packages"}},"2.0.0-internal.2.3.1":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.2.3.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.2.3.1","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"40344f3ac56971e9397dc5d5025179d7aad2313e","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.2.3.1.tgz","fileCount":64,"integrity":"sha512-sQIOOFpxy8O2kaCliW9beBVqZkBu34bSX9STZ4R0ozfuX7ccrRVi0APCe2bPVHlrGf4QbRhnmhq6vFFeK+aIIA==","signatures":[{"sig":"MEUCIQDbSq8i0v6HMG9DSAygNF0Xl9wbaa7tlkvxfTklYDZZawIgDWQNm1Xd/pvn/XKd5MVa7iV8wGnrl/7Y1qj6lqfe0Ko=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":298223,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjyvjYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr9Rw//ZZ0UEjfcMtC+MJLmp+gtwOF+dJwv4OPo1XCO02St14v3X3pD\r\nxd+ECZLAtD694IVGzAfwjRXlHKtvlCVBDqnz0jGwwtBaJlVm6u7OtGWKVN7R\r\nx6u+9E1JVYZCKXyXUEhFu606J5YL+2Oij8gLba0y6aVSw1WzaN+4SB0U8NKd\r\nNV28DFtSg8GKZvUr6c+tKJAD79ZpE1VJxvsQHfTrn9UDaawxq90I8b2lAmb7\r\nDj8Fm9lYMDZpgSfs+GQDEuOr1YDBxEVv03NV6136+DcIx9xMAnESKp3lFC7s\r\nDmtcWbaeCccAwV7r/UihpqNH3+1BG9wkMg78OvRqRqAZXHlQLf7eQktefBZU\r\nvCer/G8JsX7UUJ8HKGgHh2vezxGcrl1F+kgdaU+SoBoS1ItWQ+UPn/Y8+ltJ\r\nnZCCou/FvoM0bFLIn6UPQUZQGlKx7mqkGCG5DVTqJ2cjguYbDkpSMBLorXJv\r\n9xSZX42wECvXqv3Ncvi23IQLfCUNi2fQi/xfpNQdm+tVKotaVcRuOi6rgvCT\r\nL7ZPG/NvB154d+0C1BIo7QDA7ha2uDY2WuudHbgx/xH5DOIpOFJ9RPKAcaMO\r\nbiDkKR0vK0ewRF/KgeZ8h02TkBwl9zH+r8Vd/TTZwGrFCQ1J9L9EIiTABoNd\r\nEi3+y7eoaDEro9rSz6fv6/aJktP/CB8AsOQ=\r\n=UZAD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.2.3.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.2","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluidframework/map":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluidframework/cell":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluidframework/matrix":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluidframework/counter":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluidframework/aqueduct":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluidframework/sequence":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluidframework/test-utils":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluidframework/test-drivers":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluidframework/container-loader":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluidframework/container-runtime":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluidframework/register-collection":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.2.3.1","baselineRange":"2.0.0-internal.2.3.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@fluid-tools/build-cli":"^0.7.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.7.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.2.3.1 <2.0.0-internal.3.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.2.3.1_1674246360262_0.9691247484580383","host":"s3://npm-registry-packages"}},"2.0.0-internal.2.4.0":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.2.4.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.2.4.0","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"d0928d42eba454cdac42acebeeefd9717fc54f98","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.2.4.0.tgz","fileCount":64,"integrity":"sha512-C3Alg8q5Uf6IQYsFQMI2DmZfrcZquOnyoTE4xftRXDr4sEqqaiEpbBYJX1nv22acFOFLHryRUcEQrfXSlnce/A==","signatures":[{"sig":"MEUCIQD6617bmZOSI6Vc/857aHY7BFqDTOlWeohgAanATyhqWwIgBYIhihdico2NB4ggLRv8ZqDL5V+Ix9cAwcvgoZI94vw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":299328,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0atPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq2Rg/9Hq4MM/fp6e0Jy9RJjg4iyE3+c10X2yANHcvv8GdGabbuWaFj\r\nBw7HEzzj9b5Fs7cPMNqx6qktWwJtAD528tSeP7SL/Lvm9calnv7siI/PPoad\r\nMqkMfAH1OIWT6CyMOpdurhrZwOo/sKUxJcTIMSF2JAGFQ7EsHMy/LfJQ+LkV\r\nCpUXTB2m7THhIPsrzKAGn2FB8vqLtDnE4zcYIahvo8HgPQ3sEz/ogSApsnIn\r\nK7gFDO7ZAl2uifQpzJCGa4K71yrwY0mXYu6z5Oez5OKmxVcPUPCe86v4i+6M\r\ne2Q4j3S45etAwEsISVBfZPtP7t1CEpHVkPkZ/jYQeFD4gR7FFea/vh+Z+0EW\r\nSnmgBdUDHpa3kjUDh0SrFLERv9rMxyU5Fx4lAdQu0wedrf0fbz6FzEvs3xUJ\r\nbvjIqrvmM0pmnhlfDXaT1k3b1VyD0VoPavNpbZIBKyKxfZzRWsT91m8wIdMJ\r\nRgPzYxbKbQNUi31/ReX6grLt2amtZ+oYfeyPGakW4UnshVTiPM6UOFtR389q\r\ny8Iwv+ZRw/2o6hJYP4/V6FbUYO8oeBehNDnNUz8dDdtgHitooSwgjwZQbZr7\r\nerxdened7krpQSfEP2q5KotYQPjTx7l071Fa9p03ntSABSevZOLLubyRAteN\r\nTfaGg0+/TXkyTB21qZLunEWfXxJXVY5ENAI=\r\n=2V3L\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.2.4.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.2","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/map":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/cell":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/matrix":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/counter":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/aqueduct":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/sequence":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/attributor":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/test-utils":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/test-drivers":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/container-loader":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/container-runtime":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/register-collection":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.2.3.0","baselineRange":">=2.0.0-internal.2.2.0 <2.0.0-internal.2.3.0","baselineVersion":"2.0.0-internal.2.2.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.8.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.8.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.2.4.0 <2.0.0-internal.3.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.2.4.0_1674685263041_0.013436286249790985","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.0.0":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.0.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.0.0","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"e9464658160e88c502cd6d31107a225607738d56","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.0.0.tgz","fileCount":64,"integrity":"sha512-TNQPRrLIDWGknVJ+ZWUp63e79nUW5RKuIePT+PQidsBDpUGtBmQ1/I1NmhjQ2cwQx7riqGHu0ecA29u2FcSMMg==","signatures":[{"sig":"MEUCIF4sxeJAUcjewsiTY7sBXcC6pWsoPhI9Y/XoNgRlHPn+AiEAuMfg+Pd3ZzI12ppxqrjuR93kVLU8J2d51tcc+pINo0Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":299693,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj1IMQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrR9w//cj6Csor9bM/yyoyfppLDj12fp/jhm3sF/L3+4+OByGEgFZuP\r\nGWL6wwvcw1xkWr5aU7DpkHkbalEIbLGFSkrGeSWc6py7nKlnRDLfW1baFOjZ\r\nu+tYj3J+DhGOsYbLtArps7+kzJXWqelsdKfBdwAV+Hfwc0f3YN++LMPli3Nm\r\n5iP7SbuEbYk6MRmiIacR9hTskfyEz9GW0A/mB62Vpf8bl2Z0lqF2TMOr1FdO\r\nkbpBdvPk6daeiDZjU6+BUREB9vp26TzXEPDZuFzUUDDSvfPdO4Hwrt4go5cj\r\nYno6P9TZRMbBqE0aXICq7UOOOeR8J8uUPgvV+g27QlHCavzP43nZ/y7OSpp1\r\ncDccibLuCbQpmhU/BoQizy50kLEtLxlKbU6jw+hb6kBuqHGXzKmy5Es9/JsE\r\nn3wTJ20D2mNuiTiKqHB0t+AoJz3XOjX2PT0YNn1I1xLKf69iNL1pjhZ0qeeg\r\nvGVBr3sww1+eS0jQyq24d58EaaMvG9Em+Xwd30QG/Xu08e0K5ghJx2E9jafb\r\nwMdna5fOrNHLrN0qol9AUru35oIeXhPur29NCtOZZKMhYHSqncoo0R2tCQH7\r\nMAECEzUBR7qiazdxALNGQaAOlYDJ+nF2FKTtVY9lQT9Aei25cL4RNYmQ6gjz\r\nQfMf7KxL3UX8NGecM23CptpgituAUDFMML0=\r\n=aK0C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.0.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.2","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/attributor":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.3.0.0","baselineRange":">=2.0.0-internal.2.0.0 <2.0.0-internal.3.0.0","baselineVersion":"2.0.0-internal.2.1.1"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.8.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.8.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.0.0 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.0.0_1674871567952_0.1551073923384112","host":"s3://npm-registry-packages"}},"2.0.0-dev.3.1.0.125672":{"name":"@fluidframework/test-version-utils","version":"2.0.0-dev.3.1.0.125672","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-dev.3.1.0.125672","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"3736f16aec62ee2448a73ca40d9a338de59bef66","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-dev.3.1.0.125672.tgz","fileCount":64,"integrity":"sha512-HJv8Ws2o6Ja08oSlwpE9/D0wvtuHb7Lg0FqpELV5fbIPSX/WY2ILEHJPBMzMGSWsjrEQubdQjK8DauVwukQq7g==","signatures":[{"sig":"MEUCIQChLVIkX08NMErbOTWxR5MD3TUtEK/DFc3BSNLk6/9JQgIga+5RgrmOXsKzpYG9VxI90SS+wIPY63Ip3ayhK+2zys4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":291211,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj2UJhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoHTQ//eNlcepYowXmCPWbOitEoaUHfOhAKqRkP5oohRRsSh0TGv5jW\r\nfRUbUt30vJi+p3bA9sk7XwI6H+z/Yl1V/Rf9GJ4Xhm5/IX5cbEZLs1fnfznm\r\nPv1TKGMapocBTrW/igP6REPkly2ImUhzz+tz2xbDpDM+z6nY5FBrZbb60bLb\r\nEp9WuYISvp9pXmkqHa1Gb3RB1YZEqzj0VU/q4MhutzTu9DRYLXRZ4lFmrYfz\r\neQ5nhUkvLXE8m2Ou5b7REHuQwPkR2xAGA3SyjYVE9OJsbSGu1KigaBP0lvoK\r\ngnWwOy7SP8/HqtD7LlTnu0VimgWXlF6NVN+cfscDrFlslpbpCTJEjtYXRPYj\r\n2D1AFbms+eC5EvtD6wTDDgiT4GIxt7xU+Gl7j9rD9ZoJti0CqGGLWWLzrgcD\r\nyPZp0I6LP5nqNwmHwUIdDzh4hemDSe+m48Dw0eD+ciF7/yyUlSUFWvjjudJG\r\nFxuQEXhqgClOu5S5kVYCxq0OpHh0vPDUqrQN4t1WGhU3me++p3OVGBW6OUUC\r\nKrS4IxqUQ3yg4/BaCTNOu5tPJxrH1GLBAEBQcxb9QCXyVq77wTgs+euHwrcm\r\nLmb0moVBAXcZKqPrCntw8EfHEqB7FiVSmKMFBO2IeDUEEdsD8RxXxPkRd39S\r\np6MxBupiauFbyn35ZVCzTWyoPYfMbeTv5jA=\r\n=QYfh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-dev.3.1.0.125672.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS). Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n`describe*` functions. For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              | old    |        |                   |              |\n| Driver              |        | old    |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        | old    | old               | old          |\n| NewDriver           | old    |        | old               | old          |\n| NewContainerRuntime | old    | old    |                   | old          |\n| NewDataRuntime      | old    | old    | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n-   Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n-   Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n-   Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n-   Use for tests that doesn't benefit or require any compat testing.\n-   Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality. Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated. The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n-   If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n-   If it is a semver range, the latest in that range will be picked.\n-   If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\n    including prerelease versions. The latest in that range will be picked.\n    -   i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\n        will be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid**test**compatKind       | --compatKind         |\n| fluid**test**compatVersion    | --compatVersion      |\n| fluid**test**driver           | --driver             |\n| fluid**test**r11sEndpointName | --r11sEndpointName   |\n| fluid**test**baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe\\* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config. Additionally, you can get versioned API for specific layers using these API.\n\n-   `getLoaderApi`\n-   `getDriverApi`\n-   `getContainerRuntimeApi`\n-   `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type. Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run prettier && npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.2","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/map":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/cell":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/matrix":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/counter":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/aqueduct":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/sequence":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/attributor":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/test-utils":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/test-drivers":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/core-interfaces":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/container-loader":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/container-runtime":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/ordered-collection":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/register-collection":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.3.1.0","baselineRange":">=2.0.0-internal.3.0.0 <2.0.0-internal.3.1.0","baselineVersion":"2.0.0-internal.3.0.0","previousVersionStyle":"~previousMinor"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.8.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.8.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-dev.3.1.0.125672 <2.0.0-dev.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-dev.3.1.0.125672_1675182689759_0.4128127932093011","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.0.1":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.0.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.0.1","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"7f86abdd963111c837db9164d4eeffd836055908","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.0.1.tgz","fileCount":64,"integrity":"sha512-1ukPZZjLTzlIhzRCdr6x4CQiY/sPr8cLxwEE25Q9rcn92U8ea5CHBnpeiwkSCqR3vCZ/erVJWv/p5IoYAelFpA==","signatures":[{"sig":"MEYCIQD1DUNbqggZ9589SGlZkHsWfbXg6XJg7L7ziZP5S8ZbPQIhAOWL62y8nhJJTO9n48iild6x/KpB6kXDEWW1N7+BKPPx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":299693,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj3aA5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpMSw/+IlRxvG6da85PWeZfCKMjxmVk1p3Ebt4Y1GG/vAZNvJDdwWuM\r\nOIdIK5VIUnQsrqZQqmhZsTDfFyPY99sz3XwvT9Us4hio36fzQHzYc64cEwP3\r\nrofKw+N9ybF+N+4Cl5D45cANXYb2v+t8nFvZGhW9WzPN4MkYV1aQazwB34Bl\r\nev4NfnIGpUrMbqi3gB0mdlvvJy6mzm9LFQdN6CPHlcSkcI99S0AfMj6l5qO4\r\nnlwO/1ZbDOmbrOTS1rBAAKfUm/YOO9mZyrKVXTdxPm/4q+bBVxnF65u6hl5d\r\nXhsBYWCCHjw3LFzRLnBK90PyKQGa3JSqrj2OY0vwOU9i1A5JupcDVLxO/BvP\r\n1d6O0SsKvNFdiaGuwIAtrJXmULXHzOTsPXn7lBgpbGEhLYx4B8Mnvog51z2P\r\nTBksaCL5Xb10kvsdZjKHFPJUgHedDT2RLMvJFp1rjwmGHM5puYb6PO3ZfAj2\r\n4nz1ztKlHkDGqdwdgQkOQltEFrjzNwkYfOw1ZU4IIa3YLzaDr7B62ayJ8DRa\r\n5Y2bY5XBv3tAegIFNOUlnp0XP71lFtwURHPUC0Rri+/0pVU+ib0hTv0kgyRs\r\nF1D++dsUOtdRUwew+lBsfmZwQdSqO7u+wUnOl3WW1qPVaVcTAeRMAlhQka9r\r\nRvVLRsGazsCJ99vFmZfLf7trt3KSSeETH+4=\r\n=Cif0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.0.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.2","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/attributor":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.3.0.0","baselineRange":">=2.0.0-internal.2.0.0 <2.0.0-internal.3.0.0","baselineVersion":"2.0.0-internal.2.1.1"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.8.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.8.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.0.1 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.0.1_1675468857383_0.7923158709093234","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.1.0":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.1.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.1.0","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"9e49b7a6811d0dfcdaeb96b365069da3dff99c8d","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.1.0.tgz","fileCount":64,"integrity":"sha512-L8ycuivyLD364oynrNrkUvMmR0T+wtLJoQ0LTuSYDIvtkJKbw5dYJp6b4yUmMohTKAOQHhgA4wYkIKtyI95Rag==","signatures":[{"sig":"MEUCIEvF+GkUf0Fyol4vM+UxdtFFw/bDchVu2VYmulIF6ptlAiEA1wRzpSVXmq0lp2tr4yUqqLDhE+BO7W1E5kE6PBQklNI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":291043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj5e1mACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqm+Q/+KkJDb+ijtoqphKW1nVqvwUO6UOAtihVaCwArzgLf+Jq2WUeH\r\nf0HPp+Y/WIaktTppFDzwRJ0WEBJvS/krsV50CfFy0SWCmSwtdW9NelKJE6Uu\r\nyx5M280L5BWv1i0Z84HSwj1CDURxXWCY2wUViyVlXHtQJ1QG42gMNfA2hCD+\r\nuL5xb3f/EFBpzgm15T7Lk2+81WidckTKGUEs8r3Hi7QzsTYgCudKEKNaR97K\r\n/eeJsa/0slvTWsfXmlY2N7dEfnv5+vjrFVADoFTI+OySQJC62sFXiuSGn2Ve\r\n4/iAJCDmcS6bEiGjnLDc8aI9s/PATzDU6dXnO2XiW0ljl9VgXR9pjT+qKTKD\r\nyIZqKmTHheyErmqtzubVIbFzGBzZAiA07p3DosVrDVabToTwVhXsbe7DeoWH\r\nr9C2s3sz3Hx46Vlgn+9G5rqgGLn7/jUBbKxhSCyRM6B6aS1y6+0soivEJJxG\r\nZT+aGnjqTaSsOaiwDMZGkKhIhvuB4u3u2jCitjAvJYOOLJMxTC4PoZFOS/Ha\r\n+nB57YzCGqepIPHbewZ8dj8ee1RqKs1VDHOJvENEqOxzjx2FjEhVdpNCHrxU\r\nsHAUsk8W6nbmeDX7zFRLMnZqk00w+iPOeMe2Rx3GvgfYA9iO/MtEAsTlSMke\r\namDCmkbybQQHVrq89czanl54JS9hGe+XFJI=\r\n=mLS+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.1.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS). Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n`describe*` functions. For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              | old    |        |                   |              |\n| Driver              |        | old    |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        | old    | old               | old          |\n| NewDriver           | old    |        | old               | old          |\n| NewContainerRuntime | old    | old    |                   | old          |\n| NewDataRuntime      | old    | old    | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n-   Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n-   Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n-   Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n-   Use for tests that doesn't benefit or require any compat testing.\n-   Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality. Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated. The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n-   If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n-   If it is a semver range, the latest in that range will be picked.\n-   If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\n    including prerelease versions. The latest in that range will be picked.\n    -   i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\n        will be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid**test**compatKind       | --compatKind         |\n| fluid**test**compatVersion    | --compatVersion      |\n| fluid**test**driver           | --driver             |\n| fluid**test**r11sEndpointName | --r11sEndpointName   |\n| fluid**test**baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe\\* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config. Additionally, you can get versioned API for specific layers using these API.\n\n-   `getLoaderApi`\n-   `getDriverApi`\n-   `getContainerRuntimeApi`\n-   `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type. Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run prettier && npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","deprecated":"This version is deprecated. Please use the latest minor for 2.0.0.internal.3.x","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.2","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/attributor":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.3.1.0","baselineRange":">=2.0.0-internal.3.0.0 <2.0.0-internal.3.1.0","baselineVersion":"2.0.0-internal.3.0.0","previousVersionStyle":"~previousMinor"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.9.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.9.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.1.0 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.1.0_1676012902097_0.47105224751007335","host":"s3://npm-registry-packages"}},"1.2.8":{"name":"@fluidframework/test-version-utils","version":"1.2.8","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.2.8","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"574352e2869d444042820e95328b445a7ab7d341","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.2.8.tgz","fileCount":53,"integrity":"sha512-DlXwsnDB8Gb//ohRVHu0cUtVhHuR/hDXn+uRb2acKAMqNJ08+QanZw+vqABoCwDcDTVT6/rDpstfXC5OV3+E9g==","signatures":[{"sig":"MEYCIQDDZsMCZqPI6HAd9OmutAY1b5gJrw+bHcB09C9O/4IsegIhAMjNGKdmKGZlPu4xrtinncr1yn+HuaD+Ldr+BzgWMS3R","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj5o/jACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq9ww//R+rARtklQ8sKjznd0yBpLvjveXu88hzNF0sL26qhDfPQqoFt\r\napGVRpJGPfrHjTbgkB12YnON2f3Z+0PnKnz1T11eMMFhIiaAd36iM97uZWE4\r\nAl41A7LbDcLIsV8vlioIJxVvyaDlEAxu9CqJB1Kl6tGy3/jeGe1kQ2w8/kfS\r\nDdVAmqEk2ncOh/ykw7SNTpc6NM/fpecU7w1jWCAz7m8HLsBOI0ae+ZXvTt3u\r\n/nO6pOKQ6Egi5u7cIBhRGKf2rbtvd0dvjyG+wH418x2Jtlcvp675TXHE4lrW\r\nC7trg/HFB5x0NgRaRy9nIye0Twt0rNo5NCbhSAyvqmC6oAN5g5rGquciv1We\r\nIkYSDfs5+moEL19QnyXs9ymWyQ9ltungaSI63J6JC5avZyVj6LJqzN6jh1Jp\r\nFd6PFSmE//tYvokCwFDKopPECzlpAb1mgIHYBYUhgK2ukHNBYxY1nNEevKoa\r\n7OQJ6GWwTwfhOuHRMjevQc7N6SmLyYOLmJO3eavSuHF7Orpyav8/zJElTnz4\r\nyFuCvjlgJns2HWXmp/ynuUPbQq4/KpENHCMEnj5zbW6DuwUIlbsL2ZquSeFo\r\nLqsj0InOzyypdps6N5brlVazQbtEghSaKPKS3kWMMi8uiQ8aSpa9UO06RGzT\r\nNi0dU05nkHqdVlVPQp8kS8P2q7JJ+2uuUg4=\r\n=KxJf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.2.8.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.2","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.2.8","@fluidframework/map":"^1.2.8","@fluidframework/cell":"^1.2.8","@fluidframework/matrix":"^1.2.8","@fluidframework/counter":"^1.2.8","@fluidframework/aqueduct":"^1.2.8","@fluidframework/sequence":"^1.2.8","@fluidframework/test-utils":"^1.2.8","@fluidframework/common-utils":"^0.32.1","@fluidframework/driver-utils":"^1.2.8","@fluidframework/test-drivers":"^1.2.8","@fluidframework/core-interfaces":"^1.2.8","@fluidframework/container-loader":"^1.2.8","@fluidframework/mocha-test-setup":"^1.2.8","@fluidframework/container-runtime":"^1.2.8","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.2.8","@fluidframework/ordered-collection":"^1.2.8","@fluidframework/register-collection":"^1.2.8","@fluidframework/runtime-definitions":"^1.2.8","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.2.8","@fluidframework/datastore-definitions":"^1.2.8","@fluidframework/test-driver-definitions":"^1.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"1.2.2"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.2.8_1676054498876_0.40676126815150115","host":"s3://npm-registry-packages"}},"1.3.5":{"name":"@fluidframework/test-version-utils","version":"1.3.5","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.3.5","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"4e12bb00eafb825167bf350ae972e5663fd4df7a","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.3.5.tgz","fileCount":53,"integrity":"sha512-AwOvP/+X2v4QYCQiaQN9tleVZVH7vzJpLL+0B9vGQujMd0YzzPUHWx2wfvEL0YKIDK6P1z/3bL2QWYyGUN50mA==","signatures":[{"sig":"MEUCIBVYNWzRow1MGL7jSB4fxrAMIW7rqTWbCFN9rXGYTvzIAiEAnmCOqHp901ys8jz7vhDHeEnH9QaUUGMy+OeeQ7EeeBc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201157,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj5pFIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmov7BAAho0P/6UG66hTu7r6yGJA17V5UpHTa1yz62COqZrCENJ42qbV\r\nchU1hkxpNlXUSizMhQywB+tgJL6BwXRuNECXJ5RK/6+ErDTitbrDu0XczwmW\r\ngYTRW2kyHqO/bg6/ltygIPsrqSUvAsBFh33piitGKcCqeXsRReRKKiOPz6s6\r\nRt3ebosLrz4ORZQAODzQfmyulI0Sx07nnIH53gve04IAYdbqy7GCVIwEElIW\r\nojL80LsvQi2/dM9sN0fv31YB/r29uw+zsCzhzk+H56z1rmOVrTrAAxFsKfxw\r\ndDt4HzwdpBAnx2w3V5hcEIFqkOh2ej8wsqPii6bgWVdSl0ofrvyZv0ZPUFNS\r\nXueROeIj/x8xxkwnpCFW45nQzdpuLZZrG4bYSCWomTAp5lIpl5AA+gJhv2dR\r\nd0RRmq8YmpbF2n9UJsiQzZHe/i2raIJYr8AgnxSf3eCFqoelmSZfBgo3WBNs\r\ntcWLHyqMRFsEi5x0g7gQYo6hKW7In0+R+0KgXrrB3YG1AmJD8yHGKqz8z1le\r\nTJSE22DJQfUifnijCEqfHy7l5w35X1MRHBNF8g+YJAIeW7RYuym9D7uh1Fg1\r\nDeidHGLR7urmc20eqenwq2U28a1D6iV5hc5G482g8sOsBZndUcLg+sr2I2tK\r\nFjNb+CrvuWMfrAThcIie3RQ6s9iSk0rstUE=\r\n=KeX1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.3.5.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.2","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.3.5","@fluidframework/map":"^1.3.5","@fluidframework/cell":"^1.3.5","@fluidframework/matrix":"^1.3.5","@fluidframework/counter":"^1.3.5","@fluidframework/aqueduct":"^1.3.5","@fluidframework/sequence":"^1.3.5","@fluidframework/test-utils":"^1.3.5","@fluidframework/common-utils":"^0.32.2","@fluidframework/driver-utils":"^1.3.5","@fluidframework/test-drivers":"^1.3.5","@fluidframework/core-interfaces":"^1.3.5","@fluidframework/container-loader":"^1.3.5","@fluidframework/mocha-test-setup":"^1.3.5","@fluidframework/container-runtime":"^1.3.5","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.3.5","@fluidframework/ordered-collection":"^1.3.5","@fluidframework/register-collection":"^1.3.5","@fluidframework/runtime-definitions":"^1.3.5","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.3.5","@fluidframework/datastore-definitions":"^1.3.5","@fluidframework/test-driver-definitions":"^1.3.5"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"1.3.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.3.5_1676054856269_0.9391076447326292","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.0.2":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.0.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.0.2","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"30dd43d5a1f83c37599ba381e673c0f8d52b54a3","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.0.2.tgz","fileCount":64,"integrity":"sha512-bOLoVHyfgbVGCorjKj8SK4acFaqbn762UCzpXm2po4y7ghGBetFzG2fJqiRmntNNu73yyOHWlqJFfD1F+6MB9Q==","signatures":[{"sig":"MEYCIQDAuZ5eswIIi6E6reqaGdMJv77NtH3tVvSm99HMfMze8QIhAKczLCG0lOd6uJr7Dqt0aS7Jfo6yRUgGPu844SFT366O","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":299476,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj68mLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrShA//dq/+XSoyqxA9VDu6drbq1RoEunQFYNfNgdpc94JAtmtACWqv\r\nfic+aBoDmo5NDK1ArK3V9xMPwxKZkgXNVbHCy76/XraocuktnH9MMVoyspYg\r\nh7ow9wTzwpOkZ0yUj04w9BTTcb6r/hE9NbagkcedUUBtTYcRhwCHdPkgkARp\r\neljayCCH2cDo/L+TJynELqRAUWFee79hpnAxWy2Jr+yt6+W43pu2Wn974i/X\r\nnZaaJeXG/20K8rXU5au7etKuT7mVFt6xccqhCLzGckVdqLvQjwaYr7xVBayo\r\nBvD3v1WUGZwKBbonju6xshHWH5yuA6xpa7WFuo036n3hDP5o8ziWrcCXez8s\r\nlp9To0AOS0pKUuhKZV6uFfIt8RQZXiX5Li5eYsk6/lH9PUxIX7qReARxq/M9\r\nFaZphSdgMJXv++RI4VtXGNEBLBTL5kyfpCRIttr3WbzBuCD1hBnOPgUbBVr2\r\n6xSZYjVYq6mivSXmkOLuQ3UVhiNLOmqBHYFiU9OsbzLF+o6+wHVJ90yXOVVO\r\njKL6PG4AhKRSlj2Sip5H1Q3J0MhXMhuaWdNpzqL2JGqfj/deW9mbpujJubrZ\r\nR+uBHPYFm0q6Bxr7sZ8yq1TBJRd2gDPRDaO81kQbegJA3hLi7J3pwFZgRe6t\r\n+u5nyA7cTwT8YI9pVGdKWX1yITJmJnrLbdg=\r\n=8F9q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.0.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.17","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.2","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/attributor":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.3.0.1","baselineRange":"2.0.0-internal.3.0.0","previousVersionStyle":"previousPatch"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.8.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.8.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.0.2 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.0.2_1676396938889_0.5139733146040775","host":"s3://npm-registry-packages"}},"2.0.0-internal.2.4.1":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.2.4.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.2.4.1","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"8c8add96f65ade3038a2a460bccde5ac79f4dce8","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.2.4.1.tgz","fileCount":64,"integrity":"sha512-lrrwl6j1zWgJmcwRV5jtBgUE1k9uYO3lh92srXsNdSnxDgaqv8CNwDqzj4Mdm1x3Cx4/k/RSslw8sNwbCDY+9w==","signatures":[{"sig":"MEQCIBeTirANyWOu1EeA8VjsXV14Q8fxpc1FyLZfmkYWxLlvAiBJpcWcZsKmSrpZDDnDY1VGcqMC29WCDdQUEnW2dhfIvQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":299302,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj9/RgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr57A//eQaEUzTx0XV9xziVt/YcfkhzjQXLrdwWxrnyp5A3hhvhF/X2\r\nmitdPQ1XbWA/hI8vEKy+APWP1W2czyhFPCyW/jjYgne3f8XykJlIl/uMpwSl\r\nFsHjxV+WHzE/h8KhvDsECGx+VRC/8Qw/pZSYFgaoopB8sXq2znUnGpKOwJ0b\r\nJ4s3ic/ktMGuYvg1Pjd4aMCcEOZoApDdOyi94+WBWp5yW+mGBluj1WhYIgLI\r\nw2T49MyX9OahUitJpkbI913bj1SEsJmTK41mcgChzmQTSl3BPU8unyfdX6rZ\r\nAoj5nPiMuIoGdJA6eNkkogBRFXoH5Eq3A22OJvBahDY7cCdSHSJEavB0coic\r\nslL8MrUkZVNFgtSRLBEbR6jGX5eXgRTQdTPxtp5N1wjCdOmTMTr1rxxwp3Ws\r\nnoBj75mRprqm6Gkp7zgAZ49MxxCVu7lT+jegbpyFns4QlLVcNNMJmPoBxQ17\r\nv2dpC+AjF1IEPM+S3lIW4+h2VbW8nfuuyZCtDls1jMKv11rus8G6Fzfw54Iv\r\nFxx4Ide69mOSHtBhZTRVMQMBE+TiBvV+rVioE+f08TCKTIkUfF14CPigwN1i\r\nhBw5GonKFAYjTKK8FcjMJOzJdPEsW7gwYPs+BUiWZo+V+Mh0ffg963hVEwKf\r\nBy/68Y2l9J41SAeLWPAC1PJ5RaXrlN3rjLw=\r\n=UEdR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.2.4.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.18","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.3","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/map":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/cell":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/matrix":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/counter":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/aqueduct":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/sequence":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/attributor":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/test-utils":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/test-drivers":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/container-loader":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/container-runtime":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/register-collection":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.2.4.0","baselineRange":"2.0.0-internal.2.4.0","previousVersionStyle":"previousPatch"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.8.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.8.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.2.4.1 <2.0.0-internal.3.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.2.4.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.2.4.1_1677194336480_0.955712869850011","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.2.0":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.2.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.2.0","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"e1455151d8de52d651cad89879ff017af9912461","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.2.0.tgz","fileCount":64,"integrity":"sha512-InJCIkQ/Y5yBu+TPz+VhQx8mlQrmwLtBRDswrAHp3CN54D2NqjRkrLisLupITPOzYnXu7znS9b9FfjSWI0F18w==","signatures":[{"sig":"MEUCIQCbZ8UG3LOSDwAt0X+QydcuW4WrhHE/9AXGiK/WMloywQIgWC8/qzsuYGOpbfsy0eKY68i0fVaH9mrd4eIXBYoYEXU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":293123,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj+CfcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpq8RAAm8xK5EpS+eDm7EeXJ+WF1pkt0twp8ve4crtdbTPXthKmLl7m\r\nMPCcof6sZktiOjEB27u3lthBwvwe8ajO9+oShwlbOB36Ln/nOvyBNvy3z4Kh\r\n5uau6LL3B1s4kPq2p5tw38UKAlJFftkvFdgZvgrGvbUbodwxZSsC4Fo8LG1P\r\nJxJz4729KmSOhnOJv7+tBKchDtHKWBsNJ4Ht+luhG3RAKEVSQPQ6fHuDLr+a\r\nZB3vGO2RsOM7+9vc7GWlOJ8G0IaYaHUJqHV4XzAL3OkhTRVT/H0ZcG5r4ZdJ\r\noDFrWcZ1nMWy7X3Fn1CUCbOo8CMOu/3qb/1tHP5MGFU8+zBFrLXlf3Ivs4vl\r\nX6i8UOn3ovtqpqZ5aijw9g40IHVJcyIK4n5hSWo5NvxBC2+OWauW5slDhkwz\r\nspdiCBiCf4qwiXQioLYmBJawoiowrMoXviUZoaj/n19Z30lzy+q0EF7x8wXJ\r\ndMmdI47l4Zm8HciZWb38dbfsqFYSQP74c67Qz4glQCtutbleZboE7XVQQeKd\r\nkw0TTi6SSiUW45NGbwq3LHTz2a4xLFhb/eCDjlaoabvD1JHWwT96b5hhwq3u\r\nni2HCIXUEaW60IzBAY7XgeM0Mie6kwfr/y61YqE/twXl2vabP7ahBm+/Alcy\r\nWaKXEIXJHSLK1MrmtXCXlm+zwM4TzuIW98M=\r\n=Dggp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.2.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS). Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n`describe*` functions. For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              | old    |        |                   |              |\n| Driver              |        | old    |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        | old    | old               | old          |\n| NewDriver           | old    |        | old               | old          |\n| NewContainerRuntime | old    | old    |                   | old          |\n| NewDataRuntime      | old    | old    | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n-   Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n-   Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n-   Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n-   Use for tests that doesn't benefit or require any compat testing.\n-   Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality. Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated. The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n-   If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n-   If it is a semver range, the latest in that range will be picked.\n-   If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\n    including prerelease versions. The latest in that range will be picked.\n    -   i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\n        will be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid**test**compatKind       | --compatKind         |\n| fluid**test**compatVersion    | --compatVersion      |\n| fluid**test**driver           | --driver             |\n| fluid**test**r11sEndpointName | --r11sEndpointName   |\n| fluid**test**baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe\\* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config. Additionally, you can get versioned API for specific layers using these API.\n\n-   `getLoaderApi`\n-   `getDriverApi`\n-   `getContainerRuntimeApi`\n-   `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type. Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run prettier && npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","deprecated":"This version is deprecated. Please use the latest minor for 2.0.0.internal.3.x","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.18","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.3","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/attributor":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.1.1","@fluidframework/driver-utils":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/telemetry-utils":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.3.2.0","baselineRange":">=2.0.0-internal.3.1.0 <2.0.0-internal.3.2.0","baselineVersion":"2.0.0-internal.3.1.0","previousVersionStyle":"~previousMinor"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.10.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.10.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.2.0 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.2.0_1677207516457_0.8755721876235465","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.2.1":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.2.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.2.1","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"e683d4692d9d929a1a61635b90f87919691d2eef","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.2.1.tgz","fileCount":64,"integrity":"sha512-4EyifxzR/rRV4UNnlzOsPQ8KBqncxjT1yu+Sl/fuLPPUn4gF5Ne+Y4bzVBNkVJrtjvoz0jBYddjlUtcDe07Qbg==","signatures":[{"sig":"MEQCIF5Dqyx7GaeEevV/+w144QZBwc6kNIsxOZY9h8TkF9k9AiBR8KxKiLczf7LCChKWG3xku/KJPbLj+PiCZoWYzVEmGg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":293123,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj/SgxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr1uxAAnyDKHqpohdey60RrKLGYjZggg64JksU77vItupQXXvHQkgDs\r\ncbgH7P4pdCBSSWKbrwHt6wKjxaK1/hTCjn+tbgn89XO2DjUL8LUKbZb/eFjH\r\nJiKKhyBzZaeGw/zQjDxBqc5eX0jor4Q5EkyYMHutrYebV/9m+KHGlaHFntwb\r\nsRjWf7xO0VRidCWZwCHToG3niqb9sXTAvwShieUeC5eyxWVTzOYJsykpdjvt\r\nF5aeDJ4krzQkD0trTcUSyefS9qYs+IjzdaGrzjBLM3JVH6hqWKoqoUXG0Qi8\r\n0P18vgO2EsB8E0R6G4P0Tv9DWk9JEzuDR1/4AeC5Saxn/edo3XhaiOnyxpfB\r\ntS58zOT3Z/CSqRP8YI/2613CFB9+bCpkELjlTQ0miWL8NP2oO63G17FJXjPA\r\n+ZYb1bWkBkEXjPCK0TsOBTanGVVnxit32QsTxAe5YjfuqLyFiNdNhJTIiZzE\r\naNvF2csRptXPr1OW+qvn9gj5AT0uzm7qPVI2HLAPFWM1///iCYenEKTOz4Kg\r\nO2O3iVk1OToIN/voEG79mzomIrNwGgKlYzfdIy9qBA+xZnY/Uar4rFaeKm3/\r\nRAQR5eXuntcuexhwwOStnj02jx+4s8Qz930VUNwCEPsw+lnKWboFi8D8czPb\r\njv4+D57H23IIluw0P/NCyMm0jN5XUc2Y4uw=\r\n=LccQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.2.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS). Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n`describe*` functions. For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              | old    |        |                   |              |\n| Driver              |        | old    |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        | old    | old               | old          |\n| NewDriver           | old    |        | old               | old          |\n| NewContainerRuntime | old    | old    |                   | old          |\n| NewDataRuntime      | old    | old    | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n-   Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n-   Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n-   Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n-   Use for tests that doesn't benefit or require any compat testing.\n-   Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality. Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated. The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n-   If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n-   If it is a semver range, the latest in that range will be picked.\n-   If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\n    including prerelease versions. The latest in that range will be picked.\n    -   i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\n        will be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid**test**compatKind       | --compatKind         |\n| fluid**test**compatVersion    | --compatVersion      |\n| fluid**test**driver           | --driver             |\n| fluid**test**r11sEndpointName | --r11sEndpointName   |\n| fluid**test**baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe\\* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config. Additionally, you can get versioned API for specific layers using these API.\n\n-   `getLoaderApi`\n-   `getDriverApi`\n-   `getContainerRuntimeApi`\n-   `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type. Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run prettier && npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","deprecated":"This version is deprecated. Please use the latest minor for 2.0.0.internal.3.x","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.18","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.3","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/attributor":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.1.1","@fluidframework/driver-utils":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/telemetry-utils":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.3.2.0","baselineRange":">=2.0.0-internal.3.1.0 <2.0.0-internal.3.2.0","baselineVersion":"2.0.0-internal.3.1.0","previousVersionStyle":"~previousMinor"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.10.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.10.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.2.1 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.2.1_1677535281613_0.608914241493262","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.0.3":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.0.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.0.3","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"a262feb3243e8922a23712b79168f0ffd008ea3c","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.0.3.tgz","fileCount":64,"integrity":"sha512-wBKzNpt1nInp+teyV8Owt0yW486urAe/lVkvYvtjVqnQAesAmMXUrgmeiFjZ6qRmxxy6HpVSMzhMNLeWyHXWNQ==","signatures":[{"sig":"MEQCIHmQp7mvVIjrsSD98XRgv7Eu8TZw4UV00JjiLLFqYXDNAiBV3eHZwbx4MYIWZwPngPAvPMNx/t7YIU2+5kxMdkNbUQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":299476,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj/UL6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp0cA/5AbCEmEx/J3fQ2YSzL3INbkCEvRxDnLXYlws6NfCheb94Y23o\r\n1cq0piGJ8LyRMyQe3zSFbNRvlipF/8qB98DlOgfXpSib/mdYxn6ipcCcSA8n\r\n0N0z9Nqn8FSXr2bnCrSjeoxXjPpgFyDhaGCT1UZzxtVY90wpkjAjCT8mwi6d\r\nznTajDxq4dOb+HfEKFv5wG/gpfFL6VvYRdQNYfQO+LTeevzrWYV0+0sebU0W\r\nHu01W+XY5sLey5F7K71tC8oA9f1oXVICe+E42Y9sLwt3ZB/Um8JCMymtggo+\r\nYZoHjOPRRin+z1RFxgnGRhFn64UVNItzhekEssbZ1cWMyIct5R6cEvh78v0L\r\nN/NmEnl+iArXaclj8qigHyykJX7LIS7ygaNwYaN28DLGhDs6Knl3conD3oI+\r\n9JOWd+hb+WhzxYHgVcBGAn0MN9n/NVDBbJLGlB2Y5zJbQvnovDIkHXBMGcjL\r\n7HR+rXiyAtgEZOCDPPyjrrqSsVgT8SVFCKwfhY8ts/K1wyJU/IF1Tr6mBg12\r\nbvGkl3qDKe3J9VhAKUUejSYSvl3d9Xx8loGvyebwgoGo30+0DhYjmo/EcyGF\r\nT0CkXJ6Vf4YNa80q7B0+W6h8rucDLWTyyCL0c9RVQktl91ZVvS49GuZoU8gw\r\njE3KRvYJach9Np6ZWleNA+6KvGfQYXvdR6M=\r\n=5nux\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.0.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.18","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.3","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/attributor":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.3.0.1","baselineRange":"2.0.0-internal.3.0.0","previousVersionStyle":"previousPatch"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.8.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.8.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.0.3 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.0.3_1677542138266_0.8735962269664348","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.2.2":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.2.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.2.2","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"33c5a1387a1d0e51fb9295e10681220aad199fb9","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.2.2.tgz","fileCount":64,"integrity":"sha512-s/h0zl/0H8lpdBIf7SjJtuR3nUKWEKI2dWGCGT5/tWcp0ICWqO+yoON0+8Q4/OeIaw6OV2wUWa+ZRaEucG+6bQ==","signatures":[{"sig":"MEUCIQDkcMHTSXEOcMzXL+JRdkfYGg6mxGuksbgvgOlgR2J6HQIgeBoqyG7RLaLoA2l/AUCossRvz2t5Ee5PE7Rk/H+m1vk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":293123,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj/pasACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr+dw/+Niruc5PUnfNCBN1r5qGnaU7aTvxquY3Dgy15FnAXVRCLNVel\r\nu5GwY6xa3VdT1ruvZN/BbJLTHS+XyySc5uzXe35ByI9FhvrGbvxzO16GhY5m\r\ngZsjqK7An39TAD1JEolo+ExeVjh6ggcK+QaOjOfLl1cNyfxvo0jxe85p0GA6\r\nRWBbDrwVI6mxI+zBgm6keLxJkm+qj9iqwGuPb2rqDztqL6zaVTa/4dzvRWSR\r\nIJFu5rAHpdPQ11QjWmSuzslsiFh8jkZJfbntag5QkB3BZnRmzql9s5rgPXYr\r\nQ0+mgYnrsL6B4qKfUNEeW0m/wHfmT3y66xnnjVSFqO/IwH/kvhpxVmPyYhMI\r\n0dWJ/BuwW+8rjrkD7LVQ014JOl6oTYYyG/F2rFedPzA968uOjpa4dE/XNCzt\r\npUy6wo7Tg/1rsi1J1gfKfsBOagS55Mucb3NF/A9MufJw0Pg8FAetMsLej3qS\r\n+KvWopwQL+rPLwDwwZz1Hesn67zwX0jYMAPIZbYelPRIfVS3Jo9i4BM7IkzM\r\nEnFe7OFTwZOwo41JNYNjQaoS3wbZ6D2fQ0DvgdqkqjrkfIWEwXLaHkEKXCTT\r\nOwC4yPC0pDL+OOUhfct8XTYKFU7VZYfJOBKpfVcRjj7qpvilWkHX0AkNB62E\r\njjxMsR/ctX2AxIYhm9t2Mo2m+c3+wteZ7fo=\r\n=jKZq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.2.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS). Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n`describe*` functions. For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              | old    |        |                   |              |\n| Driver              |        | old    |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        | old    | old               | old          |\n| NewDriver           | old    |        | old               | old          |\n| NewContainerRuntime | old    | old    |                   | old          |\n| NewDataRuntime      | old    | old    | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n-   Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n-   Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n-   Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n-   Use for tests that doesn't benefit or require any compat testing.\n-   Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality. Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated. The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n-   If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n-   If it is a semver range, the latest in that range will be picked.\n-   If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\n    including prerelease versions. The latest in that range will be picked.\n    -   i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\n        will be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid**test**compatKind       | --compatKind         |\n| fluid**test**compatVersion    | --compatVersion      |\n| fluid**test**driver           | --driver             |\n| fluid**test**r11sEndpointName | --r11sEndpointName   |\n| fluid**test**baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe\\* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config. Additionally, you can get versioned API for specific layers using these API.\n\n-   `getLoaderApi`\n-   `getDriverApi`\n-   `getContainerRuntimeApi`\n-   `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type. Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run prettier && npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","deprecated":"This version is deprecated. Please use the latest minor for 2.0.0.internal.3.x","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.18","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.3","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/attributor":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.1.1","@fluidframework/driver-utils":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/telemetry-utils":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.3.2.0","baselineRange":">=2.0.0-internal.3.1.0 <2.0.0-internal.3.2.0","baselineVersion":"2.0.0-internal.3.1.0","previousVersionStyle":"~previousMinor"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.10.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.10.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.2.2 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.2.2_1677629100293_0.5229841329284333","host":"s3://npm-registry-packages"}},"1.3.6":{"name":"@fluidframework/test-version-utils","version":"1.3.6","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.3.6","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"4ef90e91d1f1d88f88e3a114a3b43f72509ca53e","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.3.6.tgz","fileCount":53,"integrity":"sha512-/E2HsApwu/AOnQXePOQUiLZIE/N97q6mtta/1ThYPk7NqINFKTEzhVefPXh1m+5dnMCFfjhKz+BC2gpMws+cmQ==","signatures":[{"sig":"MEUCIQDYGfGEJ6WQZFNWgpOJXt7dEZcfG8QL4wjtWiBqQ5KUGQIgE7Jxzb6+oFw+WvufrGT+09+Ev3vGNvhCTKnswrargFM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201157,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkCPM1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoFEg/9GANsrBUw5KEQm7YMLGTXca0c7I0wP7wa3DrH3BemnGBHN9pU\r\n4zrgx2qbOjXqn/XEcj+B46I4YHtMWd5yAtmu7bQwGqtDnsmy/ylJPgUwIf3/\r\nliFafbO/DYLnw+2T9ufsY8UtKvHwYhqiV1AWJJu/vQeZpf5GaQawxQzrauaS\r\nwqQWzVdrvYB5Cqhmq74BBzp0wr+nKKXvPGXo7PfP+woPWoAlgGsLAMWVhiRX\r\nH61myhEwEVZQVwTdXs0bsKcXczmXDYL9uGvdTfSbU3bGHSz3jMN6/1mP0A50\r\niL3WVGgziVcnhgUvXaGuQioD0SgfmE9MF4yLqjnyg29yMJcUHIqOiwuHEc2g\r\n+dmR5M1NUjw6bNReFSJqCheKvEzHz5XzV8WF7wJyPItRJOBqz2fSZhHX078e\r\ntp8r5qn7u3Jor2KgRjBxWz5H+MWSzxupwCXvWaOrzH7hcCKvCB5Oxx2Uz1GT\r\nO9FGjSfSvrwo03+4Ipz+N1NPCrTrqh+0Lb/gyW/YKPkS83kNFeTE6JnjO05R\r\n8/hlhK1mo9qtYxEwRVtvGjjJljhHWNroaQzyMVPXZeGKIieqsqyLWeyzN6tp\r\n2kDz6mqdR9jEqPGl8qWEo3okCIgS+EqcMejFM77BU82ibZA5BZHQOO0R5mhO\r\no6yio/ukS+F7HhTQFri06WaEydKqcOWujkE=\r\n=IKlb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.3.6.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.18","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.3","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.3.6","@fluidframework/map":"^1.3.6","@fluidframework/cell":"^1.3.6","@fluidframework/matrix":"^1.3.6","@fluidframework/counter":"^1.3.6","@fluidframework/aqueduct":"^1.3.6","@fluidframework/sequence":"^1.3.6","@fluidframework/test-utils":"^1.3.6","@fluidframework/common-utils":"^0.32.2","@fluidframework/driver-utils":"^1.3.6","@fluidframework/test-drivers":"^1.3.6","@fluidframework/core-interfaces":"^1.3.6","@fluidframework/container-loader":"^1.3.6","@fluidframework/mocha-test-setup":"^1.3.6","@fluidframework/container-runtime":"^1.3.6","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.3.6","@fluidframework/ordered-collection":"^1.3.6","@fluidframework/register-collection":"^1.3.6","@fluidframework/runtime-definitions":"^1.3.6","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.3.6","@fluidframework/datastore-definitions":"^1.3.6","@fluidframework/test-driver-definitions":"^1.3.6"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"1.3.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.3.6_1678308149674_0.26902553567334775","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.0.4":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.0.4","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.0.4","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"a1fca1b3b1d8b408a4db9218bc9bd3c343790904","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.0.4.tgz","fileCount":64,"integrity":"sha512-hllLVg4ajX377RPyxV3Y0aYdVWknI/NFtWuebwbdesC9hlRdFoq/pitRCKWvH7UYRo4wy9+EN8ZbIVqHQbAREw==","signatures":[{"sig":"MEUCIEjwWJwG56xIBpBUzx48RUrSuMz3m7MJJBNpZvibHphgAiEAk/3Y0/NrfA+OFN3/WpUaKA5F+Li5RW86AbvO5WfAy0Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":299476,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkCoFGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpHjw//YgW86TYr0Hj/iA/DQLeUopJRaUMDYikadHB/bPULYghhyreG\r\nRBLSquBlXdLp1ChnqiekE031M5/59gVr/ym/CXMe7IKfpEKbmbyHvpotc35Y\r\nHBEIhaOFhQc4TKRGgYM0UMdrFTO9As132FBSN4+RIDj2W3wvfOR7IPrc/ZHL\r\n/ddOm/eFG4pFrOoHY6q3Gv9FeOYqXpegeUurgz186BrmnlEUx5vKn8fRlWbc\r\nusecBnz3ZddTX0NljNWzugcYNr9lCtAJrNmQ0pC8s0lUz8vMlSAak943AAxh\r\nUqKJOE+aqmzPCFd/QBiwPl6joxefTpiNI9dz8Jui7oUuEgIZIzBChMl29Kv7\r\nY5gn0sEfdhzR+fkIxrQ1nNQ9WGBXT/6p/AKUy5eVMHj9stkwLG0wbxZbCHZ2\r\nMytqMpLiSMBicvgIfGrSFL3KVUC5Y+RgNDOwt8/EchwNWURloHht6yhPHeVE\r\nNyx4lKBg/TiBluCdA2aQ9++xZi2JgSIKr2HIjCAqZiAGj/tkFOVzKGcHR04/\r\n3yxSjK4Oi8Iu4M7d/zNmVcyvvYdVBV3Mb8JsQEhrsquys00V08Qh676UgiXK\r\n5n/1SF3QINrQgIqJsAyxZJvkNk2HoMGMdADTdTW9lkifynQhZmnbEGkEUDoP\r\np3G6vOWOavxLvofI7me/4RyHFCnqrXhRiJo=\r\n=dHge\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.0.4.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.18","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.3","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/attributor":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.3.0.1","baselineRange":"2.0.0-internal.3.0.0","previousVersionStyle":"previousPatch"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.8.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.8.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.0.4 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.0.4_1678410054140_0.9890693481949815","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.3.0":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.3.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.3.0","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"699a66e94c9602397c2c41981eba3861bc692558","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.3.0.tgz","fileCount":69,"integrity":"sha512-HgQxEkl3NB8q+eM1SN+7DPUwOAMpuVJG1mLV3MgljoNiaWqkjRsH/U/30DE5BlZKBSpAd2ddVPG4HQewkMAMpg==","signatures":[{"sig":"MEUCIQC7leLZd382UFSjsqAFWBX3tQqoxpmBVVaEpFrH6qHmnQIgGrKmzTp45VsqHrqt5ypITgx2gdmDOJJ8rVWqJpg+Nq0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":319616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkC5OpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpkTA//d6/Mq5+b3op0cMW9vTDtXDVa7stCETLR8AStY6IInlwsv5YA\r\neuRbGtAPnMZM2/5m0Clgcd3UycU8yaf5E1WKOxdr6EAhSZwk0CY1jcl0JUzP\r\nzIeykC7ImSRnLRaPMmet8Y7hVDIP+02Q+lqIQTzRPouqfIgH3HxWqbXibZL3\r\noSVwuMo30VYbR0S3eRYtMIZm3igGk5bEggJmKjEABHotOqpoOwdr2P7dz5DI\r\nLJ6R7xkEXWA3N9mkYElM5/n7wTfYk6U2/BWp1MDsIK799KwdXIGpUjfTjBwU\r\no0B5T14W6lMGo8owDPRTwrIJIBnIGKRS8N/qyR9CBEE7se1VfX+7Mz/Tq3Lw\r\nn9PNst/JHfC+Oc9v6oShp91rX+DoHXORoS/wJe37DHjbNHLNsYGr6q59GgZ9\r\n7Cw1WTZvqojbHWgidBZQb3lu09h92kTfy5j/W/HrhKxe6yTUfOTg8491dtTn\r\nseXigkF0IT8CWFoUlOlbFl4dBIhQc3tUzPeub8u7RQWlHkTyJOn2cX+pso63\r\n/R5U342w9GMTCLyv5GU4U4qnnEwgd8B8umWWD5QZLgkRHPXGfiTyhOermRPi\r\nulemQWbTRtsfVGm/lV4TS6fLJILb4q/0Be3vjmJYTvVC1BSue+bdx/p1KmPN\r\nO6sWXSXYcHYUIHxfusmmleqeQS9CxMy/6S4=\r\n=0uw2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.3.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS). Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n`describe*` functions. For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              | old    |        |                   |              |\n| Driver              |        | old    |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        | old    | old               | old          |\n| NewDriver           | old    |        | old               | old          |\n| NewContainerRuntime | old    | old    |                   | old          |\n| NewDataRuntime      | old    | old    | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n-   Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n-   Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n-   Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n-   Use for tests that doesn't benefit or require any compat testing.\n-   Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality. Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated. The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n-   If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n-   If it is a semver range, the latest in that range will be picked.\n-   If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\n    including prerelease versions. The latest in that range will be picked.\n    -   i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\n        will be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid**test**compatKind       | --compatKind         |\n| fluid**test**compatVersion    | --compatVersion      |\n| fluid**test**driver           | --driver             |\n| fluid**test**r11sEndpointName | --r11sEndpointName   |\n| fluid**test**baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe\\* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config. Additionally, you can get versioned API for specific layers using these API.\n\n-   `getLoaderApi`\n-   `getDriverApi`\n-   `getContainerRuntimeApi`\n-   `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type. Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run prettier && npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-test-generator","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","deprecated":"This version is deprecated. Please use the latest minor for 2.0.0.internal.3.x","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.18","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.3","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.1.1","@fluidframework/driver-utils":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluid-experimental/attributor":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/telemetry-utils":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{}},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.12.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.12.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.3.0 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.3.0_1678480297160_0.8691596335735712","host":"s3://npm-registry-packages"}},"2.0.0-internal.2.4.2":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.2.4.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.2.4.2","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"28e92ca93564216d818b22fd70a5e7fa7133784e","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.2.4.2.tgz","fileCount":64,"integrity":"sha512-os6mKujAuS+ctQPec15XHzFyIBIzQMy773mF/RkrjppauVocvi3bDM3InvAkhVgr8l6a1i5Np7x+gf0wmK7AUQ==","signatures":[{"sig":"MEYCIQDBKNvNsl0G7g5e2RdSTxWACD6fd8g9AJuObTFksrsaxwIhANVwD6zpPX447rxnYNJV058vm6722wW6YCO6YrJD/2aw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":299302,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkC7efACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpOyg/+Ow+K8lN96nqHtQrw0YHnJ1+boPCX2xdGnzQMqVSmGGLakqo7\r\nARGF4vc9FofsQQfyVr1zThYtXmx6EIXlK0UqdT7/RmtKXOdmtonABr7NNj5B\r\nnJ5PwZaJQsTFQo6wxk2T/QzIH7GxKUPCri1WdBL4onVTpPgVwueP9q/6sk+1\r\n94zQf1Ha3Ax1jV+nXFqTg6/o2y/NEhWHoXw78dP7wMaQEdMO1m5h8/TTUdA5\r\nJuzCwnKzziTCW3ym4ZHoFbjh5XaIKP2/wCzpgbrQ4Mvhn62d6/9wkATVoXrY\r\nFKc3yVMx0zCj1NXq4xNUfaamKumPjnqGOKqVF4jG/uIgWftw8pnd6Cv6zi11\r\nj9NdE89sruCsYAVgJG3GhdsG5kdaSj9Kyp1gK2vlWMiS4+mFcHGsFvTddpJO\r\nJzuNrIwOSu9njaJUyCTjdKkLb9nMcmzpFonC1/YbadEKhXbYIxXLK+7NRMAM\r\neMqLraNfPktAnDliVOKdN1Gs3JH5qZwiIhSbWNwefOGcprB/bXb4A7FgoDOm\r\npuoVYKLuAW5ql9cro1cHr9aT5eUVHWIo69HGnoq2lTr3H+ZIbrr6uatx008F\r\nZeNk+i7N0Hv0f6kUkCVuBTGJeQ7SR1MaRDFnCpjFBcAU1BLIQq9QTEDwCv5u\r\niQdjyimzzutOciZlXDO9wpiYd/CKqDucOHM=\r\n=fM67\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.2.4.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.18","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.3","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/map":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/cell":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/matrix":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/counter":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/aqueduct":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/sequence":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/attributor":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/test-utils":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/test-drivers":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/container-loader":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/container-runtime":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/register-collection":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.2.4.0","baselineRange":"2.0.0-internal.2.4.0","previousVersionStyle":"previousPatch"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.8.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.8.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.2.4.2 <2.0.0-internal.3.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.2.4.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.2.4.2_1678489503567_0.8060305919878341","host":"s3://npm-registry-packages"}},"2.0.0-internal.2.4.3":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.2.4.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.2.4.3","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"d1d81440defc2baceebad463d288f812994eefbb","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.2.4.3.tgz","fileCount":64,"integrity":"sha512-9MU6SbU5D/MKEmXcbQwLYapLqItGa2t4JYpWjnT6y0ONy3505Y58a0+lXqhdtCPy36fLHKc0R1m1ENi/70DURw==","signatures":[{"sig":"MEUCIE1i4k8d24EjrTpOpVmOP2ZILUZuEfhF8fH8EMA+9BeOAiEAqCDDxCjkJHoS9As58mDxbVafaCPZ+DXrKgQvCX4XPlI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":299302,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkE3dEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmro/Q//YChTbEJeA6cNd1ZKMA2B+RlqIXnAvi+W6F8LL5dxmMYxBQTA\r\nAFy5TNJdDFBSMU9qIbiQjyuCWUziwEYKjOtr6sJ2cTDpr7VAcN507P9NRJbQ\r\nLgw/izA0mrthdSCeSFg/BVXxSp8Dl5X0A1rz6xcResXkWxQB/A4otHLbCZcV\r\nR6WzyhHclEu+CFITkqW2iJPYSR71ERp5MnfXDgIL9njFw+QAr1C5KoDO1F1H\r\n4F0nmHv/dAytJ4qX1nHKzWD9YvQjov8Jf8AVd8/rA2hhHJFd6sLt9rNMHcAo\r\n0s0Jno44tImCEpJInP3d/sUjmNKFCeimonnOi7g4w+AAGNKCj2kJ/3khvgyJ\r\ncXKoDS5aDSqgTWXTJYPvxMcou/CTi8o7nx/urK98BLl+9tVmNVXlHM9DkGRy\r\nMjtuTddzubw/NSJ5whHMnHsSaAfzE1Wfki4uYYrjQ4x6fo6V4+162YhoEOUu\r\n/aCOjdGkuHjDWDE1Pu9NyrXQhnvVyO3MrL/g3PaVFlJJi8EZK+8l2PlfrttG\r\ngBYeCPd0qbuwDRxiuPhYHA0vUnRaDGxal6v5aCM0LjRHZxkBtsNXcS+uHspA\r\nPmZtg6I8mvizpFoitTkwvZBOWSgCZhHrtD9cV6RRODJVeVOeMXSYz+yyAM4j\r\nJ9FTfglh3EoiUL0K68fIRUFlFYBh29R7myk=\r\n=Swum\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.2.4.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.18","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.3","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/map":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/cell":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/matrix":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/counter":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/aqueduct":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/sequence":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/attributor":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/test-utils":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/test-drivers":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/container-loader":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/container-runtime":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/register-collection":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.2.4.0","baselineRange":"2.0.0-internal.2.4.0","previousVersionStyle":"previousPatch"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.8.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.8.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.2.4.3 <2.0.0-internal.3.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.2.4.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.2.4.3_1678997316245_0.5284863765165375","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.3.1":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.3.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.3.1","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"1f627e84c54934d4a43d5e74ff370f2af08f813d","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.3.1.tgz","fileCount":69,"integrity":"sha512-ujxUasNowOUAuvwEuyomZPyVO6EeYLPVmWQrTtUv+oVYar2vHIkX3dwjdqiPiDLLbKGZZum9Jnzq9gR76RbMUw==","signatures":[{"sig":"MEQCIDjgl+67wI9HR6VeStOXEGl3cwH/zmBeRrjuk5rw5bAtAiBB1+NNaBR2IlIvKHCdqcxnHAOQ0nRg7YM1FnUOIKr9FQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":319616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkE6iQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo9Ag/+IHEJnMONz1EAdqEvAW2duyzFebq5yMS+4mlqPEl31d0vYL8g\r\n8IHJkmdhZE6r/LcXctAovRo5go5+ndYstroxRYS1F2TKw221MfREV8uFiFiH\r\nNqJoCmzbwxT00AixrCyvuOPW+akOyD+tOz1G0EaHS/Z0vaK1r7X3Q5s8/VDw\r\n3Q4tiFAw4q8SfHaAI+twU5SULPcBbISQnL1c0un73RpO/pyxKfW91GjKV1xK\r\n77K5wyzzev8DYNU3HyAODTM6oDvZfzCkTm0IOXfD9KcfNtAGkm5gh5LIFg82\r\noKHsuFIZLiUcS+IVI2/cgeJTWg7tIgBn2xcFdt8q8v+DTS01Z4jvA9QD7qqJ\r\nJAiOBwZO2xu6rgIpMcoXcpvmAX8y2/zi0lJhHfxB1zKodIZxnYvQ0C2MSlnn\r\nZbCI3eY9XhV7UbWzswsR+96XSIZnC3I99m7FWFp15CuMpwLE8KryNgtebqTy\r\nGazwHQulsVrZWQiAjO8sqbsv4hZiSIAGYi02aoTntQmRCXURF/KQ/WWHB3Sk\r\ndpGehbHuHgbLqT4Z+9OdNO0TFyCyIsTyaAheGfbT+OENvOLGjjgPNf+nyu4C\r\nZ0uvrNdj7nrFDK9Arlj/HhufhQmBE3xeqOk6I3SL8qkbjtqC5+p4+rQmPeQZ\r\noFZh0f5u6ZJzTctqzMef2xwQH4F78KhVdZA=\r\n=4Ir8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.3.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS). Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n`describe*` functions. For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              | old    |        |                   |              |\n| Driver              |        | old    |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        | old    | old               | old          |\n| NewDriver           | old    |        | old               | old          |\n| NewContainerRuntime | old    | old    |                   | old          |\n| NewDataRuntime      | old    | old    | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n-   Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n-   Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n-   Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n-   Use for tests that doesn't benefit or require any compat testing.\n-   Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality. Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated. The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n-   If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n-   If it is a semver range, the latest in that range will be picked.\n-   If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\n    including prerelease versions. The latest in that range will be picked.\n    -   i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\n        will be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid**test**compatKind       | --compatKind         |\n| fluid**test**compatVersion    | --compatVersion      |\n| fluid**test**driver           | --driver             |\n| fluid**test**r11sEndpointName | --r11sEndpointName   |\n| fluid**test**baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe\\* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config. Additionally, you can get versioned API for specific layers using these API.\n\n-   `getLoaderApi`\n-   `getDriverApi`\n-   `getContainerRuntimeApi`\n-   `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type. Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run prettier && npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-test-generator","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","deprecated":"This version is deprecated. Please use the latest minor for 2.0.0.internal.3.x","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.18","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.3","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.1.1","@fluidframework/driver-utils":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluid-experimental/attributor":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/telemetry-utils":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{}},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.12.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.12.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.3.1 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.3.1_1679009935786_0.6267279003134074","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.3.2":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.3.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.3.2","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"41ac1538e55fa8848724541bb84433e5fba5d1b1","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.3.2.tgz","fileCount":69,"integrity":"sha512-rU1B71peM91SwFrpu6HAaBYborjHIBmGVT88Or2woORMDWGedOsZPd0yatJ7UrxQPa5CzxgYjLpRuV76sCJRtA==","signatures":[{"sig":"MEUCIQDmOtDhsaE4zD4xmF2/a9nND0x9ccWxwsH7OedSkyavXQIgICvsDYBsaWcGyQ6IR0LsY7oo8NlvSFvaIpN/ezcY9OY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":319616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkGQJkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp6KA//bZJtkEQsk2s3AzMo9fub/WvTiAEvGXA8z8uqKI7BkkMGe7F/\r\n2eIEVRtK63Yn3Gzi7yZkF6Y6VbCMdm1rr0XLorJSWCkbSfwL8jmya5irfs1V\r\nuKg6WFSIcozDialIuVC1AL0ExZe/7W6+HPqROCghdCDRJaPIDfY3mOYCtn8n\r\nYoROrmbVox0gHYUR8o3Ocx58qjiFOvr3KCCA3L2q9fNkK1vjZzYiqSnQdx7L\r\n4DH4RK93jNS7R5tHw+2d5RtME/VsirtAExMHrMozM1JEX9XaL+Ygp45dvosY\r\neV/7tk7EcqoETyvBS3If9cIL96NwTKce0zxrRDlErdWNlEOUFDG2TKRj8NXR\r\ndniFra8iPdwJ53KH2cNb2r9obx1g5onDUTsOPovCNOVAEAK0710omtbX9Wnr\r\nFZIfj+/CJYOFGBZA29Q0I0+fs2kKXmNEnp9/5tAKHGt0qjZVvru57T7/0iHl\r\nmULJn4RYD6hkZ5GCPK+4vzPUJR8G6IwXvF9bovzn/hz1M8UDw4Az3eqgu3bn\r\nhrIr/cf5Qdsz5/FpmNU3EU++7mzXMt9K1o8bavEB14Rs6+bnSGZmOnMulcol\r\nEYrHdcNL3+HM2uz8XbDSZqLSKEj2GFl4EYKuVkocS5D1bTJ+QMDY2CDvwWDg\r\nRPNW8ekvf9EjHIYNypFy3E0xwI1aUooP1Kk=\r\n=vmg2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.3.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS). Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n`describe*` functions. For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              | old    |        |                   |              |\n| Driver              |        | old    |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        | old    | old               | old          |\n| NewDriver           | old    |        | old               | old          |\n| NewContainerRuntime | old    | old    |                   | old          |\n| NewDataRuntime      | old    | old    | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n-   Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n-   Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n-   Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n-   Use for tests that doesn't benefit or require any compat testing.\n-   Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality. Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated. The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n-   If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n-   If it is a semver range, the latest in that range will be picked.\n-   If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\n    including prerelease versions. The latest in that range will be picked.\n    -   i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\n        will be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid**test**compatKind       | --compatKind         |\n| fluid**test**compatVersion    | --compatVersion      |\n| fluid**test**driver           | --driver             |\n| fluid**test**r11sEndpointName | --r11sEndpointName   |\n| fluid**test**baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe\\* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config. Additionally, you can get versioned API for specific layers using these API.\n\n-   `getLoaderApi`\n-   `getDriverApi`\n-   `getContainerRuntimeApi`\n-   `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type. Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run prettier && npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-test-generator","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","deprecated":"This version is deprecated. Please use the latest minor for 2.0.0.internal.3.x","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.18","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.3","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.1.1","@fluidframework/driver-utils":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluid-experimental/attributor":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/telemetry-utils":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{}},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.12.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.12.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.3.2 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.3.2_1679360612671_0.5379907031459876","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.4.0":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.4.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.4.0","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"9e4cdc0aac4386cb2299d74d54926a7f38e653fa","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.4.0.tgz","fileCount":69,"integrity":"sha512-m/LhuUufJIgeWIOl25sma6kK8BJ3RkBECsg3Pld0SaS3EC/anmT9mRhhhNMrFKRjwB1jams3QNPz2BxwBarWfQ==","signatures":[{"sig":"MEYCIQDaeUXuZagCbGEqRmsyY0sv/O+0DXoBW/ixjsYm+JFubgIhALpkHDd1PbnKw4YYuuqywe7xDc3W17bNIr/iwxG+oITg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":319885,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkG3yYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmracw/+IJ07kViHcYbYuvsoDHDP1bEX6TsQTxETQkp1hfJEuJ2L98IJ\r\ngNA7RDaPdZEjs3DSpuyW132ZPFufRSZJet0PqBzqGhJ+OOGakl9jdTikH7Kj\r\nL6rnpGo09U+YC784Xi2leYnSiQLGl6wv8vkuXtakRH82J+FeaybAakaqVB6n\r\nzrl3rxx7lOtVFYw9jFjdXMAkMWQhVxIjruGmw3UdMrp3O7bY+NVUNaki8CD+\r\no5QK4KeGaDCK+vWbOOByjvogu2WEbAwOrlxArKF3nEJMYPC5Y2diX7Ay2kOg\r\nwytELlKZiF51btlgx4C7zw48hegfk1OFPvkYPGkeb5Jvc56QBiTgGecgZW7c\r\nyjz8FxIreDUJzb6+HyhrassSwRKeBOC3+2KqnPHfSMn1lm/qlw8QAdKK9rh5\r\ngjmkg38tzcXqCHi0zoHp2LnSXROpCMEoLK/eHBWKqZJzlq8LpaD2qYM85qL0\r\nnbckqp2Bruiz9Bi8YcJO0FLWxob35A6ZW/wFMMzF7FVpUTwrWEO/G2MDYLOt\r\n9aTAGppNE5mJNfBvkIzxo4WpDr2f2e9wsVYAQNONLiZzcvVMABVIXzwiQHia\r\ndlKvuIfpzpODV94MLOq4kw/eEKJB6/IEiGFGvvSUU4vBXXk8naVOItcUsvp/\r\nz/8oECPtkasl/heIbTbihSCKNiK8JC4vC5c=\r\n=t1/C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.4.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS). Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n`describe*` functions. For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              | old    |        |                   |              |\n| Driver              |        | old    |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        | old    | old               | old          |\n| NewDriver           | old    |        | old               | old          |\n| NewContainerRuntime | old    | old    |                   | old          |\n| NewDataRuntime      | old    | old    | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n-   Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n-   Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n-   Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n-   Use for tests that doesn't benefit or require any compat testing.\n-   Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality. Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated. The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n-   If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n-   If it is a semver range, the latest in that range will be picked.\n-   If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\n    including prerelease versions. The latest in that range will be picked.\n    -   i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\n        will be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid**test**compatKind       | --compatKind         |\n| fluid**test**compatVersion    | --compatVersion      |\n| fluid**test**driver           | --driver             |\n| fluid**test**r11sEndpointName | --r11sEndpointName   |\n| fluid**test**baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe\\* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config. Additionally, you can get versioned API for specific layers using these API.\n\n-   `getLoaderApi`\n-   `getDriverApi`\n-   `getContainerRuntimeApi`\n-   `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type. Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run prettier && npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-test-generator","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"/mnt/vss/_work/1/pack/scoped/fluidframework-test-version-utils-2.0.0-internal.3.4.0.tgz","_integrity":"sha512-m/LhuUufJIgeWIOl25sma6kK8BJ3RkBECsg3Pld0SaS3EC/anmT9mRhhhNMrFKRjwB1jams3QNPz2BxwBarWfQ==","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"8.19.3","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"16.19.1","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^2.0.0-internal.3.4.0","@fluidframework/map":"^2.0.0-internal.3.4.0","@fluidframework/cell":"^2.0.0-internal.3.4.0","@fluidframework/matrix":"^2.0.0-internal.3.4.0","@fluidframework/counter":"^2.0.0-internal.3.4.0","@fluidframework/aqueduct":"^2.0.0-internal.3.4.0","@fluidframework/sequence":"^2.0.0-internal.3.4.0","@fluidframework/test-utils":"^2.0.0-internal.3.4.0","@fluidframework/common-utils":"^1.1.1","@fluidframework/driver-utils":"^2.0.0-internal.3.4.0","@fluidframework/test-drivers":"^2.0.0-internal.3.4.0","@fluid-experimental/attributor":"^2.0.0-internal.3.4.0","@fluidframework/core-interfaces":"^2.0.0-internal.3.4.0","@fluidframework/telemetry-utils":"^2.0.0-internal.3.4.0","@fluidframework/container-loader":"^2.0.0-internal.3.4.0","@fluidframework/container-runtime":"^2.0.0-internal.3.4.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^2.0.0-internal.3.4.0","@fluidframework/ordered-collection":"^2.0.0-internal.3.4.0","@fluidframework/register-collection":"^2.0.0-internal.3.4.0","@fluidframework/runtime-definitions":"^2.0.0-internal.3.4.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":"^2.0.0-internal.3.4.0","@fluidframework/datastore-definitions":"^2.0.0-internal.3.4.0","@fluid-experimental/sequence-deprecated":"^2.0.0-internal.3.4.0","@fluidframework/test-driver-definitions":"^2.0.0-internal.3.4.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{}},"devDependencies":{"nyc":"^15.1.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.2.0","eslint":"~8.6.0","rimraf":"^4.4.0","webpack":"^5.76.2","prettier":"~2.6.2","cross-env":"^7.0.3","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.38","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^7.6.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.13.0","@fluidframework/build-tools":"^0.13.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":"^2.0.0-internal.3.4.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.4.0_1679522968460_0.2733193624849508","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.4.1":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.4.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.4.1","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"4bf5e3fdfa9667f41ac2950b78add9c639a13d24","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.4.1.tgz","fileCount":69,"integrity":"sha512-8WCUZE0VQDAsDyIEPE3kflYiZuapniD3H12ryJ0l8d3hhRUv3XzNOgaTFldQv9OFnrC2xe0NlSGfl/0xIFIUKg==","signatures":[{"sig":"MEYCIQDCnCoj49XHwvIgrSX9A3vh8FHw21hNj+/2hPy0wpI39QIhAPCvz1lgS1SlvbXAH6/0xHTAQlpJZCqAE5B+2ZzIctC9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":320437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkHhvkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqQiBAAhiWLs6yN4ArjwW5N8Frk+qw80XW9PZ2DbN8H/XWcPOl6quF/\r\nV2K0W3Yu3E6mj67uoLuuCmde0uE9d0hDh8sm0a/MWCDRFgeuqMuVhMhvG8zL\r\nPvVORcUhC96FTIWkO4654P95vhpfHVxxIo9ChdgYuYgrr+rjlSN6oXjuH6sn\r\nItD03uctTgzQ9q6c3TgPfMPWC2EHXRXwusdHKGiTe9RCpmPTHP5JX0vEsQiO\r\nfBxQf6SMlcGAAm+qqBGmTWWrpr0mD+G3035EiyaNG3xmYB7h7ErTsGZTEkaU\r\ntPjPGGoQLtjgW6TQf4orjHqPddenuHkyjFgIUY1tRQaPYKrfusv8xRXj2Hp7\r\nxES+ryH2reFE99u9EiT4h3eAkniZVpXB8SGeIzdrWHap1jCopwa6VPe+Ymk8\r\nwfu6NJ+XWr6XeWQJQlzaPFymo4fDT45VZ0iFmpVylMm0N2YK8dcDHolHWyk4\r\nhan6IfEY/RmoUGtEGvOESRjA5y/Mx24VOlYz0c/d7C9f8YhhmlYTEsttxN0S\r\nJMvXLb3sV+nplrlnIXYH1VLeZAiIHbqFKCaSXRaP+NppNmNpOZdx1SogdM1K\r\nqC+aXJb2iI65cZAG/0HFXb0IlxRs9IUxLDGd0gCnFbOBqTPqGQHfkUW3xO+a\r\nVT81sIcy47iwzmUluUly4qv72M7aoZB5RD4=\r\n=BuFJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.4.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS). Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n`describe*` functions. For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              | old    |        |                   |              |\n| Driver              |        | old    |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        | old    | old               | old          |\n| NewDriver           | old    |        | old               | old          |\n| NewContainerRuntime | old    | old    |                   | old          |\n| NewDataRuntime      | old    | old    | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n-   Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n-   Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n-   Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n-   Use for tests that doesn't benefit or require any compat testing.\n-   Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality. Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated. The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n-   If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n-   If it is a semver range, the latest in that range will be picked.\n-   If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\n    including prerelease versions. The latest in that range will be picked.\n    -   i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\n        will be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid**test**compatKind       | --compatKind         |\n| fluid**test**compatVersion    | --compatVersion      |\n| fluid**test**driver           | --driver             |\n| fluid**test**r11sEndpointName | --r11sEndpointName   |\n| fluid**test**baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe\\* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config. Additionally, you can get versioned API for specific layers using these API.\n\n-   `getLoaderApi`\n-   `getDriverApi`\n-   `getContainerRuntimeApi`\n-   `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type. Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run prettier && npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-test-generator","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"/mnt/vss/_work/1/pack/scoped/fluidframework-test-version-utils-2.0.0-internal.3.4.1.tgz","_integrity":"sha512-8WCUZE0VQDAsDyIEPE3kflYiZuapniD3H12ryJ0l8d3hhRUv3XzNOgaTFldQv9OFnrC2xe0NlSGfl/0xIFIUKg==","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"8.19.3","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"16.19.1","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.1.1","@fluidframework/driver-utils":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluid-experimental/attributor":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/telemetry-utils":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{}},"devDependencies":{"nyc":"^15.1.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.2.0","eslint":"~8.6.0","rimraf":"^4.4.0","webpack":"^5.76.2","prettier":"~2.6.2","cross-env":"^7.0.3","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.38","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^7.6.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.13.0","@fluidframework/build-tools":"^0.13.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.4.1 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.4.1_1679694820662_0.21349763490057794","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.0.5":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.0.5","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.0.5","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"febd76e53c8982656276f35742d8eaa3afd505eb","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.0.5.tgz","fileCount":64,"integrity":"sha512-0n9OdfhC4Hm3DSvCLK7G6xhtudzLs8qVBPH8W7pWxRa8+H65DfDyEA55wZxjksmurWQh+H9fLnJlC1f8Sn8x3w==","signatures":[{"sig":"MEQCIDrP58q0UmXyGY+UZHpZtrN9FFUzcJQDij25tzBdAdKfAiB3fh5i8+UeGyL9VS6GjDgfBpZT2NZAZPlDHUmr5pI+Yw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":299476,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkHja/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqZxQ/9FIJDltCgQGWUawn6a4LU/JG9/k/jQ+bHIu1Tq9r628YmOAk+\r\ndEda75VaHeDe51DQQhGkg37VlVHCC9FQS5toifsL1/HwAbcZ/nnrVTedV8Ww\r\nDHz17hgrMyFC+rLuKGeSGrBM7ZKQjFcnFw+A/z2n8GeYHoJoO0DkyW3B78jJ\r\ngsPAtlKxdcifoHO3PhNz5eZoVa7bOlGknkkt8f1E//6TJTJXGDmXuFpmhVwW\r\nkSfgncN1vVcWHPd8h8vQtVTkMumBFkuzhzJqJDgYT1mCDkzyCIS63rKMXZiw\r\ncTD9W+GeY60AquaY+acaLApuQCLl8zFlmZhhfAHY8PrqvgU1g5VA2SfM0/Wm\r\npFmmGl8xTTieuJYFFTT2eMJacJ1p+Em/kJRC5pEf6MMn7wzRpzspIqDrTTDs\r\n3423kPlaHD1UMe3XftDG/uHGqNgtxc+m/QqWr/xP53ckFz3yevRFkl0Jrd03\r\nwIznz1lOqztzMZOtkHNpGQBubSgSQ9Dx7bdansE5GvB+0ovlJh6gWthMUx7d\r\nGeL148ajP4Hs6XDBwb0QCh9I8YION5LHFocpiySnYUqldKdmLiFSADea+rDu\r\nApAJdfHWK2i0l6KKLCrM2OdoQm1UUeyMxuqvkySGHeDEDwdPEy5Gutp7GDhH\r\nUOAJ7T2/dPdCQ+LO5Ki4eABEBSF3+WPq0lU=\r\n=Kh6z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.0.5.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.18","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.3","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/attributor":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.3.0.1","baselineRange":"2.0.0-internal.3.0.0","previousVersionStyle":"previousPatch"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.8.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.8.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.0.5_1679701694789_0.12020079007960094","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.2.3":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.2.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.2.3","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"738c785151de44ede60752821e7252f534e9ec99","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.2.3.tgz","fileCount":64,"integrity":"sha512-uaVDYnWNipOram7aqmhmuWFUWCIXcimPzYhGYsNr7zA7Wzc+aOqbhp316ecbwdUY/gbMfCKD5qXdNvdu3UXc3w==","signatures":[{"sig":"MEUCIQDe1qhrZM2vfIYFGPe4EcQFwVRVxgq9P7X9BG6uq+GGSQIgD8D6awYBPN59Igr3GIgiR/JyD74aJQi6z7G8eTin1PI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":293123,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkIeZHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpuEQ/7ButH0K40QO+XqU217rT8Mo4x2fB8v3IVPVLc8LIi1/p98Dmd\r\nTSLdDTy7vGwlXK1XVpPUlZC1GiwAo9HSxdBmalJpUkgp+vslRTPDWeaE7hUl\r\n/hNQ2iO5yQM+X35XYTe0hlrsWr6p4xi1k4lLaQ5TfqoEmjVvg6KA5OS2yoNG\r\nVEsYY6WeQ8KHa4EBpk3jrqKNU5FPjJlf6JhZKFT6KQxhSwqFNBYP1BzHzBcy\r\n77iKnA3rZo0lF9CxNsdbzbbPk5p5dHhK/Rx2LpYKoftL0xLIKnbiD+Woup+s\r\nDD6pQueLBg6AZJppkeaeNY8uaxDibIexirhrJkOQcVbPpwpOS1hMaxwpzF2w\r\n53ziNovKV+OSR4FodgG6MSumFHizQIZZaRJwbl+yVZE7u3hTk2txc1pNlNsf\r\nqvKsSzC/3wBjTD0SRfIvnfJsSJSNcT1zIXOgiIJapb09C8jlVOAe1xCae7T4\r\nJ0eYUJfyvKxzL5IYBsecaSL8dYhX94oHJWor0QHPlnDUzMHmH3A9piYnpWs7\r\n+tanUT2jy4nJIYeuLOHnXHYv7oxdjOgIzPb3fHXCfHxDtkDH9qHm0lBSWLtW\r\nNwujZfgtuJ76zaP32Ku8NU4bIu2CPe/BSsDvKvPw7gL0+pS600DaeGJcLAmM\r\n2dKPkOfIMxIyhW2OltpV6cxYkgT2Las/k/Q=\r\n=fYO5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.2.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS). Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n`describe*` functions. For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              | old    |        |                   |              |\n| Driver              |        | old    |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        | old    | old               | old          |\n| NewDriver           | old    |        | old               | old          |\n| NewContainerRuntime | old    | old    |                   | old          |\n| NewDataRuntime      | old    | old    | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n-   Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n-   Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n-   Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n-   Use for tests that doesn't benefit or require any compat testing.\n-   Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality. Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated. The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n-   If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n-   If it is a semver range, the latest in that range will be picked.\n-   If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\n    including prerelease versions. The latest in that range will be picked.\n    -   i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\n        will be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid**test**compatKind       | --compatKind         |\n| fluid**test**compatVersion    | --compatVersion      |\n| fluid**test**driver           | --driver             |\n| fluid**test**r11sEndpointName | --r11sEndpointName   |\n| fluid**test**baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe\\* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config. Additionally, you can get versioned API for specific layers using these API.\n\n-   `getLoaderApi`\n-   `getDriverApi`\n-   `getContainerRuntimeApi`\n-   `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type. Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run prettier && npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","deprecated":"This version is deprecated. Please use the latest minor for 2.0.0.internal.3.x","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.18","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.3","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/attributor":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.1.1","@fluidframework/driver-utils":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/telemetry-utils":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.3.2.0","baselineRange":">=2.0.0-internal.3.1.0 <2.0.0-internal.3.2.0","baselineVersion":"2.0.0-internal.3.1.0","previousVersionStyle":"~previousMinor"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.10.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.10.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.2.3 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.2.3_1679943239744_0.0361254165651419","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.3.3":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.3.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.3.3","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"a1cb05615cc0cb44ad5dbeb5f9a6dbd54c713cda","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.3.3.tgz","fileCount":69,"integrity":"sha512-WPxqS+zQmXlOLMe6uVCXdUScRJHI9eNPD+tH3HXOjVXsHLt2E1rrmVdq0otM0JsWwJqF9aruXDDUEOCymUopVA==","signatures":[{"sig":"MEQCIFn6WEzEbnQgeVQdDl6Qd8iT8LmRRiyPY2LG9hBe2rxEAiAcIW8CASzq7pVZ1JzF4mKDmD1U5MvRiDk4HTsVI7sbVQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":319616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkIemaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrxEA//cIfezTCt66Te2znuk9RQ+zjAk0w2YRZLwdkCd1P/IWk8o/Fy\r\n+vAECKCDIEqROD0sRVTPlLmWOo0hFN8WlUgoc/p/wvUipxqSzzS8Fzy6KqVj\r\nxM2oeUzjvCF9cfvgCsqtR6qg4W0kHrwLjax4kkGPYuwRu3YYol+6dBJ7jhNW\r\n8F066cca3CtWkzgpSvQAeFgspB9S37QJGgKFHx/A4/s5HRjWk8xJIgcvBViQ\r\nMWQcOuf60OIxBV+KnCzp/A2PkEEjaBHkQDgG6/74ROSmgCrI5XJLHTtPfiPY\r\nMFl2f4jK0DxWH+UWAKMNT92Lp/K3rwzd6byonlMxl3GZVolF8lKuHKoyEFo+\r\nTrrZFC8Npd4ty7CjiFID/3v3B21QSYtggiIN903pRDRSo9sPja6MtgUjWkH8\r\nO6p3x1VI0NxSDGosN5xa2SqfAYesb6N7QWWNHcf2ymIIvrzuKnOnWEe/2Sw5\r\nHKd8cnkkcXTtXtoCH9Q1fYxr0k0VWEkKuJCxoJvNOEF5nCRjswQEZ1q/hij3\r\nF2UDfQNaZsMLwCgW5NP2lnHTn9WpzgCqIVN2KEJoiG+EzwJRQzz6ZcIpJo2A\r\nI8LdNF/fv/JXYQbpbqXMAkR2aV9MeCNCzttsB2wC0DtuoN5KDp385tFSfWfG\r\nCGQLiq7q2yj9CVmqL9j0lTkr1OwZQK1OibI=\r\n=pppz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.3.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS). Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n`describe*` functions. For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              | old    |        |                   |              |\n| Driver              |        | old    |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        | old    | old               | old          |\n| NewDriver           | old    |        | old               | old          |\n| NewContainerRuntime | old    | old    |                   | old          |\n| NewDataRuntime      | old    | old    | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n-   Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n-   Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n-   Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n-   Use for tests that doesn't benefit or require any compat testing.\n-   Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality. Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated. The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n-   If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n-   If it is a semver range, the latest in that range will be picked.\n-   If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\n    including prerelease versions. The latest in that range will be picked.\n    -   i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\n        will be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid**test**compatKind       | --compatKind         |\n| fluid**test**compatVersion    | --compatVersion      |\n| fluid**test**driver           | --driver             |\n| fluid**test**r11sEndpointName | --r11sEndpointName   |\n| fluid**test**baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe\\* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config. Additionally, you can get versioned API for specific layers using these API.\n\n-   `getLoaderApi`\n-   `getDriverApi`\n-   `getContainerRuntimeApi`\n-   `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type. Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run prettier && npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-test-generator","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","deprecated":"This version is deprecated. Please use the latest minor for 2.0.0.internal.3.x","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.18","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.3","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.1.1","@fluidframework/driver-utils":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluid-experimental/attributor":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/telemetry-utils":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{}},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.12.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.12.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.3.3 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.3.3_1679944090147_0.054104047757976614","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.4.2":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.4.2","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.4.2","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"e3e8870378af763e9c2e207ad8c5e02462f0b7ea","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.4.2.tgz","fileCount":69,"integrity":"sha512-YY1ncgVhN+hfYGCMdMzjzNYt0ytc55XdJjFBen9lWpUCQVwm8Do6DMwVycuuGbytkm3ZRvIctgUrGH7QGL1QcA==","signatures":[{"sig":"MEYCIQC9gThsZJSu6yCOLln7j629s2PRrlcZK11j8EQS5tW8hQIhAPJyb9DN9zQVeA54Yxs4xNibtVnqh1q7YIaOdcaMyfIx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":320437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkIep1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp1oxAAnZnji86HRk52Idsb8jwfApv9bZJSIJZcrZQi7AmX5Uxo9a0z\r\n+na1hwrJZDx6rgUCcur8OCFvjK/kqfdhXa6g3zAzD1vg9m6sND7pODi6mb8P\r\nZ6ccuo8GN0K3wfFCYT9xO/+bOHhucRQ/ByQWp29f3I2af+OBFxs1WixwA42O\r\nTMDSRmK1WxP23RGtjCT4eK3tcJ2PNZWPdJhXhFtUpScK6TTWDHjr+TawSDKR\r\nVcodb18Tdx938W/N2ttPnsxjwdyDpOg6N4iGzv5Mg4tcGD4M/4GDyiBiEN0e\r\nfwh+TVVZSNBOcs09K31Y/epeTzbcAkIJ7s7rBU592anbktVQnhK6SQcV4OmF\r\nb+RQ82FTGuulN+pjfd7R4ey2zFFoqbBdRNVw1+ahJnJ6IZC5D8A9MEo+Cz89\r\niFVV+AZTqbDSzxx4sSNGBqnBevKE1Ooy3psV2FY9FIrD+sjM2VgHm/xrLjl2\r\nFFqMIA5U0FQK+f3mNBwUpR3MwRbZ1OSVskTcUSqlzcK/ViLdBm3oru8wQBie\r\n0HBbwKv29C3hcmmWK7P63mexRr0BRKpsfjNKLUJ5u8PrEqK78opv4c6VsAwY\r\n+bZXGLszuz1iZpXt1VudqyKosyoaG8YZAvWxcRe7eL7w+bJXv5wQjS/O5V9/\r\nkveS+81V+KbITHRSuXrw7RQ96APfQpDCiPk=\r\n=+d18\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.4.2.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS). Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n`describe*` functions. For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              | old    |        |                   |              |\n| Driver              |        | old    |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        | old    | old               | old          |\n| NewDriver           | old    |        | old               | old          |\n| NewContainerRuntime | old    | old    |                   | old          |\n| NewDataRuntime      | old    | old    | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n-   Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n-   Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n-   Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n-   Use for tests that doesn't benefit or require any compat testing.\n-   Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality. Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated. The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n-   If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n-   If it is a semver range, the latest in that range will be picked.\n-   If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\n    including prerelease versions. The latest in that range will be picked.\n    -   i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\n        will be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid**test**compatKind       | --compatKind         |\n| fluid**test**compatVersion    | --compatVersion      |\n| fluid**test**driver           | --driver             |\n| fluid**test**r11sEndpointName | --r11sEndpointName   |\n| fluid**test**baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe\\* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config. Additionally, you can get versioned API for specific layers using these API.\n\n-   `getLoaderApi`\n-   `getDriverApi`\n-   `getContainerRuntimeApi`\n-   `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type. Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run prettier && npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-test-generator","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"/mnt/vss/_work/1/pack/scoped/fluidframework-test-version-utils-2.0.0-internal.3.4.2.tgz","_integrity":"sha512-YY1ncgVhN+hfYGCMdMzjzNYt0ytc55XdJjFBen9lWpUCQVwm8Do6DMwVycuuGbytkm3ZRvIctgUrGH7QGL1QcA==","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"8.19.3","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"16.19.1","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.1.1","@fluidframework/driver-utils":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluid-experimental/attributor":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/telemetry-utils":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{}},"devDependencies":{"nyc":"^15.1.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.2.0","eslint":"~8.6.0","rimraf":"^4.4.0","webpack":"^5.76.2","prettier":"~2.6.2","cross-env":"^7.0.3","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.38","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^7.6.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.13.0","@fluidframework/build-tools":"^0.13.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.4.2 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.4.2_1679944309709_0.6469329717354011","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.1.1":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.1.1","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.1.1","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"01eb65b54ef3a46085a30588b692da5623e384d4","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.1.1.tgz","fileCount":64,"integrity":"sha512-sjwuh5QFeb4gCV97y7WGSnLy1RyuJtdAA6Gsg0kDH4SnDxpdfQBImwna2L89C48kg2KY99f2UNZd6XyQTZcJ3Q==","signatures":[{"sig":"MEUCIFepfP0rPG7dhRLnvLOo2lyzvfdJUYrQR5dGcwIJXu0KAiEAr/GPoEUyFNQN2sbO1RHsngbnJW1o0jlaD2a58HSACR8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":291043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkI5efACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqXYQ/9FxSxWGBd+rDXspf9+9eMhBt1ULV0ezptIXrRCE2nxSkITvkU\r\n0TcCF0LGTvjzLAIp5Nx9KczBidDI7C/y/FTHuKQetjM5LjIRNtg050LzRgEb\r\nSlweazaQu8jgmI7WwHc0qvGQlfsZTr868g/IyLaIJF0ri60kWQhtyuHekIgx\r\ntz2hTJKmKy2SSW2y2enXisva4caIg0S7KNPkop+QxGWTJcPBJEZvUucu2awv\r\netGOY1zr5cL7Yv2sQZBK10k4tI8eH5++ieS/pdB50+NPGtKF1QN10DOXnHU8\r\nJKhmxYwhJ5bXYT/7v1QoZB/+Bpeig63Xr0VIVc6oJB0tpcEGXqAqPoDBDhIM\r\n1LKeXrjl916wD95klRjm6HwT9DxWWOQPONaYcGOfxBEA9PY9xL8hmXmCjKfu\r\nAA35ENPluMMuYFpcX15hqXJWVSD4cKqv/CsyJ76azndkxKVCrMhxXyUk6Lc1\r\nhNd3kuI7KUK1unBnlz4KW1X8PkIMI4IyM8Gdw6xMqQxa1LwxXfgp7W/Ec0BV\r\nYzgMa6+fbubuiWxQCC//XFZp2VRvxu9Uru8wFpXf/NsP8ZNaMP1mn7do/ZdP\r\nyzM8Ico/SseNhD4xU4Jt9I2cxzlXkDHKMABR5COZXT9dMb434Ru+EAgjVkDM\r\nbRWqleZqe6vhCPt35c5ckaq7u2hAn8DPT3k=\r\n=Y5TW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.1.1.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS). Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n`describe*` functions. For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              | old    |        |                   |              |\n| Driver              |        | old    |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        | old    | old               | old          |\n| NewDriver           | old    |        | old               | old          |\n| NewContainerRuntime | old    | old    |                   | old          |\n| NewDataRuntime      | old    | old    | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n-   Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n-   Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n-   Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n-   Use for tests that doesn't benefit or require any compat testing.\n-   Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality. Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated. The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n-   If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n-   If it is a semver range, the latest in that range will be picked.\n-   If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\n    including prerelease versions. The latest in that range will be picked.\n    -   i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\n        will be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid**test**compatKind       | --compatKind         |\n| fluid**test**compatVersion    | --compatVersion      |\n| fluid**test**driver           | --driver             |\n| fluid**test**r11sEndpointName | --r11sEndpointName   |\n| fluid**test**baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe\\* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config. Additionally, you can get versioned API for specific layers using these API.\n\n-   `getLoaderApi`\n-   `getDriverApi`\n-   `getContainerRuntimeApi`\n-   `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type. Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run prettier && npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","deprecated":"This version is deprecated. Please use the latest minor for 2.0.0.internal.3.x","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.18","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.3","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/attributor":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.3.1.1","baselineRange":">=2.0.0-internal.3.0.0 <2.0.0-internal.3.1.0","baselineVersion":"2.0.0-internal.3.0.1","previousVersionStyle":"~previousMinor"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.9.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.9.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.1.1 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.1.1_1680054175486_0.7762929814025783","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.0.6":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.0.6","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.0.6","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"184fe5db025de3b57d987ba7c1ac732fae736cec","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.0.6.tgz","fileCount":64,"integrity":"sha512-jeo15WvxHrFbgs752PBnqf09hHXVoFIdcWBTiRm4i9IwucwxQu4vUSK0YPWWrYSTIEBY8td9jDqVAkUhFJIqYQ==","signatures":[{"sig":"MEUCIQCX0vYoML0B1/T5bSOzzeq28tkDCjvaNBFkeG4rQtLakgIgVNzlL+BbcC5SojKiA+s+GJFFQd1fFjBSjRLwMcO8Iq8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":299476,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkJ4xVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrZWg/9F7R3abenGYN2DNmnSSNilACqw0yzqNv09p6uIHeBD2Hxq9eH\r\nhPS9QkpGMP5WMtw4JwIyYma/JU8PfxaRO5aW1l+mhyJXbmZncGmDp4PfT9Od\r\nZffM7BgTvz/D70FrfFOyifp/yJZv0iFYhav7Wds6CauoHIV6PK/IiUcc0UKu\r\nrmvPpLEykqy0qGDwkHg6lvkp6Flv5aVujxSRWKqd8lXelRXpQNN5HAmOU8v3\r\n3WP2/Qa4meh6NNNea6BYEUakS6u9c2GeD1STgXQfq0Y8GEz1ubtUdgIbp6mg\r\nRddqmOZaXk5/lm92WbG2oMyqpfOG+pLx4mVNLD4l2yub40BxVfvQTxhbzloP\r\nfTzU3Pj1ptAPPOq2h+stPBuGudM/r8mE2btUVSEzJcu3zyA/6oKqPWz5wTol\r\nqMrdVCjyvgDKvcu4RsM8tmy0CvXFTZaq0RPorxLrNTbbIBpt4+CgAYpm603H\r\nnF3rpwSS6JuKdmxOh2Eija+/6B/Oju2ZizQl6NcPDSpwAuFio49zUgAUz3gO\r\nvo5cy4MlUpmrBI2KQR0na5VfEsadQlA7LycMtTfJxKERTIK6n73s++/OWX1R\r\n8nzu/CA4gse/V352xmvUqFqf10gdjms0UW1xW56VmuC/Or0VzpYo3GCfTu8R\r\noSG0Krv8Hw1ahEFGasUQg34INUuLTj60pA8=\r\n=7lR9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.0.6.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"flub generate typetests --generate --dir .","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.18","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.3","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/attributor":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.0.0","@fluidframework/driver-utils":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{},"version":"2.0.0-internal.3.0.1","baselineRange":"2.0.0-internal.3.0.0","previousVersionStyle":"previousPatch"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","prettier":"~2.6.2","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.36","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.8.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.8.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.0.6_1680313429452_0.683314755485894","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.4.3":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.4.3","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.4.3","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"d6880290833015d1d9b7c88333dcc16dfd732694","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.4.3.tgz","fileCount":69,"integrity":"sha512-ydGPi0OIV+/e5Tr+GKynGxojr9KsLcE5xlw0qxQzHsgfvSl9lCc+GkcRlRWqq6JaQgO+ZtIiN9qqzYjYMJCohg==","signatures":[{"sig":"MEQCICmrmk54+VGDpO69KQkpJ0p8dIQIR6fwkW6Xwyye8D/lAiAzTWgSWDixnOBTPh3j0bazgjc0IBMCSzk7ifCcieot2g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":320437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkJ589ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrughAAjTMZsmzsdMpNMiyagGVE5/G9UY7tOKcArYu9HPblx7cegJzt\r\nZz9tOc8ZvEm9oPMCUXm6wy+GeKasrMzqy5HZsZUG5Mk56hf8Lw2oNVMui5Ot\r\niA8V84Nm0uz1AztNpSYyOWUcA4Nd+nfvklSBw8oQ8vjo81e+2diYXuSRZnT4\r\nAFVBTSh94SorUaztKCsvHRLLKUgaJoPoIJzUansZMy2VmgCmnsB7JX/q5bd1\r\nvEWgjufowdRaSCR84D+9DwfRegUyYa1RfpZZ7ShYGfICffhuZQnVuDHGkrcc\r\nYZ/xI04IGnn46x1Cnu0IKTE6D05tcPJ9S3fXSK8qEO9yJVyn7Jatv9ZPbhqu\r\n8zp2iYlA17sydlc/5nrV/NqggbfizawjeL4XiEuEclNW8qh7dL197atv8h0v\r\nEP8uPsUNs2wTeKu2xY7ziHCgw17ZLLoUyRPpCrDie2CP2qCMVeGZlqQTMzvk\r\n2nO5ksL8MPzoeExtwgcSET/WX+xoqU/fd3Cv+pIvhkQlQdOSaI8S6tJliJzM\r\nL0S7S+qsdci76Owg64YpHG4BT6hTZDWAS7s5dUS/cLbUodmOTMngt4oe6IqA\r\nRSupl+5k5aajp4S788t41kK61CMC8qcphen2zaOk9fBM+pcX8XGAyMD2qaIN\r\npbbnb5imJPOVTohiWllhFK1uAUuuZTf1CzI=\r\n=PBfN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.4.3.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS). Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n`describe*` functions. For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              | old    |        |                   |              |\n| Driver              |        | old    |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        | old    | old               | old          |\n| NewDriver           | old    |        | old               | old          |\n| NewContainerRuntime | old    | old    |                   | old          |\n| NewDataRuntime      | old    | old    | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n-   Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n-   Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n-   Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n-   Use for tests that doesn't benefit or require any compat testing.\n-   Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality. Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated. The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n-   If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n-   If it is a semver range, the latest in that range will be picked.\n-   If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\n    including prerelease versions. The latest in that range will be picked.\n    -   i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\n        will be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid**test**compatKind       | --compatKind         |\n| fluid**test**compatVersion    | --compatVersion      |\n| fluid**test**driver           | --driver             |\n| fluid**test**r11sEndpointName | --r11sEndpointName   |\n| fluid**test**baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe\\* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config. Additionally, you can get versioned API for specific layers using these API.\n\n-   `getLoaderApi`\n-   `getDriverApi`\n-   `getContainerRuntimeApi`\n-   `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type. Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run prettier && npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-test-generator","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"/mnt/vss/_work/1/pack/scoped/fluidframework-test-version-utils-2.0.0-internal.3.4.3.tgz","_integrity":"sha512-ydGPi0OIV+/e5Tr+GKynGxojr9KsLcE5xlw0qxQzHsgfvSl9lCc+GkcRlRWqq6JaQgO+ZtIiN9qqzYjYMJCohg==","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"8.19.4","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"16.20.0","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.1.1","@fluidframework/driver-utils":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluid-experimental/attributor":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/telemetry-utils":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{}},"devDependencies":{"nyc":"^15.1.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.2.0","eslint":"~8.6.0","rimraf":"^4.4.0","webpack":"^5.76.2","prettier":"~2.6.2","cross-env":"^7.0.3","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.38","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^7.6.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.13.0","@fluidframework/build-tools":"^0.13.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.4.3 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.4.3_1680318268932_0.6399902398085671","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.4.4":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.4.4","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.4.4","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"sky.jokiel","email":"sky.jokiel@outlook.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"1365a18a63cab96335d3631df9c860ec2ec82aaf","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.4.4.tgz","fileCount":69,"integrity":"sha512-2IwvmUlafRK4NfEwkrbfnCst6Ja4b5DlslCYflcH1DK2fVYmDaZyMb1tZDLLRPTeots9KzMq6/hlmDjzkJIHQg==","signatures":[{"sig":"MEUCIQDdVpF0fUDL8Rv+S35+0XJr5SutO4VRVYbDcgwLvxY57wIgV1SjnRvGapGcy/8BKkym/Px2kbLxeKd6hS3/p2b1AV0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":320437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkLI1jACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrtIw//XwYk35G3ovTP56rnwktmpR5+QLFwg/PbTJ23lWHpv41ofD5O\r\naNsGMm/tDFXYKiuJcnAhCouvP143WrPayS8fni2pEtxPDQAdkgKGzTQsWz4R\r\nQD+UtI7+WS7c9WncY7SvmsJE0T6MFvF5HQpGoxJV9iDYNBOcF4H+SrtDR1eL\r\ngyUVdUtNel8wbxMlJGoF1kw+L5oXPGqNeLOJFf+pHJwCziy8ByKpe7Nc7Zoh\r\nfcUWf4O/wbWmZNygKwFZnq7pX7CgQjUdNFNncqGHxU3+WuRcsW7U5R73XSZN\r\n26fQGWSF0D7XNkfzM1z494BcYjkHSJ9a7j6KB+Yfigo8y8WpgtyJLof+KnQf\r\nfDMcQOHXRuG+Z6c9vvQXk6X/+yNllVib0cY087oaBngFeAZKK+QxEQpIq5AS\r\n09fLLRmuXRtSBR3ozTcdX1bi5xrjQ2EhGKNfP36Le2+tc4fQxKcCbclEvu6e\r\nuCzTw2WPPu+12lDk42Q06kPUOnOLw8qhPreFVe84Cz4QTyjI7k1d9YCBAm/4\r\nQ5cBGC+Z7DnW8IDL/Tlg9QCrjd9mMpRzXtGXCZGqDNoEvgmb8KvKKn4CQNrB\r\nG4kzHPcMjlk66U/BT2eFLr0/5Nck8YzXLdXn/y7S/NXIVHcINJ+QsIeqE6Ti\r\ns81zZGlHhYGEV0C7osJqhRz8JWS31bmPD3Q=\r\n=O55Q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.4.4.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS). Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n`describe*` functions. For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              | old    |        |                   |              |\n| Driver              |        | old    |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        | old    | old               | old          |\n| NewDriver           | old    |        | old               | old          |\n| NewContainerRuntime | old    | old    |                   | old          |\n| NewDataRuntime      | old    | old    | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n-   Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n-   Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n-   Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n-   Use for tests that doesn't benefit or require any compat testing.\n-   Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality. Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated. The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n-   If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n-   If it is a semver range, the latest in that range will be picked.\n-   If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\n    including prerelease versions. The latest in that range will be picked.\n    -   i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\n        will be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid**test**compatKind       | --compatKind         |\n| fluid**test**compatVersion    | --compatVersion      |\n| fluid**test**driver           | --driver             |\n| fluid**test**r11sEndpointName | --r11sEndpointName   |\n| fluid**test**baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe\\* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config. Additionally, you can get versioned API for specific layers using these API.\n\n-   `getLoaderApi`\n-   `getDriverApi`\n-   `getContainerRuntimeApi`\n-   `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type. Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run prettier && npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-test-generator","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"/mnt/vss/_work/1/pack/scoped/fluidframework-test-version-utils-2.0.0-internal.3.4.4.tgz","_integrity":"sha512-2IwvmUlafRK4NfEwkrbfnCst6Ja4b5DlslCYflcH1DK2fVYmDaZyMb1tZDLLRPTeots9KzMq6/hlmDjzkJIHQg==","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"8.19.4","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"16.20.0","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.1.1","@fluidframework/driver-utils":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluid-experimental/attributor":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/telemetry-utils":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{}},"devDependencies":{"nyc":"^15.1.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.2.0","eslint":"~8.6.0","rimraf":"^4.4.0","webpack":"^5.76.2","prettier":"~2.6.2","cross-env":"^7.0.3","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.38","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^7.6.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.13.0","@fluidframework/build-tools":"^0.13.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.4.4 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.4.4_1680641378925_0.571069694373562","host":"s3://npm-registry-packages"}},"2.0.0-internal.3.4.5":{"name":"@fluidframework/test-version-utils","version":"2.0.0-internal.3.4.5","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@2.0.0-internal.3.4.5","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"387acc5571e9fe0cc994d84c66f7962df8cebdd4","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-2.0.0-internal.3.4.5.tgz","fileCount":69,"integrity":"sha512-QW3/e55F6Czo1KbaVXeySCGhGCPgf5FiTewrAawOxxqy8tJ83Rfp+pPp7zqCldfg7AyWr1KXIjn+R7mGVoDNMQ==","signatures":[{"sig":"MEUCIFOdR9kxTGadsVzwUjN/FN1gX708xp0jFznOBd4pXabfAiEA3CGzPPbfk7nxqYJEDCFuwOBJTxpQv67YnqlnHNLXTms=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":320437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkVBRDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqSRQ//fLRDOwLWWdhfYic48MeHkLZeXFkgLj0Ku4OvkGPzOyIV9UsS\r\nfCHKdJu1yJVQu/msMLAKlG82ZBH5MeKsT5uzIjWQ0CXPFu8lClGRmBMIiHMz\r\nnTzluoD8AEbmipfguc+59ZUwhLqiBZeNm+z5P+JC9adEC32MSC98edySkGUz\r\nOCOCki84CjtQ7RUhAn1LSp+OXBrQUkihxLXMwj5O3mK7o217xjrBdE2bBJ7n\r\npL81xbwOuEwphFWAQ5xplyMxP9wtmvn232/fmH7MzOBudTLZLR9wG784ZXqz\r\nzoSpbuJ4LHxLCH35iSqE8T/6apJ9+e2uJ3LRO/bt+ebTnFPLs/dWN9TWlRyr\r\nNWIOqs1ksD7fs3lobdrhXCNaodu43m3QQYXw7hRGgfCRvNk+ByenK6nNYcMa\r\nTTOF+3iJxRgjjzWceJEewEtW9Il/FsGSbBONEPNDpKpDdE9q12tv2G48VAFE\r\nyKRTQvInfj1r5c4c3e5nKYANelIilgwuZvItEaAdFosvU+EoSz9R640j7+Gm\r\nUcFjL9w52NUSS04XraI85kSCP5tq+d7BQwKwOodFB9YQ9L2OEpO6AMDDGLCq\r\nS06FlQnWgl2ghDnFYtVQ/IRZyNv7jhlXZ+5Ad7KxCK9MFZvydw4aO0ka22vU\r\njggThMK7HQ5RJRFi3UapxItUUgmTSXAhuR0=\r\n=GbuH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-2.0.0-internal.3.4.5.tgz","types":"dist/index.d.ts","module":"lib/index.js","readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS). Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n`describe*` functions. For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              | old    |        |                   |              |\n| Driver              |        | old    |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        | old    | old               | old          |\n| NewDriver           | old    |        | old               | old          |\n| NewContainerRuntime | old    | old    |                   | old          |\n| NewDataRuntime      | old    | old    | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n-   Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n-   Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n-   Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n-   Use for tests that doesn't benefit or require any compat testing.\n-   Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality. Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated. The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n-   If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n-   If it is a semver range, the latest in that range will be picked.\n-   If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\n    including prerelease versions. The latest in that range will be picked.\n    -   i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\n        will be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid**test**compatKind       | --compatKind         |\n| fluid**test**compatVersion    | --compatVersion      |\n| fluid**test**driver           | --driver             |\n| fluid**test**r11sEndpointName | --r11sEndpointName   |\n| fluid**test**baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe\\* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config. Additionally, you can get versioned API for specific layers using these API.\n\n-   `getLoaderApi`\n-   `getDriverApi`\n-   `getContainerRuntimeApi`\n-   `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type. Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","scripts":{"tsc":"tsc","lint":"npm run prettier && npm run eslint","test":"npm run test:mocha","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","format":"npm run prettier:fix","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"prettier --check . --ignore-path ../../../.prettierignore","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","test:mocha":"mocha --unhandled-rejections=strict  --recursive dist/test/*.spec.js --exit --project src/test/tsconfig.json -r node_modules/@fluidframework/mocha-test-setup","build:genver":"gen-version","prettier:fix":"prettier --write . --ignore-path ../../../.prettierignore","build:compile":"npm run tsc && npm run typetests:gen && npm run build:test","typetests:gen":"fluid-type-test-generator","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile","test:mocha:verbose":"cross-env FLUID_TEST_VERBOSE=1 npm run test:mocha"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"/mnt/vss/_work/1/pack/scoped/fluidframework-test-version-utils-2.0.0-internal.3.4.5.tgz","_integrity":"sha512-QW3/e55F6Czo1KbaVXeySCGhGCPgf5FiTewrAawOxxqy8tJ83Rfp+pPp7zqCldfg7AyWr1KXIjn+R7mGVoDNMQ==","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"8.19.4","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"16.20.0","dependencies":{"nconf":"^0.12.0","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/map":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/cell":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/matrix":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/counter":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/aqueduct":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/sequence":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/test-utils":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/common-utils":"^1.1.1","@fluidframework/driver-utils":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/test-drivers":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluid-experimental/attributor":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/core-interfaces":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/telemetry-utils":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/container-loader":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/container-runtime":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/ordered-collection":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/register-collection":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/runtime-definitions":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/protocol-definitions":"^1.1.0","@fluidframework/container-definitions":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/datastore-definitions":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluid-experimental/sequence-deprecated":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/test-driver-definitions":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","typeValidation":{"broken":{}},"devDependencies":{"nyc":"^15.1.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.2.0","eslint":"~8.6.0","rimraf":"^4.4.0","webpack":"^5.76.2","prettier":"~2.6.2","cross-env":"^7.0.3","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.38","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^7.6.0","@types/semver":"^7.3.6","@fluid-tools/build-cli":"^0.13.0","@fluidframework/build-tools":"^0.13.0","@fluidframework/build-common":"^1.1.0","@fluidframework/mocha-test-setup":">=2.0.0-internal.3.4.5 <2.0.0-internal.4.0.0","@fluidframework/eslint-config-fluid":"^2.0.0","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@2.0.0-internal.3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_2.0.0-internal.3.4.5_1683231811302_0.6146179952707358","host":"s3://npm-registry-packages"}},"1.3.7":{"name":"@fluidframework/test-version-utils","version":"1.3.7","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.3.7","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"c4bea73bb6d5dd26e7dd248fe70cca8fb222473f","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.3.7.tgz","fileCount":53,"integrity":"sha512-qxnXwuoJWyEMdRgVApucrmx4FA5H6fLyPO3A90bS8YuWUsplJJMDVb5ymyNEHYCyTNxUcy0vYLBgndboDJBz8w==","signatures":[{"sig":"MEYCIQDfG2JJal50i1+NukVnWuuJRmfq59CSAyQt01eZQSZTEAIhAIjiOlmDquKguxPM31Ppuic6jc9Kicxb6MW0Fm/Sfo32","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201157},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.3.7.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","tsfmt":"tsfmt --verify","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","tsfmt:fix":"tsfmt --replace","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.18","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"14.21.3","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.3.7","@fluidframework/map":"^1.3.7","@fluidframework/cell":"^1.3.7","@fluidframework/matrix":"^1.3.7","@fluidframework/counter":"^1.3.7","@fluidframework/aqueduct":"^1.3.7","@fluidframework/sequence":"^1.3.7","@fluidframework/test-utils":"^1.3.7","@fluidframework/common-utils":"^0.32.2","@fluidframework/driver-utils":"^1.3.7","@fluidframework/test-drivers":"^1.3.7","@fluidframework/core-interfaces":"^1.3.7","@fluidframework/container-loader":"^1.3.7","@fluidframework/mocha-test-setup":"^1.3.7","@fluidframework/container-runtime":"^1.3.7","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.3.7","@fluidframework/ordered-collection":"^1.3.7","@fluidframework/register-collection":"^1.3.7","@fluidframework/runtime-definitions":"^1.3.7","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.3.7","@fluidframework/datastore-definitions":"^1.3.7","@fluidframework/test-driver-definitions":"^1.3.7"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"1.3.0"},"devDependencies":{"nyc":"^15.0.0","nock":"^10.0.1","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.2.74327","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.3.7_1693504074853_0.7994395997212334","host":"s3://npm-registry-packages"}},"1.4.0":{"name":"@fluidframework/test-version-utils","version":"1.4.0","author":{"name":"Microsoft and contributors"},"license":"MIT","_id":"@fluidframework/test-version-utils@1.4.0","maintainers":[{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},{"name":"curtisman","email":"curtism@microsoft.com"}],"homepage":"https://fluidframework.com","bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"nyc":{"all":true,"exclude":["src/test/**/*.ts","dist/test/**/*.js"],"include":["src/**/*.ts","dist/**/*.js"],"reporter":["cobertura","html","text"],"cache-dir":"nyc/.cache","report-dir":"nyc/report","temp-directory":"nyc/.nyc_output","exclude-after-remap":false},"dist":{"shasum":"3a80656828bc303df52be2c15b8192d831bb3a79","tarball":"https://registry.npmjs.org/@fluidframework/test-version-utils/-/test-version-utils-1.4.0.tgz","fileCount":53,"integrity":"sha512-MpYPJL3ImprB/XhCvioGTzl7sFO786GnQ1qhr36H7oc9LmcYxJf1EdeCajT9HT8z5nc7PMTroB3B1iVSG7N0Ng==","signatures":[{"sig":"MEYCIQCfuQ1Syzph7Nkeeuq0DOHbi3cPAeMxnvlcrvXbbbnEiwIhAPTqQvO92bOt8zd1xbIqhCqhRSIVDfrFPK79i39N0X77","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201311},"main":"dist/index.js","_from":"file:fluidframework-test-version-utils-1.4.0.tgz","types":"dist/index.d.ts","module":"lib/index.js","scripts":{"tsc":"tsc","lint":"npm run eslint","build":"npm run build:genver && concurrently npm:build:compile npm:lint","clean":"rimraf dist lib *.tsbuildinfo *.build.log node_modules/.legacy","eslint":"eslint --format stylish src","lint:fix":"npm run eslint:fix","build:full":"npm run build","build:test":"tsc --project ./src/test/tsconfig.json","eslint:fix":"eslint --format stylish src --fix --fix-type problem,suggestion,layout","build:genver":"gen-version","build:compile":"npm run tsc && npm run build:test","typetests:gen":"flub generate typetests --generate --dir . --no-generateInName","typetests:prepare":"flub generate typetests --prepare --dir . --pin","build:full:compile":"npm run build:compile"},"_npmUser":{"name":"ms-fluid-bot","email":"ffsa@microsoft.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"_npmVersion":"6.14.18","description":"End to end tests","directories":{},"sideEffects":false,"_nodeVersion":"18.17.1","dependencies":{"nconf":"^0.11.4","semver":"^7.3.4","proper-lockfile":"^4.1.2","@fluidframework/ink":"^1.4.0","@fluidframework/map":"^1.4.0","@fluidframework/cell":"^1.4.0","@fluidframework/matrix":"^1.4.0","@fluidframework/counter":"^1.4.0","@fluidframework/aqueduct":"^1.4.0","@fluidframework/sequence":"^1.4.0","@fluidframework/test-utils":"^1.4.0","@fluidframework/common-utils":"^0.32.2","@fluidframework/driver-utils":"^1.4.0","@fluidframework/test-drivers":"^1.4.0","@fluidframework/core-interfaces":"^1.4.0","@fluidframework/container-loader":"^1.4.0","@fluidframework/mocha-test-setup":"^1.4.0","@fluidframework/container-runtime":"^1.4.0","@fluidframework/common-definitions":"^0.20.1","@fluidframework/driver-definitions":"^1.4.0","@fluidframework/ordered-collection":"^1.4.0","@fluidframework/register-collection":"^1.4.0","@fluidframework/runtime-definitions":"^1.4.0","@fluidframework/protocol-definitions":"^0.1028.2000","@fluidframework/container-definitions":"^1.4.0","@fluidframework/datastore-definitions":"^1.4.0","@fluidframework/test-driver-definitions":"^1.4.0"},"_hasShrinkwrap":false,"typeValidation":{"broken":{},"version":"1.4.0","baselineRange":"~1.3.0","baselineVersion":"1.3.1"},"devDependencies":{"nyc":"^15.0.0","nock":"^13.3.3","uuid":"^8.3.1","mocha":"^10.0.0","eslint":"~8.6.0","rimraf":"^2.6.2","webpack":"^5.72.0","cross-env":"^7.0.2","ts-loader":"^9.3.0","typescript":"~4.5.5","@types/nock":"^9.3.0","@types/node":"^14.18.0","@types/uuid":"^8.3.0","webpack-cli":"^4.9.2","@types/mocha":"^9.1.1","concurrently":"^6.2.0","typescript-formatter":"7.1.0","@rushstack/eslint-config":"^2.5.1","@fluidframework/build-tools":"^0.6.0","@fluidframework/build-common":"^0.24.0","@fluidframework/eslint-config-fluid":"^0.28.2000","@fluidframework/test-version-utils-previous":"npm:@fluidframework/test-version-utils@1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/test-version-utils_1.4.0_1712697337883_0.47320956895942135","host":"s3://npm-registry-packages"}}},"time":{"created":"2021-03-24T20:01:38.823Z","modified":"2026-07-29T21:14:46.079Z","0.37.0-20427":"2021-03-24T20:01:39.209Z","0.37.0-20517":"2021-03-25T20:56:42.557Z","0.37.0":"2021-03-26T07:06:35.497Z","0.37.1":"2021-03-29T18:51:43.832Z","0.37.2":"2021-03-29T23:44:09.544Z","0.37.3":"2021-04-06T18:24:45.502Z","0.37.3-21287":"2021-04-07T22:05:46.814Z","0.37.4":"2021-04-08T20:52:40.790Z","0.38.0-21934":"2021-04-14T18:27:47.147Z","0.38.0-22000":"2021-04-15T00:29:01.433Z","0.38.0-22040":"2021-04-15T17:00:32.611Z","0.38.0":"2021-04-15T23:49:15.260Z","0.38.1":"2021-04-21T00:23:25.839Z","0.38.2":"2021-04-21T22:00:19.801Z","0.38.3":"2021-04-23T19:08:50.720Z","0.38.4":"2021-04-23T23:18:42.191Z","0.39.0-23254":"2021-04-27T17:17:27.850Z","0.39.0-23272":"2021-04-27T18:20:13.723Z","0.39.0":"2021-04-28T00:12:15.882Z","0.39.1":"2021-05-06T01:29:47.058Z","0.39.2":"2021-05-11T22:36:33.187Z","0.39.3":"2021-05-13T17:29:22.448Z","0.40.0-25719":"2021-05-24T19:02:36.271Z","0.40.0-25851":"2021-05-25T22:39:37.731Z","0.41.0-25957":"2021-05-26T20:42:49.239Z","0.39.4":"2021-05-27T16:46:30.721Z","0.40.0":"2021-05-27T18:08:05.028Z","0.40.1":"2021-06-04T00:35:32.066Z","0.40.2":"2021-06-07T19:48:57.216Z","0.41.0-27154":"2021-06-11T19:01:07.280Z","0.41.0":"2021-06-11T23:32:40.265Z","0.40.3":"2021-06-15T19:32:30.839Z","0.41.1":"2021-06-16T01:52:21.709Z","0.42.0-27549":"2021-06-16T15:33:51.224Z","0.42.0-27644":"2021-06-16T21:55:49.605Z","0.42.0-27677":"2021-06-17T15:04:24.436Z","0.42.0-27683":"2021-06-17T16:33:10.372Z","0.41.2":"2021-06-22T00:40:31.183Z","0.41.3":"2021-06-22T23:10:05.421Z","0.41.4":"2021-06-23T22:45:22.172Z","0.42.0-28410":"2021-06-25T20:57:19.708Z","0.42.0":"2021-06-26T01:57:38.349Z","0.39.5":"2021-07-07T22:01:22.893Z","0.42.1":"2021-07-08T16:33:03.375Z","0.39.6":"2021-07-08T20:53:59.207Z","0.42.2":"2021-07-08T22:57:45.746Z","0.43.0":"2021-07-09T19:55:24.455Z","0.42.3":"2021-07-09T21:01:04.770Z","0.43.1":"2021-07-19T23:17:13.902Z","0.42.4":"2021-07-20T00:18:40.156Z","0.39.7":"2021-07-22T20:11:24.175Z","0.44.0-30858":"2021-07-22T22:15:19.879Z","0.44.0":"2021-07-23T01:36:29.440Z","0.39.8":"2021-07-26T21:53:51.915Z","0.44.1":"2021-08-04T00:58:14.991Z","0.45.0-32948":"2021-08-06T19:44:33.605Z","0.45.0":"2021-08-06T23:25:43.907Z","0.45.1":"2021-08-10T01:30:02.289Z","0.45.2":"2021-08-11T22:05:29.919Z","0.45.3":"2021-08-13T00:54:57.737Z","0.45.4":"2021-08-17T18:36:54.121Z","0.46.0-34784":"2021-08-20T23:14:23.400Z","0.46.0":"2021-08-21T00:50:19.026Z","0.47.0-35912":"2021-08-31T23:58:13.585Z","0.47.0-35961":"2021-09-01T17:31:35.561Z","0.46.1":"2021-09-02T22:55:16.213Z","0.47.0-36362":"2021-09-03T18:36:07.009Z","0.47.0-36699":"2021-09-07T23:46:51.466Z","0.47.0":"2021-09-08T18:04:33.786Z","0.46.2":"2021-09-15T22:05:52.287Z","0.47.1":"2021-09-15T23:01:36.197Z","0.48.0-38105":"2021-09-20T21:25:22.508Z","0.48.0-38142":"2021-09-21T16:03:28.009Z","0.48.0":"2021-09-21T20:10:44.738Z","0.48.1":"2021-09-23T22:31:53.483Z","0.48.2":"2021-09-27T20:00:23.546Z","0.48.3":"2021-09-30T20:32:30.893Z","0.49.0-39015":"2021-09-30T22:02:54.930Z","0.48.4":"2021-10-01T17:23:28.723Z","0.49.0-39313":"2021-10-04T23:24:47.643Z","0.48.5":"2021-10-05T22:01:22.848Z","0.49.0":"2021-10-06T23:04:10.174Z","0.49.1":"2021-10-11T16:26:58.733Z","0.49.2":"2021-10-11T22:25:28.667Z","0.50.0-41365":"2021-10-21T17:04:11.614Z","0.50.0-41540":"2021-10-22T15:53:39.571Z","0.50.0":"2021-10-25T16:53:24.524Z","0.50.1":"2021-10-27T22:57:13.701Z","0.51.0-43124":"2021-11-06T00:28:46.364Z","0.51.0":"2021-11-10T22:22:37.754Z","0.50.2":"2021-11-12T21:15:16.566Z","0.51.1":"2021-11-12T22:04:10.755Z","0.50.3":"2021-11-18T22:00:02.111Z","0.51.2":"2021-11-18T22:51:17.121Z","0.52.0-44610":"2021-11-19T23:03:56.248Z","0.52.0":"2021-11-22T22:23:00.429Z","0.51.3":"2021-11-23T20:32:47.796Z","0.52.1":"2021-11-23T21:51:20.228Z","0.50.4":"2021-11-24T00:18:17.767Z","0.53.0-46105":"2021-12-08T23:10:55.110Z","0.53.0":"2021-12-10T19:05:06.142Z","0.54.0-47413":"2021-12-29T18:50:45.015Z","0.54.0":"2022-01-03T22:40:07.632Z","0.54.1":"2022-01-05T22:07:21.339Z","0.54.2":"2022-01-11T20:54:33.677Z","0.55.0-48551":"2022-01-14T21:30:57.472Z","0.55.0":"2022-01-18T23:46:48.594Z","0.55.1":"2022-01-28T19:08:41.496Z","0.56.0-49831":"2022-01-28T20:35:50.297Z","0.56.0":"2022-01-29T00:35:28.531Z","0.54.3":"2022-02-03T02:24:20.647Z","0.56.1":"2022-02-03T02:37:04.352Z","0.55.2":"2022-02-03T02:38:11.640Z","0.56.2":"2022-02-10T00:01:25.686Z","0.55.3":"2022-02-11T01:31:56.184Z","0.56.3":"2022-02-11T01:35:14.288Z","0.57.0-51086":"2022-02-12T01:15:57.307Z","0.56.4":"2022-02-17T20:00:49.399Z","0.55.4":"2022-02-17T21:16:52.891Z","0.56.5":"2022-02-19T00:43:39.403Z","0.56.6":"2022-03-02T23:13:00.637Z","0.57.0":"2022-03-03T00:00:56.085Z","0.56.7":"2022-03-03T20:19:13.547Z","0.57.1":"2022-03-04T01:49:10.370Z","0.56.8":"2022-03-04T18:48:26.146Z","0.58.0-55561":"2022-03-04T20:08:04.049Z","0.58.0-55983":"2022-03-05T00:53:34.958Z","0.56.9":"2022-03-11T21:04:29.084Z","0.57.2":"2022-03-11T23:56:52.444Z","0.58.1000":"2022-03-14T20:27:40.104Z","0.58.1001":"2022-03-18T01:45:47.045Z","0.58.2000-58133":"2022-03-18T22:15:25.505Z","0.58.2000":"2022-03-23T20:44:25.359Z","0.58.2001":"2022-03-25T01:09:14.427Z","0.58.2002":"2022-03-28T18:58:59.015Z","0.56.10":"2022-03-28T22:08:07.666Z","0.56.11":"2022-03-29T00:24:50.878Z","0.58.3000-61081":"2022-04-12T01:56:54.985Z","0.59.2000-61729":"2022-04-14T20:41:11.092Z","0.59.1000-61898":"2022-04-15T23:18:37.273Z","0.59.1000":"2022-04-16T07:36:52.896Z","0.59.1001-62246":"2022-04-18T19:12:08.782Z","0.59.2000-63294":"2022-04-22T21:12:59.240Z","0.59.2000":"2022-04-27T21:36:39.755Z","0.59.2001":"2022-05-03T21:40:25.158Z","0.59.3000-66610":"2022-05-13T15:33:54.387Z","0.59.3000-67119":"2022-05-17T17:12:14.625Z","0.59.3000":"2022-05-18T17:47:14.614Z","0.59.1001":"2022-05-19T20:44:57.835Z","0.59.2002":"2022-05-19T22:48:49.795Z","0.59.2003":"2022-05-25T20:38:36.037Z","0.59.3001":"2022-05-25T20:50:21.331Z","0.59.3002":"2022-05-26T17:31:58.390Z","0.59.3003":"2022-05-27T21:18:01.171Z","0.59.4000-71128":"2022-06-02T18:59:04.269Z","0.59.4000-71130":"2022-06-02T19:11:50.802Z","0.59.4000":"2022-06-04T00:57:40.638Z","1.0.0":"2022-06-08T17:56:44.246Z","0.59.4001":"2022-06-08T18:01:23.255Z","1.0.1":"2022-06-15T23:40:25.849Z","1.1.0-75972":"2022-06-24T01:04:23.099Z","1.1.0-76254":"2022-06-24T20:49:14.906Z","1.1.0":"2022-06-25T03:49:46.039Z","0.59.4002":"2022-06-28T20:55:13.582Z","1.2.0-77818":"2022-07-01T00:07:20.735Z","1.2.0-78837":"2022-07-07T23:59:21.581Z","1.2.0":"2022-07-08T00:54:56.541Z","1.1.1":"2022-07-13T23:11:46.659Z","1.2.1":"2022-07-13T23:14:48.502Z","1.0.2":"2022-07-18T13:47:27.296Z","1.1.2":"2022-07-18T13:48:12.182Z","1.2.2":"2022-07-18T13:48:35.618Z","2.0.0-internal.1.0.0.81589":"2022-07-22T15:11:17.754Z","2.0.0-internal.1.0.0.81601":"2022-07-22T15:54:28.403Z","2.0.0-internal.1.0.0.82159":"2022-07-26T14:41:04.896Z","2.0.0-internal.1.0.0.82628":"2022-07-28T16:50:49.870Z","2.0.0-internal.1.0.0.82693":"2022-07-28T19:52:03.794Z","2.0.0-internal.1.0.0.83139":"2022-08-01T21:31:53.746Z","1.2.3-83900":"2022-08-04T20:03:05.753Z","2.0.0-internal.1.0.0.84253":"2022-08-08T19:31:38.390Z","2.0.0-internal.1.0.0":"2022-08-09T01:19:50.282Z","1.2.3-84921":"2022-08-11T21:32:23.482Z","1.2.3":"2022-08-11T22:42:41.448Z","1.2.4":"2022-08-25T01:57:33.207Z","1.2.5":"2022-08-31T23:48:45.421Z","2.0.0-internal.1.1.0":"2022-09-02T20:05:30.577Z","2.0.0-internal.1.1.1":"2022-09-09T21:40:43.133Z","2.0.0-internal.1.2.0.93071":"2022-09-14T20:50:43.594Z","1.2.6-93452":"2022-09-15T20:55:11.156Z","0.59.2004":"2022-09-15T22:24:43.829Z","2.0.0-internal.1.1.2":"2022-09-16T00:16:00.732Z","2.0.0-internal.1.0.1":"2022-09-22T23:38:11.792Z","1.2.6":"2022-09-23T18:03:03.054Z","2.0.0-internal.1.1.3":"2022-09-23T21:52:31.245Z","2.0.0-internal.1.2.0":"2022-09-26T20:13:55.609Z","1.2.7":"2022-09-27T23:40:58.015Z","0.59.4003":"2022-09-28T00:18:28.399Z","2.0.0-internal.1.1.4":"2022-09-28T00:28:37.557Z","2.0.0-dev.1.3.0.96595":"2022-09-30T20:05:14.981Z","2.0.0-internal.1.2.1":"2022-10-03T23:49:40.878Z","1.3.0-97515":"2022-10-04T23:14:56.901Z","2.0.0-internal.1.2.2":"2022-10-05T01:00:26.031Z","2.0.0-internal.1.4.0":"2022-10-06T23:15:11.541Z","2.0.0-internal.1.4.1":"2022-10-10T21:14:50.126Z","2.0.0-internal.1.4.2":"2022-10-13T00:01:49.340Z","1.3.0-100520":"2022-10-14T18:34:00.593Z","2.0.0-internal.2.0.0":"2022-10-18T02:53:59.752Z","2.0.0-internal.1.4.3":"2022-10-18T22:40:41.764Z","1.3.0":"2022-10-19T16:07:12.622Z","2.0.0-internal.1.4.4":"2022-10-20T06:43:23.281Z","2.0.0-internal.2.0.1":"2022-10-20T19:17:10.562Z","2.0.0-dev.1.4.5.105745":"2022-11-02T19:49:37.118Z","2.0.0-internal.1.4.5":"2022-11-03T19:24:48.428Z","2.0.0-dev.1.4.6.106135":"2022-11-03T21:56:27.508Z","2.0.0-internal.1.4.6":"2022-11-03T22:40:05.479Z","1.4.0-106438":"2022-11-04T22:03:44.412Z","2.0.0-internal.2.0.2":"2022-11-04T23:00:10.043Z","2.0.0-internal.2.0.3":"2022-11-10T18:49:12.846Z","1.4.0-108057":"2022-11-11T04:36:08.589Z","1.3.1":"2022-11-11T20:36:36.272Z","2.0.0-internal.2.1.0":"2022-11-14T19:14:33.588Z","2.0.0-internal.1.4.7":"2022-11-21T19:49:11.368Z","2.0.0-internal.2.0.4":"2022-11-21T23:04:08.812Z","2.0.0-internal.2.1.1":"2022-11-21T23:06:45.500Z","2.0.0-dev.2.2.0.111723":"2022-11-28T15:31:02.291Z","1.4.0-111997":"2022-11-29T15:13:29.917Z","2.0.0-internal.1.4.8":"2022-12-02T00:30:43.878Z","2.0.0-internal.2.1.2":"2022-12-02T00:36:39.442Z","1.3.2-112998":"2022-12-02T01:08:13.501Z","2.0.0-internal.2.2.0":"2022-12-09T19:44:49.223Z","2.0.0-dev.2.3.0.115467":"2022-12-13T23:16:26.116Z","1.4.0-115997":"2022-12-15T18:32:17.284Z","2.0.0-internal.2.2.1":"2023-01-07T01:22:39.093Z","1.3.3":"2023-01-12T19:21:31.857Z","2.0.0-internal.2.3.0":"2023-01-18T01:42:32.100Z","1.4.0-121020":"2023-01-18T01:43:25.680Z","1.3.4":"2023-01-18T19:22:24.933Z","1.3.5-121405":"2023-01-19T00:16:40.995Z","2.0.0-internal.1.4.9":"2023-01-19T00:20:16.337Z","2.0.0-internal.2.3.1":"2023-01-20T20:26:00.401Z","2.0.0-internal.2.4.0":"2023-01-25T22:21:03.210Z","2.0.0-internal.3.0.0":"2023-01-28T02:06:08.164Z","2.0.0-dev.3.1.0.125672":"2023-01-31T16:31:29.941Z","2.0.0-internal.3.0.1":"2023-02-04T00:00:57.597Z","2.0.0-internal.3.1.0":"2023-02-10T07:08:22.272Z","1.2.8":"2023-02-10T18:41:39.104Z","1.3.5":"2023-02-10T18:47:36.429Z","2.0.0-internal.3.0.2":"2023-02-14T17:48:59.133Z","2.0.0-internal.2.4.1":"2023-02-23T23:18:56.663Z","2.0.0-internal.3.2.0":"2023-02-24T02:58:36.627Z","2.0.0-internal.3.2.1":"2023-02-27T22:01:21.812Z","2.0.0-internal.3.0.3":"2023-02-27T23:55:38.462Z","2.0.0-internal.3.2.2":"2023-03-01T00:05:00.466Z","1.3.6":"2023-03-08T20:42:29.878Z","2.0.0-internal.3.0.4":"2023-03-10T01:00:54.365Z","2.0.0-internal.3.3.0":"2023-03-10T20:31:37.326Z","2.0.0-internal.2.4.2":"2023-03-10T23:05:03.763Z","2.0.0-internal.2.4.3":"2023-03-16T20:08:36.453Z","2.0.0-internal.3.3.1":"2023-03-16T23:38:55.993Z","2.0.0-internal.3.3.2":"2023-03-21T01:03:32.848Z","2.0.0-internal.3.4.0":"2023-03-22T22:09:28.701Z","2.0.0-internal.3.4.1":"2023-03-24T21:53:40.914Z","2.0.0-internal.3.0.5":"2023-03-24T23:48:14.984Z","2.0.0-internal.3.2.3":"2023-03-27T18:53:59.907Z","2.0.0-internal.3.3.3":"2023-03-27T19:08:10.346Z","2.0.0-internal.3.4.2":"2023-03-27T19:11:49.881Z","2.0.0-internal.3.1.1":"2023-03-29T01:42:55.695Z","2.0.0-internal.3.0.6":"2023-04-01T01:43:49.758Z","2.0.0-internal.3.4.3":"2023-04-01T03:04:29.127Z","2.0.0-internal.3.4.4":"2023-04-04T20:49:39.114Z","2.0.0-internal.3.4.5":"2023-05-04T20:23:31.511Z","1.3.7":"2023-08-31T17:47:55.117Z","1.4.0":"2024-04-09T21:15:38.019Z"},"bugs":{"url":"https://github.com/microsoft/FluidFramework/issues"},"author":{"name":"Microsoft and contributors"},"license":"MIT","homepage":"https://fluidframework.com","repository":{"url":"git+https://github.com/microsoft/FluidFramework.git","type":"git","directory":"packages/test/test-version-utils"},"description":"End to end tests","maintainers":[{"email":"ffsa@microsoft.com","name":"ms-fluid-bot"},{"email":"microsoft-oss-publishing@microsoft.com","name":"microsoft-oss-releases"},{"email":"npmjs@microsoft.com","name":"microsoft1es"}],"readme":"# @fluidframework/test-version-utils\n\nThis is a package for writing and setting up Fluid end to end tests using `mocha` that will generate variants with\na specific driver and different version combinations of Fluid API between layers via `TestObjectProvider` provided\nto the test. The different layers are loader, driver, container runtime and data runtime (includes DDS).  Version\ncombinations and driver selection can be controlled via the `mocha` command line, assuming your test uses the provided\n `describe*` functions.  For advanced usage, a test can bypass this mechanism and directly call our\nexports to get the versioned Fluid APIs.\n\n## Versioned combination test generation\n\n### Layer version combinations\n\nSimilar to `mocha`'s `describe`, this package provide various `describe*` functions that will generate variants with\na specific driver and different version combinations of Fluid API between layers. All possible layer combinations that\nare generated (empty entries are current versions):\n\n| Compat Kind         | Loader | Driver | Container Runtime | Data Runtime |\n| ------------------- | ------ | ------ | ----------------- | ------------ |\n| None                |        |        |                   |              |\n| Loader              |  old   |        |                   |              |\n| Driver              |        |  old   |                   |              |\n| ContainerRuntime    |        |        | old               |              |\n| DataRuntime         |        |        |                   | old          |\n| NewLoader           |        |  old   | old               | old          |\n| NewDriver           |  old   |        | old               | old          |\n| NewContainerRuntime |  old   |  old   |                   | old          |\n| NewDataRuntime      |  old   |  old   | old               |              |\n\n### Mocha test setup with layer version combinations\n\nThere are three compat `describe*` to generate different combinations, depending of the need of the tests\n\n`describeFullCompat`: generate test variants with compat combinations that varies the version for all layers.\n\n- Used for tests that exercise all layers and will benefits compat combinations of all layers.\n\n`describeLoaderCompat`: generate test variants with compat combinations that only varies the loader version.\n\n- Use for tests that targets the loader layer, and don't care about compat combinations of other layers.\n- Test combination generated: [CompatKind.None, CompatKind.Loader]\n\n`describeNoCompat` - generate one test variant that doesn't varies version of any layers.\n\n- Use for tests that doesn't benefit or require any compat testing.\n- Test combination generated: [CompatKind.None]\n\nThese compat `describe*` functions will also load the APIs with appropriate version and provide the test with a\n`TestObjectProvider` object, where the test can use to access Fluid functionality.  Even when compat testing\nis not necessary, `TestObjectProvider` provide functionalities that help writing Fluid tests, and it allows the test\nto enable compat testing easily in the future just by changing the `describe*`.\n\n### Legacy version defaults and installation\n\nBy default, N-1, N-2, and LTS (hard coded) test variants are generated.  The versions can be specified using command\nline (see below) to run the test against any two versions. This package includes a `mocha` global hook that will\ninstall legacy packages at the beginning of the package based on the `compatVersion` settings.\n\n## Command line options\n\nTests using the compat `describe*` will be controllable using the command line options when running mocha on\ndriver selection, versions for compat testing, and compat kind combinations.\n\n```text\n--compatKind <CompatKind> - filter to the compat variant. See above table. Can be specified multiple times.\n                                Default: undefined (no filter)\n--compatVersion <version> - specify the old version. Relative (to base) or specific version. Can be specified multiple times.\n                                Default: -1, -2, LTS (hard coded in src/compatConfig.ts)\n--baseVersion <version>   - specify the base (new) version. Allow the test to run against any version combinations.\n                                Default: <current> (same version of the test package)\n--driver <driverType>     - <driverType> = \"tinylicious\" | \"t9s\" | \"routerlicious\" | \"r11s\" | \"odsp\" | \"local\"\n                                Default: \"local\"\n--r11sEndpointName <name> - Determine the environment variable name to look for r11s service information to target.\n                                Default: \"r11s\"\n--tenantIndex <number>    - Index into the tenant list, modulo the number of tenant available, for odsp server info to target.\n                                Default: 0\n--reinstall               - Force reinstall any required versions.  Default: reuse if a version is already installed.\n```\n\n`baseVersion` is a semver or a semver range.\n\n- If it is a semver range, the latest in that range will be picked.\n\n`compatVersion` can be a semver or semver range or an integer apply to the minor version relative to `baseVersion`\n\n- If it is a semver range, the latest in that range will be picked.\n- If it is an integer, the value will be apply to the minor version of the `baseVersion`, and create a `^` range\nincluding prerelease versions. The latest in that range will be picked.\n  - i.e. if `baseVersion` is `0.2.3`, and `compatVersion` is `-1`, the resulting range\nwill be `^0.1.3-0`\n\nWe also accept some of the flags via environment variables.\n\n| Environment Variables         | Command line options |\n| ----------------------------- | -------------------- |\n| fluid__test__compatKind       | --compatKind         |\n| fluid__test__compatVersion    | --compatVersion      |\n| fluid__test__driver           | --driver             |\n| fluid__test__r11sEndpointName | --r11sEndpointName   |\n| fluid__test__baseVersion      | --baseVersion        |\n\n## Advanced usage\n\nThis bypasses any configuration of version used by the describe* functions and provides direct access to the versioned APIs.\n\nFirst make sure to call `ensurePackageInstalled` before running the tests to make sure the necessary legacy version are\ninstalled.\n\nThe main entry point is `getVersionedTestObjectProvider` to get a `TestObjectProvider` for a specific version combinations\nand driver config.  Additionally, you can get versioned API for specific layers using these API.\n\n- `getLoaderApi`\n- `getDriverApi`\n- `getContainerRuntimeApi`\n- `getDataRuntimeApi`\n\nAll these API returns the current version by default if no arguments is passed.\nIf a number is provided, a relative version will be computed by adding the number to the minor version number\nof the current version, and find the latest patch version. (`^0.<current+requested>.0`).\nIf a string is provided, then the string is treated as a specific version or a range of version, and it will\nresolve the latest version that matches it.\n\nOPEN ISSUE: while these API can be used directly, currently the default global mocha hook will still run and install the\ndefault set of legacy versions whether it is necessary or not.\n\n## Implementation notes\n\nThe legacy version are installed in their own version folder\n`./../node_modules/.legacy/<version>` (current package root's node_module directory).\n\nLegacy versions of all packages in all categories are installed regardless of what compat combination is requested.\n(See `packageList` in `src/testApi.ts`).\n\nFor now, the current version are statically bound to also provide type.  Although it can be switch to\ndynamic loading for consistency (or don't want to force the script to be loaded if they are not needed).\nCurrently, we don't have such scenario yet.\n","readmeFilename":"README.md"}