{"_id":"was-teaching-server","_rev":"35-94430ec46dabedb4e53da9367ccdbcf2","name":"was-teaching-server","dist-tags":{"latest":"0.38.0"},"versions":{"0.9.1":{"name":"was-teaching-server","version":"0.9.1","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.9.1","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"db7c1d6d0944052e6e9da9ae04d9a1f3352f9a65","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.9.1.tgz","fileCount":295,"integrity":"sha512-gKgZLwsPttBuEIqFHQOUHR6rGj4V2nmPmGCkViBn6TrsjsCBGoTAYgMBmYV506fFx6NqWpW3UI8+Z9hUYl74bA==","signatures":[{"sig":"MEUCIQDVWMbTOeQ7T7ONk5+hEs0IgJI47tgULy3nJGnq/NNgcQIgG3sbDRYt1coNu3M1zMjOdETIl2WhGSbDs5IqjKLc38Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2583889},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"53796a13c13d14255f771cac72546b6789dbeefa","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test conformance && pnpm run format","lint":"eslint src test conformance","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"conformance/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"tsx --test conformance/*.test.ts","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"codenamedmitri","email":"dzagidulin@gmail.com"},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.6.1","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.9.0","undici":"7.28.0","fastify":"^5.8.5","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.2.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.0.4","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^9.1.3","@fastify/multipart":"^10.0.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.3.4","@interop/did-method-key":"^7.3.3","@digitalcredentials/bnid":"^5.0.0","@interop/ed25519-signature":"^7.1.3","@interop/jsonld-signatures":"^11.8.2","@interop/http-digest-header":"^3.0.0","@interop/data-integrity-core":"^8.2.0","@interop/http-signature-header":"^5.0.2","@interop/ed25519-verification-key":"^8.0.2","@interop/security-document-loader":"^9.4.1","@interop/x25519-key-agreement-key":"^5.2.0","@interop/http-signature-zcap-verify":"^12.1.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.0","devDependencies":{"tsx":"^4.20.3","eslint":"^10.4.0","rimraf":"^6.1.3","vitest":"^4.1.7","globals":"^17.6.0","prettier":"^3.8.3","@types/pg":"^8.20.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.0.0","@interop/ezcap":"^7.3.2","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.59.4","@interop/was-client":"^0.14.2","@vitest/coverage-v8":"^4.1.7","@interop/webkms-client":"^14.7.1","eslint-config-prettier":"^10.1.8","@interop/http-signature-zcap-invoke":"^6.2.3"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.9.1_1784473031796_0.8522680205802726","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"was-teaching-server","version":"0.10.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.10.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"c135af20f2d45b8812b85840457013320df71f96","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.10.0.tgz","fileCount":300,"integrity":"sha512-Y9AXKYUg1m/xxacIyy5+l+BOXnmujUfq74gizpfa9Tfl+ZNHiqMn5KM1+psLWaoilQukGFeRElw3YFmOqTU1yA==","signatures":[{"sig":"MEYCIQDRU+NNwlNRFAfLk9V+uPiyBsaae7sjSvGqpziuxeWcLgIhAMic3qf0O+iSI7b/C8jVfwkzz7G3FU47AWoCELalFX7q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2821692},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"cfd743befea215344776839f3469e60e0ad2dcd2","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test conformance && pnpm run format","lint":"eslint src test conformance","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"conformance/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"tsx --test conformance/*.test.ts","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"codenamedmitri","email":"dzagidulin@gmail.com"},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.6.1","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.9.0","undici":"7.28.0","fastify":"^5.8.5","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.2.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.0.4","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^9.1.3","@fastify/multipart":"^10.0.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.3.4","@interop/did-method-key":"^7.3.3","@digitalcredentials/bnid":"^5.0.0","@interop/ed25519-signature":"^7.1.3","@interop/jsonld-signatures":"^11.8.2","@interop/http-digest-header":"^3.0.0","@interop/data-integrity-core":"^8.2.0","@interop/http-signature-header":"^5.0.2","@interop/ed25519-verification-key":"^8.0.2","@interop/security-document-loader":"^9.4.1","@interop/x25519-key-agreement-key":"^5.2.0","@interop/http-signature-zcap-verify":"^12.1.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.0","devDependencies":{"tsx":"^4.20.3","eslint":"^10.4.0","rimraf":"^6.1.3","vitest":"^4.1.7","globals":"^17.6.0","prettier":"^3.8.3","@types/pg":"^8.20.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.0.0","@interop/ezcap":"^7.3.2","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.59.4","@interop/was-client":"^0.14.2","@vitest/coverage-v8":"^4.1.7","@interop/webkms-client":"^14.7.1","eslint-config-prettier":"^10.1.8","@interop/http-signature-zcap-invoke":"^6.2.3"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.10.0_1784482302465_0.24057821640723254","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"was-teaching-server","version":"0.11.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.11.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"e12d1ded65e8dfdb1b9fe83bc7dd322cda0f85f9","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.11.0.tgz","fileCount":305,"integrity":"sha512-3mBXyjD85I+BoK5178k1uqV9oH4y1Z8H/cADAzYY8g9L0RPXXIeuHNsc8WDdt7oEcHL1DlmZd40TB315+reOnw==","signatures":[{"sig":"MEQCIGifTvTqLDoGafpxXnlYTJPIgAAaJGNGFw1fRIIok3yJAiAUUagbAxIsW+Efob8m13n9TpLdQh4ychvb61Ndrf9kVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3007678},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"7e8e92efcbe18fae706c1da20ed4d603d0e2439d","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"codenamedmitri","email":"dzagidulin@gmail.com"},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.6.1","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.9.0","undici":"7.28.0","fastify":"^5.8.5","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.2.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.0.5","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^9.1.3","@fastify/multipart":"^10.0.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.3.6","@interop/did-method-key":"^7.3.4","@digitalcredentials/bnid":"^5.0.0","@interop/ed25519-signature":"^7.1.4","@interop/jsonld-signatures":"^11.8.3","@interop/http-digest-header":"^3.0.0","@interop/data-integrity-core":"^8.3.0","@interop/http-signature-header":"^5.0.2","@interop/ed25519-verification-key":"^8.0.3","@interop/security-document-loader":"^9.4.2","@interop/x25519-key-agreement-key":"^5.2.1","@interop/http-signature-zcap-verify":"^12.1.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.0","devDependencies":{"tsx":"^4.20.3","eslint":"^10.4.0","rimraf":"^6.1.3","vitest":"^4.1.7","globals":"^17.6.0","prettier":"^3.8.3","@types/pg":"^8.20.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.0.0","@interop/ezcap":"^7.4.1","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.59.4","@interop/was-client":"^0.16.0","@vitest/coverage-v8":"^4.1.7","@interop/webkms-client":"^14.7.1","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.1.1","@interop/http-signature-zcap-invoke":"^6.2.4"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.11.0_1784515095687_0.6322826932097856","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"was-teaching-server","version":"0.12.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.12.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"64dda4135f2c306586299d60858a07c91466973a","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.12.0.tgz","fileCount":305,"integrity":"sha512-5jDxU/337HOYYOFxN2tj1W4V4Q8LJs5gL9iuV957PufUN/AIPz29v6rffsLiTKZEVkRSGyvBxpymPGtSbDLG7w==","signatures":[{"sig":"MEUCIQCo8PjmZ3C6417kCI2O352vDu85gTbiWtSQd+ox67EcrgIgSt8L/RZ425qjjdT5DJJ/X4SZky4Hq2h2JrCRlUcUPNY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3042570},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"6539e25d6e3099eb945e44012b33113e65e1d1e6","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.16.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.9.0","undici":"7.28.0","fastify":"^5.8.5","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.2.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.0.5","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^9.1.3","@fastify/multipart":"^10.0.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.3.7","@interop/did-method-key":"^7.3.4","@digitalcredentials/bnid":"^5.0.0","@interop/ed25519-signature":"^7.1.4","@interop/jsonld-signatures":"^11.8.3","@interop/http-digest-header":"^3.0.0","@interop/data-integrity-core":"^8.3.0","@interop/http-signature-header":"^5.0.2","@interop/ed25519-verification-key":"^8.0.3","@interop/security-document-loader":"^9.4.4","@interop/x25519-key-agreement-key":"^5.2.1","@interop/http-signature-zcap-verify":"^12.1.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.0","devDependencies":{"tsx":"^4.20.3","eslint":"^10.4.0","rimraf":"^6.1.3","vitest":"^4.1.7","globals":"^17.6.0","prettier":"^3.8.3","@types/pg":"^8.20.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.0.0","@interop/ezcap":"^7.4.1","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.59.4","@interop/was-client":"^0.16.0","@vitest/coverage-v8":"^4.1.7","@interop/webkms-client":"^14.7.1","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.1.1","@interop/http-signature-zcap-invoke":"^6.2.4"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.12.0_1784580569030_0.43130306171139043","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"was-teaching-server","version":"0.13.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.13.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"5a8cc24d775a96b43745d3079cedfe72999148a2","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.13.0.tgz","fileCount":305,"integrity":"sha512-vecjQTRbYYl/o/1K1+70UwP9YXd3Zyp8xAMhWxBh3GIu9rEAe/vd92xsWDo99rY8wqaGVHH1R6zZ/HfiEG3h6A==","signatures":[{"sig":"MEYCIQCEyAtcegZO8DqwoPDF8mnlha5C/KTqPNowZIsKAtS1kAIhAPbhJSSW2xIjt8KdbFYAkqH0n8xHo5sCS1K9b1yb/hO1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3052658},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"8a71af5976a9f868636b87bc03c97e5f92c2d4c8","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.16.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.9.0","undici":"7.28.0","fastify":"^5.8.5","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.2.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.0.5","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^9.1.3","@fastify/multipart":"^10.0.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.3.8","@interop/did-method-key":"^7.3.4","@digitalcredentials/bnid":"^5.0.0","@interop/ed25519-signature":"^7.1.4","@interop/jsonld-signatures":"^11.8.3","@interop/http-digest-header":"^3.0.0","@interop/data-integrity-core":"^8.3.0","@interop/http-signature-header":"^5.0.2","@interop/ed25519-verification-key":"^8.0.3","@interop/security-document-loader":"^9.4.4","@interop/x25519-key-agreement-key":"^5.2.1","@interop/http-signature-zcap-verify":"^12.1.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.0","devDependencies":{"tsx":"^4.20.3","eslint":"^10.4.0","rimraf":"^6.1.3","vitest":"^4.1.7","globals":"^17.6.0","prettier":"^3.8.3","@types/pg":"^8.20.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.0.0","@interop/ezcap":"^7.4.1","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.59.4","@interop/was-client":"^0.18.0","@vitest/coverage-v8":"^4.1.7","@interop/webkms-client":"^14.7.1","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.1.2","@interop/http-signature-zcap-invoke":"^6.2.4"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.13.0_1784665503483_0.6511316249767982","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"was-teaching-server","version":"0.14.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.14.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"08280c2058428dc7bf455420fa8ba77987344d9a","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.14.0.tgz","fileCount":305,"integrity":"sha512-1ec2VogomWXiai7pHMt+aqz373IrwPpydHKM4dBz5KtRvph6VjvKKvOFwuDMTrrzIuL5s4TEREEyxU79gCSCDg==","signatures":[{"sig":"MEQCID2a8H2Is22gmvavpPIudUc0sm3uT3Gy4Bor4k4gy4WfAiAITKnCBXavf7ZSNce0mixaxJKvVJJJI/cymbhDt08+kg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3040769},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"7e2832f4f707e6a2eb269e909d70cbb574a158fa","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.16.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.9.0","undici":"7.28.0","fastify":"^5.8.5","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.2.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.0.5","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^9.1.3","@fastify/multipart":"^10.0.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.3.8","@interop/did-method-key":"^7.3.4","@digitalcredentials/bnid":"^5.0.0","@interop/ed25519-signature":"^7.1.4","@interop/jsonld-signatures":"^11.8.3","@interop/http-digest-header":"^3.0.0","@interop/data-integrity-core":"^8.3.0","@interop/http-signature-header":"^5.0.2","@interop/ed25519-verification-key":"^8.0.3","@interop/security-document-loader":"^9.4.4","@interop/x25519-key-agreement-key":"^5.2.1","@interop/http-signature-zcap-verify":"^12.2.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.0","devDependencies":{"tsx":"^4.20.3","eslint":"^10.4.0","rimraf":"^6.1.3","vitest":"^4.1.7","globals":"^17.6.0","prettier":"^3.8.3","@types/pg":"^8.20.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.0.0","@interop/ezcap":"^7.4.1","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.59.4","@interop/was-client":"^0.19.0","@vitest/coverage-v8":"^4.1.7","@interop/webkms-client":"^14.7.1","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.2.0","@interop/http-signature-zcap-invoke":"^6.2.4"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.14.0_1784756517976_0.9880702864399427","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"was-teaching-server","version":"0.16.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.16.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"bd4f0af152697b26cc009666c5299994ab5cdd70","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.16.0.tgz","fileCount":310,"integrity":"sha512-5c8KO/4PqsGqMUW9AHt6aC26WVqhGjJ0ySVVraJZYBBlnH501eRu6u1gNymo7G36fxH0yzuUHzvahVm4rQRWHQ==","signatures":[{"sig":"MEUCIQCwF8xNSs3zHWLRZdGNGiHpXhKnwExsnWvJWSk18OqiJgIgcFG8u5aHHVp3bkJ+wZJBvSuXzw9dIWvvPcEFJZfKmh0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3130992},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"579bf1cd094c215604d11192e7e7a8ff04d09031","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.16.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.9.0","undici":"7.28.0","fastify":"^5.8.5","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.2.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.0.5","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^9.1.3","@fastify/multipart":"^10.0.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.3.12","@interop/did-method-key":"^7.3.4","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.0.0","@interop/ed25519-signature":"^7.1.4","@interop/jsonld-signatures":"^11.8.3","@interop/http-digest-header":"^3.0.0","@interop/data-integrity-core":"^8.4.0","@interop/http-signature-header":"^5.0.2","@interop/ed25519-verification-key":"^8.0.3","@interop/security-document-loader":"^9.5.0","@interop/x25519-key-agreement-key":"^5.2.1","@interop/http-signature-zcap-verify":"^12.2.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.0","devDependencies":{"tsx":"^4.20.3","eslint":"^10.4.0","rimraf":"^6.1.3","vitest":"^4.1.7","globals":"^17.6.0","prettier":"^3.8.3","@types/pg":"^8.20.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.0.0","@interop/ezcap":"^7.4.1","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.59.4","@interop/was-client":"^0.23.0","@vitest/coverage-v8":"^4.1.7","@interop/webkms-client":"^14.7.1","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.3.1","@interop/http-signature-zcap-invoke":"^6.2.4"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.16.0_1785619899940_0.11952741796326749","host":"s3://npm-registry-packages-npm-production"}},"0.16.1":{"name":"was-teaching-server","version":"0.16.1","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.16.1","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"dd0ad358cdaafb191d6f56dade173023998f36b5","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.16.1.tgz","fileCount":310,"integrity":"sha512-Tz2NHUWmJMh4/QnEf05MwSixIPuU7yDgK3v5JlW8jJExAlE7Bzfv3rXhQU4M1MGHtLBePaJgXwsoCALlT4DeYw==","signatures":[{"sig":"MEUCIQDY4jNpZ8Nx12ZNfxqwrJMncVuLXMyoNIaUoK/YOsmlfQIgINX7NgByS637ck0E4y7fgGLuzgZFnrQuEBXRWLA680A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.16.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3133473},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"65bf0d9f19584b43271b58e90af3073a9bea4cfe","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.16.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.9.0","undici":"7.28.0","fastify":"^5.8.5","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.2.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.0.5","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^9.1.3","@fastify/multipart":"^10.0.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.3.12","@interop/did-method-key":"^7.3.4","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.0.0","@interop/ed25519-signature":"^7.1.4","@interop/jsonld-signatures":"^11.8.3","@interop/http-digest-header":"^3.0.0","@interop/data-integrity-core":"^8.4.0","@interop/http-signature-header":"^5.0.2","@interop/ed25519-verification-key":"^8.0.3","@interop/security-document-loader":"^9.5.0","@interop/x25519-key-agreement-key":"^5.2.1","@interop/http-signature-zcap-verify":"^12.2.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.5.0","devDependencies":{"tsx":"^4.20.3","eslint":"^10.4.0","rimraf":"^6.1.3","vitest":"^4.1.7","globals":"^17.6.0","prettier":"^3.8.3","@types/pg":"^8.20.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.0.0","@interop/ezcap":"^7.4.1","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.59.4","@interop/was-client":"^0.23.0","@vitest/coverage-v8":"^4.1.7","@interop/webkms-client":"^14.7.1","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.4.1","@interop/http-signature-zcap-invoke":"^6.2.4"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.16.1_1785763396471_0.5172168156441022","host":"s3://npm-registry-packages-npm-production"}},"0.17.1":{"name":"was-teaching-server","version":"0.17.1","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.17.1","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"3ed51c5131b8173ed89afc4d8bf7c49c8b68510a","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.17.1.tgz","fileCount":331,"integrity":"sha512-jKKRGxK7YMgqVBCapWaJOGcVl1sDeJio1bvMphsXd94omA1G1s0D8USY83V2YIslcn1Dy26AQFHgoo3c0dcj2A==","signatures":[{"sig":"MEYCIQDxLbMZB4Zu1MAbcyvUr6Dw5UldgQ4pfO7ITW7ISgyCygIhAKWq9ZAxKXT8WZQ2prZu5hyQLNp6bhak7P//aZxZLd0/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.17.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3196810},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"50214e91172ba93fb3af28c642217546a7899abc","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.17.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.0.5","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.3.13","@interop/did-method-key":"^7.3.4","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.0.0","@interop/ed25519-signature":"^7.1.4","@interop/jsonld-signatures":"^11.8.4","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.4.0","@interop/http-signature-header":"^5.0.2","@interop/ed25519-verification-key":"^8.0.3","@interop/security-document-loader":"^9.5.1","@interop/x25519-key-agreement-key":"^5.2.1","@interop/http-signature-zcap-verify":"^12.2.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.1","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.66.0","@interop/was-client":"^0.27.0","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^14.7.1","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.4.1","@interop/http-signature-zcap-invoke":"^6.2.4"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.17.1_1786073244895_0.7539870134470907","host":"s3://npm-registry-packages-npm-production"}},"0.17.2":{"name":"was-teaching-server","version":"0.17.2","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.17.2","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"c275d1144a38ec5d112f28bfe9de087c2affb2b3","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.17.2.tgz","fileCount":331,"integrity":"sha512-zDVHr5X0iALAK8z5cUlhLLJ8kNAaQQ17vvg2M/OhsJ1UVRoesqHt426bQFtMhbYlD3zai1sFJWzvLMZZECtGPg==","signatures":[{"sig":"MEQCIDcoayLUYWGkGgCww8VZxNZieIj0za8/DlZEhoY4NlHzAiBlpsbMjtAy3qI3H0ZnxfkOH4aFAPCVQoln0Xym+VfMhQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.17.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3202842},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"0d7fe221f870773671bda53a303c1fd2a5e1f417","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.16.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.0.5","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.3.13","@interop/did-method-key":"^7.3.4","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.2.0","@interop/ed25519-signature":"^7.1.4","@interop/jsonld-signatures":"^11.8.4","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.4.0","@interop/http-signature-header":"^5.0.2","@interop/ed25519-verification-key":"^8.0.3","@interop/security-document-loader":"^9.5.1","@interop/x25519-key-agreement-key":"^5.2.1","@interop/http-signature-zcap-verify":"^12.2.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.1","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.66.0","@interop/was-client":"^0.27.2","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^14.7.1","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.4.3","@interop/http-signature-zcap-invoke":"^6.2.4"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.17.2_1786320069787_0.31619408262693494","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"was-teaching-server","version":"0.18.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.18.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"81eed95b1077cc659d03ffeb2c64b7183d19daa7","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.18.0.tgz","fileCount":331,"integrity":"sha512-kifVKGYveKWKR2L9yrarIQ+iI7+f9vXQpv4GHalY7JVTD9xzAcLl6uRnREkRzpdWYPmNuMlaHgVmPFQ7QstGrA==","signatures":[{"sig":"MEYCIQD7v2di+EZDCHbpd0KvwtrcGTyTdoD4Oo2IsfhmygVPNwIhAIawKKVZgVr+SxMksmmgRluHD90UfhIFD2DqlsI+jgMc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3203153},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"a6ed2fe7e14a1aad2e7dac2bfc97b4006bea9a7a","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.16.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.0.5","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.5.0","@interop/did-method-key":"^7.3.4","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.2.0","@interop/ed25519-signature":"^7.1.4","@interop/jsonld-signatures":"^11.8.4","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.4.0","@interop/http-signature-header":"^5.0.2","@interop/ed25519-verification-key":"^8.0.3","@interop/security-document-loader":"^10.0.0","@interop/x25519-key-agreement-key":"^5.2.1","@interop/http-signature-zcap-verify":"^12.2.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.1","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.66.0","@interop/was-client":"^0.32.1","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^14.7.1","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.4.3","@interop/http-signature-zcap-invoke":"^6.2.4"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.18.0_1786417033129_0.8860023464108899","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"was-teaching-server","version":"0.19.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.19.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"099aeba4fdabf55a5f55c681c7fd790551f4d7ea","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.19.0.tgz","fileCount":336,"integrity":"sha512-joo6XeG9JplGzNlkEdAJc7RoDqrKj2g9otZFHz4hHMXgbyrDzb98cdqsObc15FGvMFPbWA7RBTlECWl+Qufaqw==","signatures":[{"sig":"MEUCIAC63UQYnRSHTGmHGTWALmuq2pC91Pyb3TMsdMdmhCcaAiEA/IgYmUXRWTr9eHeRPSPxqt68/3zcstOv1hHrVLfeGbA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3223686},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"13b4875bdb186e3a4d081ec39ac7e050361fd07f","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.16.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.0.5","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.6.0","@interop/did-method-key":"^7.3.4","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.2.0","@interop/ed25519-signature":"^7.1.4","@interop/jsonld-signatures":"^11.8.4","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.4.0","@interop/http-signature-header":"^5.0.2","@interop/ed25519-verification-key":"^8.0.3","@interop/security-document-loader":"^10.0.0","@interop/x25519-key-agreement-key":"^5.2.1","@interop/http-signature-zcap-verify":"^12.2.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.1","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.66.0","@interop/was-client":"^0.33.0","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^14.7.1","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.4.3","@interop/http-signature-zcap-invoke":"^6.2.4"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.19.0_1786480877795_0.6712056550893817","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"was-teaching-server","version":"0.20.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.20.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"9df74c66e5ff6e2ac82ce1c8dff7579af88e8b59","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.20.0.tgz","fileCount":341,"integrity":"sha512-gdPTgY8EigdQACHxQDNTTjvOiA4RKtgtGsH6q0c1ufFc+zTBce/849qgOdoRlFlQF6HKwaFH3vTU2HjtQ7vc5Q==","signatures":[{"sig":"MEUCIQC9BVkNelTGJGGxOKJ/bYlc566UVtfMt5pZC2WAbTLyCQIgU5cWSPz/cK4NLTGoXphgOni7Mn9GZzA06b0J514FETY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3248193},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"644e96b080e7e1cf7acea2123e399091b7aadc0a","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.16.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.0.5","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.6.0","@interop/did-method-key":"^7.3.4","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.2.0","@interop/ed25519-signature":"^7.1.4","@interop/jsonld-signatures":"^11.8.4","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.4.0","@interop/http-signature-header":"^5.0.2","@interop/ed25519-verification-key":"^8.0.3","@interop/security-document-loader":"^10.0.0","@interop/x25519-key-agreement-key":"^5.2.1","@interop/http-signature-zcap-verify":"^12.2.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.1","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.66.0","@interop/was-client":"^0.33.0","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^14.7.1","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.4.3","@interop/http-signature-zcap-invoke":"^6.2.4"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.20.0_1786564791518_0.3409523571674109","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"was-teaching-server","version":"0.21.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.21.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"08f0fb48ed51d8fb0de268282293a8c3db73f60d","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.21.0.tgz","fileCount":346,"integrity":"sha512-9CWizswywWxPLAEMJn4HdQ/lANafqQ3N2cfb4kw1Q/VP+ugfA5xjQrQ4xeE+0nzwQQQ0Gb8yMzM/6LuTpqRJXA==","signatures":[{"sig":"MEUCIQCwnvm7tK0oTBemf31W7lPPOB69V0UM4UIxakQWFsnSmAIgR4HK2PcS1SQwClT0ifzGcfEBRlb1QMKLkblm7HibzJI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3353690},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"6c9580443d06f7161259d92a3c3cb920051b42d4","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.17.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.0.5","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.8.0","@interop/did-method-key":"^7.3.4","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.2.0","@interop/ed25519-signature":"^7.1.4","@interop/jsonld-signatures":"^11.8.4","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.4.0","@interop/http-signature-header":"^5.0.2","@interop/ed25519-verification-key":"^8.0.3","@interop/security-document-loader":"^10.0.0","@interop/x25519-key-agreement-key":"^5.2.1","@interop/http-signature-zcap-verify":"^12.2.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.1","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.66.0","@interop/was-client":"^0.34.0","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^14.7.1","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.5.0","@interop/http-signature-zcap-invoke":"^6.2.4"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.21.0_1786570528136_0.20947727041125286","host":"s3://npm-registry-packages-npm-production"}},"0.21.1":{"name":"was-teaching-server","version":"0.21.1","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.21.1","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"2213b1a080e362a4d253532ba43e98ddd6cc2bb2","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.21.1.tgz","fileCount":346,"integrity":"sha512-rx1OOlYo2xgcuhO1pMU+rsg/XjNBL+HSjCiynppEYwFEK/7TmUq8LZH7XwxmzrcmVyuOX7qKGsGAUE9gcO12XA==","signatures":[{"sig":"MEQCIEEO7vjAwKYJiNe0UaPjsTgvumIiEqXnBQJ8Byi4a7rbAiAn81QBti1LUXYWMojvXh1S5rbfmkKABTTE0XpKTjcSCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.21.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3354158},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"9139b1ef9626c40a5f49643adcbf53d61fa19d44","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.17.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.1.0","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.9.1","@interop/did-method-key":"^7.3.5","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.5.0","@interop/ed25519-signature":"^7.1.4","@interop/jsonld-signatures":"^11.8.5","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.7.1","@interop/http-signature-header":"^5.0.2","@interop/ed25519-verification-key":"^8.0.4","@interop/security-document-loader":"^10.0.2","@interop/x25519-key-agreement-key":"^5.2.2","@interop/http-signature-zcap-verify":"^12.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.2","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.66.0","@interop/was-client":"^0.39.1","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^14.7.3","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.6.0","@interop/http-signature-zcap-invoke":"^6.2.4"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.21.1_1787081650301_0.01842579573340397","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"was-teaching-server","version":"0.22.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.22.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"9a0e916a15c1c06b236c7e86945bb4a7d0dc4cd3","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.22.0.tgz","fileCount":361,"integrity":"sha512-blBgzEgG2FMohoWcQ8sigucXkMJDZ4oQBcuOcNK5cNXR8BteTv1V6Xa3WDtk7gb+U2Z8emk6mVjTNs+uEJ3pBQ==","signatures":[{"sig":"MEYCIQClpp//frOFjzsk3z5LgC6EFa+68j4D4eH+FxSaw6vTmQIhAMCXuWd5GA6LxAUNzV9ceqls5/OBepYhrBocX+wprGVq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3435153},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"c518826ee47e59457318dc241ac3c191749f9ee2","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.17.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.1.0","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.9.1","@interop/did-method-key":"^7.3.5","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.5.0","@interop/ed25519-signature":"^7.1.4","@interop/jsonld-signatures":"^11.8.5","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.7.1","@interop/http-signature-header":"^5.0.2","@interop/ed25519-verification-key":"^8.0.4","@interop/security-document-loader":"^10.0.4","@interop/x25519-key-agreement-key":"^5.2.2","@interop/http-signature-zcap-verify":"^12.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.3","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.66.0","@interop/was-client":"^0.39.2","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^14.7.3","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.6.0","@interop/http-signature-zcap-invoke":"^6.2.4"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.22.0_1787168218590_0.7790389330236835","host":"s3://npm-registry-packages-npm-production"}},"0.22.1":{"name":"was-teaching-server","version":"0.22.1","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.22.1","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"c1413c8f1ccae6c75a85005887de25452d144203","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.22.1.tgz","fileCount":361,"integrity":"sha512-WzasILuLEhFMrtRcJg3PrUyf3snet/r0F24BO5qeDxE3ofRWxU4m7FI/3/S4JoKd+TDhxIa1m+CP3aXrmOwYNQ==","signatures":[{"sig":"MEUCIBwpQN6d9WEvPzIiuov4+qy2AyeHfu0ths0MQUXdk5O4AiEAhP2rbEwy0trdB5mZmmDTjCXfxKYCZ8H7o3sHkA0Z4wM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.22.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3437779},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"f4a6f2ae9c3f0476e5a14cc60e0915f5560b8d63","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.17.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.1.0","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.9.1","@interop/did-method-key":"^7.3.5","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.5.0","@interop/ed25519-signature":"^7.1.4","@interop/jsonld-signatures":"^11.8.5","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.7.1","@interop/http-signature-header":"^5.0.2","@interop/ed25519-verification-key":"^8.0.4","@interop/security-document-loader":"^10.0.4","@interop/x25519-key-agreement-key":"^5.2.2","@interop/http-signature-zcap-verify":"^12.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.3","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.66.0","@interop/was-client":"^0.39.2","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^14.7.3","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.6.0","@interop/http-signature-zcap-invoke":"^6.2.4"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.22.1_1787956441495_0.3326211179916656","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"was-teaching-server","version":"0.23.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.23.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"621f22c9b9db0feec02cd0b9b80ed87b5fa8c1e5","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.23.0.tgz","fileCount":361,"integrity":"sha512-Du/V5UvTt/x2QVKXDwEI7MdJK+o9YHP5/XzyebU60cc6/05AaJOZnKXAsTIR/rsxujnPXbVErezNmE7Z7h6XbQ==","signatures":[{"sig":"MEUCIQCTegQlTKlpZB7vQ8gcTnnLguJP7f9/voiXfpy55F5JiQIgJM1MMue+W4pqibkG8+xsAccQSZzE1hY06S77kdGHLHo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3441957},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"9ef0e7367d6f12c4cdd4dcec2a9b4a4b0d86e612","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.17.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.1.0","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.9.1","@interop/did-method-key":"^7.3.5","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.6.0","@interop/ed25519-signature":"^7.2.0","@interop/jsonld-signatures":"^11.8.5","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.7.1","@interop/data-integrity-proof":"^3.4.5","@interop/http-signature-header":"^5.0.3","@interop/ed25519-verification-key":"^8.0.4","@interop/security-document-loader":"^10.0.4","@interop/x25519-key-agreement-key":"^5.2.2","@interop/http-signature-zcap-verify":"^12.2.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.5","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.66.0","@interop/was-client":"^0.46.1","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^14.7.4","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.6.1","@interop/http-signature-zcap-invoke":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.23.0_1788027707522_0.8378265532163014","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"was-teaching-server","version":"0.24.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.24.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"82b0eb5d961caf9dc87fbdbe0b45639739be0b9a","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.24.0.tgz","fileCount":361,"integrity":"sha512-8y9UzyFlG5qS/bAonRwrLME3LzKk+VVSV9xwO29uRQbHlXihpTLfLj/O5ka1yqt77A0OYeVnrx8k/LIjwMGByA==","signatures":[{"sig":"MEYCIQDS48uqZ6T1WG6Cz1WAqkf8d2/2u005F+lW4RAr5L+vUQIhAJLVwVNkDFnHPzLeTeOSTYNJukN2AA10m2xySghSwUn5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.24.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3451921},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"1a4ca26e7587b951df367fe7e28961e95c117ae2","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.17.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.1.0","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.9.1","@interop/did-method-key":"^7.3.5","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.6.1","@interop/ed25519-signature":"^7.2.0","@interop/jsonld-signatures":"^11.8.5","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.7.1","@interop/data-integrity-proof":"^3.4.5","@interop/http-signature-header":"^5.0.3","@interop/ed25519-verification-key":"^8.0.4","@interop/security-document-loader":"^10.0.4","@interop/x25519-key-agreement-key":"^5.2.2","@interop/http-signature-zcap-verify":"^12.2.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.5","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.66.0","@interop/was-client":"^0.47.0","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^14.7.4","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.7.0","@interop/http-signature-zcap-invoke":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.24.0_1788299378554_0.5628806557132058","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"was-teaching-server","version":"0.25.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.25.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"37a0c112e24d25d34d803d94285ee9cfa86ecadc","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.25.0.tgz","fileCount":361,"integrity":"sha512-AkOEjuGEmzmcCTo/r6/EK7UyULRKrGZJWVYdeSeqnfEGYkZVTtpgm8QxeJksMLs2QnQpYBkgejTzPxh7gxxzeA==","signatures":[{"sig":"MEYCIQDxV97yEZfO1OjDHBwFMExUhWK+u49Kbciyj/I1F6QxrQIhAOK6JA/cvzga0ZhxsX6npiSUpi6G/Bz8/JtzOJb3aJXc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.25.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3461364},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"246144255a1ff9b9ea9081c5e1e5a7ace49da6ec","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.17.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.1.0","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.9.1","@interop/did-method-key":"^7.3.5","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.6.1","@interop/ed25519-signature":"^7.2.0","@interop/jsonld-signatures":"^11.8.5","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.7.1","@interop/data-integrity-proof":"^3.4.5","@interop/http-signature-header":"^5.0.3","@interop/ed25519-verification-key":"^8.0.4","@interop/security-document-loader":"^10.0.4","@interop/x25519-key-agreement-key":"^5.2.2","@interop/http-signature-zcap-verify":"^12.2.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.5","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.66.0","@interop/was-client":"^0.47.0","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^14.7.4","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.7.0","@interop/http-signature-zcap-invoke":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.25.0_1788302415624_0.9388603616969076","host":"s3://npm-registry-packages-npm-production"}},"0.25.1":{"name":"was-teaching-server","version":"0.25.1","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.25.1","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"8787bfd3977c3edd249bbc59edfc61eb60b71a5e","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.25.1.tgz","fileCount":371,"integrity":"sha512-UJhqJAXKuu66K0s/kb20P0IB+/AD+naIJWnEI/QyYxb/YMJWa6O+603BjttAra7KkIi+DNx3iIKfdoIZKgs0Hg==","signatures":[{"sig":"MEUCIQCF3rOwuYR4ns0xhmHOMijrVjIhx4k16OwjyRR+Ft2h9AIgTYMhBhiGFhttrD3eegJG/FLwm9UMcFGkBT1o0RWwiGU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.25.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3596232},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"a8963a5d4fa46118e8fe56b8a15272fc783ff748","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.19.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","lru-cache":"11.5.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.1.0","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.9.1","@interop/did-method-key":"^7.3.5","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.6.1","@interop/ed25519-signature":"^7.2.0","@interop/jsonld-signatures":"^11.8.5","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.7.1","@interop/data-integrity-proof":"^3.4.5","@interop/http-signature-header":"^5.0.3","@interop/ed25519-verification-key":"^8.0.4","@interop/security-document-loader":"^10.1.0","@interop/x25519-key-agreement-key":"^5.2.2","@interop/http-signature-zcap-verify":"^12.2.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.5","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.66.0","@interop/was-client":"^0.47.0","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^14.7.4","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.7.0","@interop/http-signature-zcap-invoke":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.25.1_1788473136442_0.5308223862301547","host":"s3://npm-registry-packages-npm-production"}},"0.26.0":{"name":"was-teaching-server","version":"0.26.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.26.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"7c536abbd9af95debf136cae640d8e0ab728e2fc","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.26.0.tgz","fileCount":381,"integrity":"sha512-2VnsOy3SwSrV/hihJ9/e7kkPwLpAg5gDl+DCeILRCFb8Jdql0Bp5uJrs1P+KmQ6FUifGz0P0JXKslKAkewvVLg==","signatures":[{"sig":"MEYCIQCnhothsiQ6aSmbZktdSKsxn81RHAjuzKnfXr0Q2g50dQIhAPyR2gIRconGdJgTCqAPu0caNpXK2jn6wR1I7gciymY9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.26.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3635934},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"debb8ddb3786f0b313bb4ac570d67c130be46c14","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.19.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","lru-cache":"11.5.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.1.0","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.10.0","@interop/did-method-key":"^7.4.0","@interop/minimal-cipher":"^7.10.0","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.8.0","@interop/ed25519-signature":"^7.2.1","@interop/jsonld-signatures":"^11.8.5","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.7.1","@interop/data-integrity-proof":"^3.4.5","@interop/http-signature-header":"^5.0.3","@interop/ed25519-verification-key":"^8.1.0","@interop/security-document-loader":"^10.1.1","@interop/x25519-key-agreement-key":"^5.3.0","@interop/http-signature-zcap-verify":"^12.2.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.6","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.66.0","@interop/was-client":"^0.48.1","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^14.7.5","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.8.0","@interop/http-signature-zcap-invoke":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.26.0_1788660417723_0.7084675579520008","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"was-teaching-server","version":"0.27.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.27.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"0793c165b68120490dcf8f190e85d5c1c66278d7","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.27.0.tgz","fileCount":381,"integrity":"sha512-+TQcABTkN+wn/f3juoNRe3mY2KzvV1/422njaKdY/1eCJtJ4PJ1VhimW7y7Arubtyr7nL7JXZwH4eTaLdSd8Yg==","signatures":[{"sig":"MEQCIEPB7ovZlTtRtSf5CBQ3L66Yp1DL8FAgGaUYp2+hnWHqAiAxTzwY6Mc2z9TkBiwlYV/6G2WbyoiheiAib0AJBrUiDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.27.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3651158},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"2090a606f2723e4d57ef0090db55fd1bdab9427e","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.19.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","lru-cache":"11.5.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.1.0","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.10.0","@interop/did-method-key":"^7.4.0","@interop/minimal-cipher":"^7.10.0","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.8.0","@interop/ed25519-signature":"^7.2.1","@interop/jsonld-signatures":"^11.8.5","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.7.1","@interop/data-integrity-proof":"^3.4.5","@interop/http-signature-header":"^5.0.3","@interop/ed25519-verification-key":"^8.1.0","@interop/security-document-loader":"^10.1.1","@interop/x25519-key-agreement-key":"^5.3.0","@interop/http-signature-zcap-verify":"^12.2.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.6","@types/mime-types":"3.0.1","@types/tar-stream":"3.1.4","typescript-eslint":"^8.66.0","@interop/was-client":"^0.49.0","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^14.7.5","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.8.0","@interop/http-signature-zcap-invoke":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.27.0_1788663407167_0.8424460465325694","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"name":"was-teaching-server","version":"0.28.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.28.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"e2264494b0c9616fddd88b08f62d042ae4895e69","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.28.0.tgz","fileCount":391,"integrity":"sha512-W5pnyPZ7FC0n3IbUZUtTIGiv4jr22Mxen1PUoMmSDoPX6/3Jo+HCk/ymx6rcD29o8FZqgzSHwrN2Isn0MxYQbg==","signatures":[{"sig":"MEQCIEa8FaQ7xSc1pYuV5aZJrBJHrnmSWdlyhBJXgIwZzumkAiBlB3i6A1bGP5eSY0FCxLd92RcmuKVJfj9D30wmM7AmCQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.28.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3866037},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"669b5bd5d65c8040b2d01b55ec3f5f7d2fd4facd","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.19.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","lru-cache":"11.5.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","@scure/base":"^2.4.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.1.0","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.11.0","@interop/did-method-key":"^7.4.0","@interop/minimal-cipher":"^7.10.0","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.8.0","@interop/ed25519-signature":"^7.2.1","@interop/jsonld-signatures":"^11.8.5","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.7.1","@interop/data-integrity-proof":"^3.4.5","@interop/http-signature-header":"^5.0.3","@interop/ed25519-verification-key":"^8.1.0","@interop/security-document-loader":"^10.1.1","@interop/x25519-key-agreement-key":"^5.3.0","@interop/http-signature-zcap-verify":"^12.2.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.6","@types/mime-types":"3.0.1","typescript-eslint":"^8.66.0","@interop/was-client":"^0.51.0","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^14.7.5","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.10.0","@interop/http-signature-zcap-invoke":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.28.0_1788831795171_0.6429208903307964","host":"s3://npm-registry-packages-npm-production"}},"0.29.0":{"name":"was-teaching-server","version":"0.29.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.29.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"98c895197d35dfe07a258ae298da19ab85d17506","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.29.0.tgz","fileCount":391,"integrity":"sha512-Vu2b/hO2VZ/VArXjzMSCFI2KzJdi2AAv9I8XRKL4lBnCFb3kxMHqolSx294Hhxe1BZhwQaxiVgjR/nKJj0zEuw==","signatures":[{"sig":"MEQCIFIhM23N8S/75DWvtB4BM63dqOsQ4GCIYTGVeSumUud/AiAEAKj0dnUkPPrOKQ+90xhgtwLJtwIRJYlmiwL2ghmXZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.29.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3926488},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"f5c5b0d699d9dee2851c2070efae14403cdbcc01","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.19.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","lru-cache":"11.5.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","@scure/base":"^2.4.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.1.0","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.11.0","@interop/did-method-key":"^7.4.0","@interop/minimal-cipher":"^7.10.0","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.8.0","@interop/ed25519-signature":"^7.2.1","@interop/jsonld-signatures":"^11.8.5","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.7.1","@interop/data-integrity-proof":"^3.4.5","@interop/http-signature-header":"^5.0.3","@interop/ed25519-verification-key":"^8.1.0","@interop/security-document-loader":"^10.1.1","@interop/x25519-key-agreement-key":"^5.3.0","@interop/http-signature-zcap-verify":"^12.2.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.6","@types/mime-types":"3.0.1","typescript-eslint":"^8.66.0","@interop/was-client":"^0.53.0","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^14.7.5","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.12.0","@interop/http-signature-zcap-invoke":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.29.0_1788900479585_0.9163333643407159","host":"s3://npm-registry-packages-npm-production"}},"0.30.0":{"name":"was-teaching-server","version":"0.30.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.30.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"c78dfe4c2cdf5ea3926d3134f46bb17a12d24fa8","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.30.0.tgz","fileCount":391,"integrity":"sha512-FEl/7lknIA5u62Zvb063mEQnDlV0Ct0BKu9ja9AYDx37TQmuuvjGiz4BsKt2/CySz+WY5z1ph0rsXwavIwLtrQ==","signatures":[{"sig":"MEQCIF6hLEcwPqqWnAymAs5YAD5V9Nz1AtX5t3zE7lWxwgu+AiBL1reldtDTxJebbpMoHB1Xhf7FqsEyau4mZar3AnHUmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.30.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3950382},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"6992db8200a8987be5440d9f92b6d262bc4b2847","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.19.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","lru-cache":"11.5.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","@scure/base":"^2.4.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.2.0","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.13.0","@interop/did-method-key":"^7.4.1","@interop/minimal-cipher":"^7.10.1","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.8.0","@interop/ed25519-signature":"^7.2.1","@interop/jsonld-signatures":"^11.8.5","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.7.1","@interop/data-integrity-proof":"^3.4.5","@interop/http-signature-header":"^5.0.3","@interop/ed25519-verification-key":"^8.1.0","@interop/security-document-loader":"^10.1.1","@interop/x25519-key-agreement-key":"^5.4.0","@interop/http-signature-zcap-verify":"^12.2.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.7","@types/mime-types":"3.0.1","typescript-eslint":"^8.66.0","@interop/was-client":"^0.58.0","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^15.0.0","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.14.0","@interop/http-signature-zcap-invoke":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.30.0_1789015015425_0.4328650525491198","host":"s3://npm-registry-packages-npm-production"}},"0.31.0":{"name":"was-teaching-server","version":"0.31.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.31.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"b043b2bd5e2e371416012cea7402763f840eed97","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.31.0.tgz","fileCount":391,"integrity":"sha512-DquAs03Yeaa4/eukAxqOyCzQhzKaLReHjVBNOPYpHEsLBmesRSw3/8ksjhQ/4vtAlRvMxuypVwH64OJjuNC4pg==","signatures":[{"sig":"MEUCIQDA8FO8TP+ZzNjVDdXVthgO3Ai7mMe8eUMVEmoOzqMILAIgKSU1LPYCnqV9Tkek4jAzmWigZHTrdUrOLS2hPKlhI8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.31.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3950638},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"dceb147b8ef731be2b32d9046ef90dd661661785","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.19.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","lru-cache":"11.5.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","@scure/base":"^2.4.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.2.0","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.13.0","@interop/did-method-key":"^7.4.2","@interop/minimal-cipher":"^7.10.2","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.9.0","@interop/ed25519-signature":"^7.2.2","@interop/jsonld-signatures":"^11.8.5","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.7.1","@interop/data-integrity-proof":"^3.4.5","@interop/http-signature-header":"^5.0.3","@interop/ed25519-verification-key":"^8.2.0","@interop/security-document-loader":"^10.1.2","@interop/x25519-key-agreement-key":"^5.4.0","@interop/http-signature-zcap-verify":"^12.2.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.8","@types/mime-types":"3.0.1","typescript-eslint":"^8.66.0","@interop/was-client":"^0.59.1","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^15.0.1","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.14.0","@interop/http-signature-zcap-invoke":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.31.0_1789077009191_0.7144451886739793","host":"s3://npm-registry-packages-npm-production"}},"0.32.0":{"name":"was-teaching-server","version":"0.32.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.32.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"a1ea58dbd98ddd6756a6aa67cf9d809d410a0f69","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.32.0.tgz","fileCount":396,"integrity":"sha512-7UfQYTIgPvjuo6r6uLTvE4XNZqDxH/wl8BGNhETCMSBPK0O5xezKa4Oan0rVBscIE+4JXLA/r1YX0w7yPbtGwA==","signatures":[{"sig":"MEYCIQD2ettl+CMYGmtQQTJRrAJ+pjmqcJ47CcvZg9MSADuxvAIhAPa+ObXvjFUloJcNX+6XhRkBvGW21zv9kvmid6lIvlRN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.32.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4042338},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"4651f528eca433b2e8a9662209baa9ff9c8cd6e6","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.19.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","lru-cache":"11.5.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","@scure/base":"^2.4.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.2.0","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.14.1","@interop/did-method-key":"^7.4.2","@interop/minimal-cipher":"^7.10.2","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.9.0","@interop/ed25519-signature":"^7.2.2","@interop/jsonld-signatures":"^11.8.5","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.7.1","@interop/data-integrity-proof":"^3.4.5","@interop/http-signature-header":"^5.0.3","@interop/ed25519-verification-key":"^8.2.0","@interop/security-document-loader":"^10.1.2","@interop/x25519-key-agreement-key":"^5.4.0","@interop/http-signature-zcap-verify":"^12.2.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.8","@types/mime-types":"3.0.1","typescript-eslint":"^8.66.0","@interop/was-client":"^0.61.0","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^15.0.1","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.16.0","@interop/http-signature-zcap-invoke":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.32.0_1789264848177_0.4010530425098986","host":"s3://npm-registry-packages-npm-production"}},"0.33.0":{"name":"was-teaching-server","version":"0.33.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.33.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"2c4f5b4c2ffe6b7c81e1564d02986b741db78203","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.33.0.tgz","fileCount":411,"integrity":"sha512-aOdWiOTfKiJXHCCB+1fQBLVX1qGfZ9EthcI0rRXuVTlLH/uBbeEPCgiUizDvUAAQ0LFgHpWSga880T7f/R7n4Q==","signatures":[{"sig":"MEYCIQCqcUvWW210WgrogDoUk1AHdYzDgC1IfT/7rNtMaQUzjAIhAIDSrrZXzRz8WDLF0Vy1EHpR3YzkzmA6PudqcXBkNDR5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBQxUS8u/NmzOnUsxHrQ3hI68NhXQbjNskoGNT6GXxsrAiByVHULuE1jWHancnOXHUOb215ZC4LKGo0AAF3R6tNP7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.33.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4124129},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"4a7c3d3583e18aede7d0f03645e71e48d67e6834","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.19.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","lru-cache":"11.5.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","@scure/base":"^2.4.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.2.0","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.15.0","@interop/did-method-key":"^7.4.2","@interop/minimal-cipher":"^7.10.2","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.9.0","@interop/ed25519-signature":"^7.2.2","@interop/jsonld-signatures":"^11.8.5","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.7.1","@interop/data-integrity-proof":"^3.4.5","@interop/http-signature-header":"^5.0.3","@interop/ed25519-verification-key":"^8.2.0","@interop/security-document-loader":"^10.1.2","@interop/x25519-key-agreement-key":"^5.4.0","@interop/http-signature-zcap-verify":"^12.2.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.8","@types/mime-types":"3.0.1","typescript-eslint":"^8.66.0","@interop/was-client":"^0.62.2","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^15.0.1","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.18.0","@interop/http-signature-zcap-invoke":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.33.0_1789414900480_0.4231808145674174","host":"s3://npm-registry-packages-npm-production"}},"0.34.0":{"name":"was-teaching-server","version":"0.34.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.34.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"9685df34b3e5c2985c6d34f6c637fc488709821d","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.34.0.tgz","fileCount":411,"integrity":"sha512-d9xAp0re1zQ0UG+ncBg7RuLxU4voMlbqgZab0k04Hl+NdrQDp2RIYJf5YJWnaJrfXWoArHRlhH5Hg+r/2EV47Q==","signatures":[{"sig":"MEUCIQD1mzmuy3cFmuScJ7hbv9bAcvwiL+VwNgpSE+hYDZWL/wIgR1IV3AGmlBZbvjYPQVD346S5J6gqk63gu4/TThTiUt4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBwyjzF9xchCw4nRYxh2i267E+WbVCxCOzqGAariq8yBAiARU127F8OzgI4Lbj9mlAeSvpZz7en3D4Mid157AWO09Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.34.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4124325},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"88d87966456398af33e18d362e815a90f25d4da6","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.19.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","lru-cache":"11.5.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","@scure/base":"^2.4.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.2.0","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.15.0","@interop/did-method-key":"^7.4.2","@interop/minimal-cipher":"^7.10.2","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.9.0","@interop/ed25519-signature":"^7.2.2","@interop/jsonld-signatures":"^11.8.5","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.7.1","@interop/data-integrity-proof":"^3.4.5","@interop/http-signature-header":"^5.0.3","@interop/ed25519-verification-key":"^8.2.0","@interop/security-document-loader":"^10.1.2","@interop/x25519-key-agreement-key":"^5.4.0","@interop/http-signature-zcap-verify":"^12.2.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.8","@types/mime-types":"3.0.1","typescript-eslint":"^8.66.0","@interop/was-client":"^0.62.2","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^15.0.1","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.19.0","@interop/http-signature-zcap-invoke":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.34.0_1789416031580_0.19078647288708184","host":"s3://npm-registry-packages-npm-production"}},"0.35.0":{"name":"was-teaching-server","version":"0.35.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.35.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"c3829c1130c27778b8ef03e21885d48e51824865","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.35.0.tgz","fileCount":411,"integrity":"sha512-icB9rPoXdTzCOcPFm9i6a9Jp+S9UKky9YLIh04Xf1HD+azgYJT2p+IhyvpD7d/2bjY3v/g9+IeLYOOc9Zx1glw==","signatures":[{"sig":"MEQCIGRaN8omNyT9uUD94GXH8ZqN3FRFAlf7miCIsb/h6RokAiBZvSvEa73Xu2EtD4lgsnwh6QyEjZFo+Pyv+LQMYLVwAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBS6Yspx3IJcem9FT7JJQyDHnd6DBPHYNScn02kGeeK4AiEAmffZm2b/j358bG/uxHuqS7ZOtpCUhr1MDJDbIrhfhcw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.35.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4135960},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"72fbab53260cfae7869d6cac800727e47e29a0c4","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.19.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","lru-cache":"11.5.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","@scure/base":"^2.4.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.2.0","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.15.0","@interop/did-method-key":"^7.4.2","@interop/minimal-cipher":"^7.10.2","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.9.0","@interop/ed25519-signature":"^7.2.2","@interop/jsonld-signatures":"^11.8.5","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.7.1","@interop/data-integrity-proof":"^3.4.5","@interop/http-signature-header":"^5.0.3","@interop/ed25519-verification-key":"^8.2.0","@interop/security-document-loader":"^10.1.2","@interop/x25519-key-agreement-key":"^5.4.0","@interop/http-signature-zcap-verify":"^12.2.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.8","@types/mime-types":"3.0.1","typescript-eslint":"^8.66.0","@interop/was-client":"^0.63.0","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^15.0.1","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.19.0","@interop/http-signature-zcap-invoke":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.35.0_1789422011256_0.07797390772960355","host":"s3://npm-registry-packages-npm-production"}},"0.35.1":{"name":"was-teaching-server","version":"0.35.1","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.35.1","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"87b9421a91c2409899c3d43fd1460190425d7784","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.35.1.tgz","fileCount":411,"integrity":"sha512-43RMTd/ZJC9fDE7JvdDUuINhuv4BWEguEHT71qjwxbIv6ZREXKIuw9y2XdXzSaUOSAuv2m89ZmDHnI1QOg7xGQ==","signatures":[{"sig":"MEUCIQDHDJHit7jr2iVHHStwr6YvgvuF9lj4peFCs4UChgV2sQIgKEbBvjdAMZiv+hQlKO1Mxxu1is9WJghQmXhLVRirVIU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEMCIA4SKiL/cY+lUrD2tu+S4tAGPV2LY6UTIN+oOTTK+m1kAh9YJvAdEyZs0to05NbAbIGsMSAWWvzzGkJazgnfRQV0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.35.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4136013},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"34945b3815277c8c2915887daefdf01d7abfb327","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.19.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","lru-cache":"11.5.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","@scure/base":"^2.4.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.2.0","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.15.0","@interop/did-method-key":"^7.4.2","@interop/minimal-cipher":"^7.10.2","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.9.0","@interop/ed25519-signature":"^7.2.2","@interop/jsonld-signatures":"^11.8.5","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.7.1","@interop/data-integrity-proof":"^3.4.5","@interop/http-signature-header":"^5.0.3","@interop/ed25519-verification-key":"^8.2.0","@interop/security-document-loader":"^10.1.2","@interop/x25519-key-agreement-key":"^5.4.0","@interop/http-signature-zcap-verify":"^12.2.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.8","@types/mime-types":"3.0.1","typescript-eslint":"^8.66.0","@interop/was-client":"^0.63.0","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^15.0.1","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.19.0","@interop/http-signature-zcap-invoke":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.35.1_1789423673141_0.19016079611758796","host":"s3://npm-registry-packages-npm-production"}},"0.36.0":{"name":"was-teaching-server","version":"0.36.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.36.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"c0eaeaf74e94d256176e3fed9b90463f72b27076","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.36.0.tgz","fileCount":411,"integrity":"sha512-Fw3wEJuJnopuTUwO/hP+0mL8QslVOYWl44XsaL01pbondX6jvgDB62D1Ce86fuVwCcYlCt9YhAWJxkoCgg6zPw==","signatures":[{"sig":"MEQCIARWuIX+6/GIuvdXMPhHawlo6IXRqdsGgNB3N5/jfUeyAiAF47XDkQSO566J0oQF9Fv2d38OB1Q0I4cVstlFaJJ8bA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGJ+CwijRwIWFcSU5+eYhCzre0u902/9BnFhqwZW+Mc2AiEA+PN25JD0dT3sBTZFuvVE5xlqM+4caF8QR8t1qYQ85pc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.36.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4143818},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"4e0f590bfa3f4317564df14bd23ecdc081f43a3c","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.19.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","lru-cache":"11.5.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","@scure/base":"^2.4.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.3.0","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.18.0","@interop/did-method-key":"^7.4.2","@interop/minimal-cipher":"^7.10.2","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.9.0","@interop/ed25519-signature":"^7.2.2","@interop/jsonld-signatures":"^11.8.5","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.7.1","@interop/data-integrity-proof":"^3.4.5","@interop/http-signature-header":"^5.0.3","@interop/ed25519-verification-key":"^8.2.0","@interop/security-document-loader":"^10.1.2","@interop/x25519-key-agreement-key":"^5.4.0","@interop/http-signature-zcap-verify":"^12.2.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.8","@types/mime-types":"3.0.1","typescript-eslint":"^8.66.0","@interop/was-client":"^0.67.0","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^15.0.1","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.21.0","@interop/http-signature-zcap-invoke":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.36.0_1789611326006_0.9773155271853389","host":"s3://npm-registry-packages-npm-production"}},"0.37.0":{"name":"was-teaching-server","version":"0.37.0","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","_id":"was-teaching-server@0.37.0","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"homepage":"https://github.com/interop-alliance/was-teaching-server","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"c0d776bcd24583aac622a8cbdfd3734c2546b283","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.37.0.tgz","fileCount":411,"integrity":"sha512-2iDJgD0ymqvGN3bdOP2y63NtDBNiQgO4rBjilJa5n+TiHRwsYaQ3+Rgsvu+48KA5NuZM0UZNMh1GKWfLi/i7BA==","signatures":[{"sig":"MEUCIQDijcMB9WEgWMdgzbPyElNd9KHye3s6hqLFMkQwd7vBxQIgQesw3ZI5zoHe2KzFRT6TOkn0n/jTE700jlqPVgAdt6w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDY0nV9UTeiabhUFL0RJ+0zWHgcxNb7SQ/stzyDgg3p8AiEAsTf1xSBFMK3/x74aJz8IqC6WvkI68vD6W8VETjjXy4w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.37.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4149727},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"1fac899367f1c25b48db565c1186c82a2e4a6082","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.19.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","lru-cache":"11.5.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","@scure/base":"^2.4.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.3.0","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.18.0","@interop/did-method-key":"^7.4.2","@interop/minimal-cipher":"^7.10.2","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.9.0","@interop/ed25519-signature":"^7.2.2","@interop/jsonld-signatures":"^11.8.5","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.7.1","@interop/data-integrity-proof":"^3.4.5","@interop/http-signature-header":"^5.0.3","@interop/ed25519-verification-key":"^8.2.0","@interop/security-document-loader":"^10.1.2","@interop/x25519-key-agreement-key":"^5.4.0","@interop/http-signature-zcap-verify":"^12.2.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.8","@types/mime-types":"3.0.1","typescript-eslint":"^8.66.0","@interop/was-client":"^0.67.0","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^15.0.1","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.21.0","@interop/http-signature-zcap-invoke":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/was-teaching-server_0.37.0_1789615308548_0.2960183293612406","host":"s3://npm-registry-packages-npm-production"}},"0.38.0":{"_id":"was-teaching-server@0.38.0","bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"dist":{"shasum":"55f13ddd02e1c182de85bd0282560ef9e0561b8f","tarball":"https://registry.npmjs.org/was-teaching-server/-/was-teaching-server-0.38.0.tgz","fileCount":406,"integrity":"sha512-KWrsULRgkBmyprA2RLwCT356n/k9eh9eCkWqPMP9KlcTkvCJjHvKe4rAAILigzTVtAOfwSUT7RYkR2kG4QnAOQ==","signatures":[{"sig":"MEQCIHwRSBZmPmKsGZ+D9EJlI7m9eBoq5zdG9u/ln3hGRF06AiA1V8lACq3HZQLkAybubZzffR6if/zM07eH59nLk0h2/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEi1mgfvsvI6K12U2FEkdsLFGiyT4dcXd9UHflYQhDjtAiBSU6RmueBx2Uf6kEmYdDj+qfBf9oO98eGUMcx48FJT3A=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/was-teaching-server@0.38.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4223118},"main":"./dist/index.js","name":"was-teaching-server","type":"module","types":"./dist/index.d.ts","author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"engines":{"node":">=24.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"d771db54cf8bd8a8f67f614d9a048f1c47a0d5b2","license":"AGPL-3.0-or-later","scripts":{"dev":"tsx watch src/start.js","fix":"eslint --fix src test && pnpm run format","lint":"eslint src test","test":"pnpm run fix && pnpm run lint && pnpm run lint:tests && pnpm run build && pnpm run test-node","build":"pnpm run clear && tsc && pnpm run copy-assets && pnpm run write-build-info","clear":"rimraf dist/*","start":"node dist/start.js | pino-pretty","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"*.md\"","rebuild":"pnpm run clear && pnpm run build","test:pg":"WAS_TEST_DATABASE_URL=postgres://was:was@localhost:5433/was vitest run","test-node":"vitest run","lint:tests":"tsc -p tsconfig.dev.json","conformance":"was-conformance","copy-assets":"node -e \"require('node:fs').cpSync('src/views','dist/views',{recursive:true})\"","test:coverage":"vitest run --coverage","write-build-info":"tsx scripts/write-build-info.ts","conformance:local":"tsx scripts/conformance-local.ts","reencrypt-kms-records":"tsx scripts/reencrypt-kms-records.ts"},"version":"0.38.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b81fe4c6-e8f6-4e12-aac8-190096296719"}},"homepage":"https://github.com/interop-alliance/was-teaching-server","repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"_npmVersion":"11.19.0","description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","directories":{},"maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.22.0","pino":"^10.3.1","uuid":"^14.0.1","yaml":"^2.9.0","undici":"8.10.0","fastify":"^5.11.2","lru-cache":"11.5.2","handlebars":"^4.7.9","mime-types":"^3.0.2","tar-stream":"^3.2.0","@scure/base":"^2.4.0","pino-pretty":"^13.1.3","@fastify/cors":"^11.3.0","@fastify/view":"^12.0.0","@interop/zcap":"^11.3.2","fs-json-store":"^8.0.1","fastify-plugin":"^6.0.0","@fastify/static":"^10.1.3","@fastify/multipart":"^10.1.0","@interop/lru-memoize":"^4.0.3","@interop/storage-core":"^0.19.1","@interop/space-archive":"^0.2.1","@interop/did-method-key":"^7.4.3","@interop/minimal-cipher":"^7.10.3","@digitalcredentials/bnid":"^5.0.0","@interop/did-method-webvh":"^5.11.0","@interop/ed25519-signature":"^7.2.3","@interop/jsonld-signatures":"^11.8.6","@interop/http-digest-header":"^3.1.0","@interop/data-integrity-core":"^8.8.0","@interop/data-integrity-proof":"^3.4.6","@interop/http-signature-header":"^5.0.3","@interop/ed25519-verification-key":"^8.2.1","@interop/security-document-loader":"^10.1.3","@interop/x25519-key-agreement-key":"^5.4.1","@interop/http-signature-zcap-verify":"^12.2.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.20.0","devDependencies":{"tsx":"^4.23.9","eslint":"^10.8.0","rimraf":"^6.1.3","vitest":"^4.1.10","globals":"^17.9.0","prettier":"^3.9.6","@types/pg":"^8.20.4","@eslint/js":"^10.0.1","typescript":"~6.0.3","@types/node":"^26.1.2","@interop/ezcap":"^7.4.10","@types/mime-types":"3.0.1","typescript-eslint":"^8.66.0","@interop/was-client":"^0.71.0","@vitest/coverage-v8":"^4.1.10","@interop/webkms-client":"^15.0.2","eslint-config-prettier":"^10.1.8","@interop/was-conformance-suite":"^0.22.1","@interop/http-signature-zcap-invoke":"^6.2.6"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/was-teaching-server_0.38.0_1790482885119_0.5177117467942471"}}},"time":{"created":"2026-07-19T14:57:11.747Z","modified":"2026-09-27T04:21:25.579Z","0.9.1":"2026-07-19T14:57:11.990Z","0.10.0":"2026-07-19T17:31:42.679Z","0.11.0":"2026-07-20T02:38:15.889Z","0.12.0":"2026-07-20T20:49:29.248Z","0.13.0":"2026-07-21T20:25:03.662Z","0.14.0":"2026-07-22T21:41:58.261Z","0.16.0":"2026-08-01T21:31:40.192Z","0.16.1":"2026-08-03T13:23:16.651Z","0.17.1":"2026-08-07T03:27:25.089Z","0.17.2":"2026-08-10T00:01:09.975Z","0.18.0":"2026-08-11T02:57:13.379Z","0.19.0":"2026-08-11T20:41:17.962Z","0.20.0":"2026-08-12T19:59:51.714Z","0.21.0":"2026-08-12T21:35:28.298Z","0.21.1":"2026-08-18T19:34:10.538Z","0.22.0":"2026-08-19T19:36:58.764Z","0.22.1":"2026-08-28T22:34:01.688Z","0.23.0":"2026-08-29T18:21:47.722Z","0.24.0":"2026-09-01T21:49:38.758Z","0.25.0":"2026-09-01T22:40:15.876Z","0.25.1":"2026-09-03T22:05:36.667Z","0.26.0":"2026-09-06T02:06:57.883Z","0.27.0":"2026-09-06T02:56:47.343Z","0.28.0":"2026-09-08T01:43:15.375Z","0.29.0":"2026-09-08T20:47:59.752Z","0.30.0":"2026-09-10T04:36:55.586Z","0.31.0":"2026-09-10T21:50:09.324Z","0.32.0":"2026-09-13T02:00:48.367Z","0.33.0":"2026-09-14T19:41:40.594Z","0.34.0":"2026-09-14T20:00:31.721Z","0.35.0":"2026-09-14T21:40:11.399Z","0.35.1":"2026-09-14T22:07:53.260Z","0.36.0":"2026-09-17T02:15:26.168Z","0.37.0":"2026-09-17T03:21:48.663Z","0.38.0":"2026-09-27T04:21:25.224Z"},"bugs":{"url":"https://github.com/interop-alliance/was-teaching-server/issues"},"author":{"url":"https://github.com/dmitrizagidulin/","name":"Dmitri Zagidulin"},"license":"AGPL-3.0-or-later","homepage":"https://github.com/interop-alliance/was-teaching-server","repository":{"url":"git+https://github.com/interop-alliance/was-teaching-server.git","type":"git"},"description":"A basic Wallet Attached Storage server used to demonstrate the WAS specification.","maintainers":[{"name":"codenamedmitri","email":"dzagidulin@gmail.com"}],"readme":"# WAS Teaching Server (_was-teaching-server_)\n\n[![Node.js CI](https://github.com/interop-alliance/was-teaching-server/workflows/CI/badge.svg)](https://github.com/interop-alliance/was-teaching-server/actions?query=workflow%3A%22CI%22)\n\n> A basic\n> [Wallet Attached Storage](https://w3c-ccg.github.io/wallet-attached-storage-spec/)\n> Server used to demonstrate the specification\n\n## Table of Contents\n\n- [Background](#background)\n- [Install](#install)\n- [Usage](#usage)\n- [Security](#security)\n- [License](#license)\n\n## Background\n\nSee:\n\n- [Wallet Attached Storage Specification](https://w3c-ccg.github.io/wallet-attached-storage-spec/)\n- [ARCHITECTURE.md](ARCHITECTURE.md) -- request flow, domain model, and ZCap\n  authorization structure\n- [CONTRIBUTING.md](CONTRIBUTING.md) -- code style and contribution conventions\n- [ROADMAP.md](ROADMAP.md) -- spec-gap analysis and tracked work items\n  (structured `WAS-N` entries with status, priority, and acceptance criteria)\n\n### Supported Features\n\nAuthorization: Uses `ZcapClient` from `@interop/ezcap`, see the\n[zCap Developer Guide](https://github.com/interop-alliance/zcap-developer-guide)\nfor more details.\n\n#### Spaces API\n\nA container (a Space, a Collection) is canonically addressed WITH a trailing\nslash: `GET` lists its members, `POST` adds one, `DELETE` removes the container,\nand `PUT` is not defined there (405). Its description lives at its `meta`\nsub-resource. The no-slash form of a container URL redirects to the slash form\nwith a `308`, so a client should build the canonical form directly (a signed\nrequest must be re-signed for the redirect target).\n\n- [Create Space](https://w3c-ccg.github.io/wallet-attached-storage-spec/#http-api-post-spaces)\n  (`POST /spaces/`)\n- [List Spaces](https://w3c-ccg.github.io/wallet-attached-storage-spec/#list-spaces-operation)\n  (`GET /spaces/`)\n- [Read Space](https://w3c-ccg.github.io/wallet-attached-storage-spec/#read-space-operation)\n  (`GET /space/:spaceId/meta` -- the Space Metadata object)\n- [Update Space (or Create Space by Id)](https://w3c-ccg.github.io/wallet-attached-storage-spec/#update-or-create-by-id-space-operation)\n  (`PUT /space/:spaceId/meta`)\n- [Delete Space](https://w3c-ccg.github.io/wallet-attached-storage-spec/#delete-space-operation)\n  (`DELETE /space/:spaceId/`)\n\n#### Collections API\n\n- [List Collections](https://w3c-ccg.github.io/wallet-attached-storage-spec/#list-all-collections-operation)\n  (`GET /space/:spaceId/`; the retired `/space/:spaceId/collections/` redirects\n  here with a `308`)\n- [Create Collection](https://w3c-ccg.github.io/wallet-attached-storage-spec/#create-collection-add-collection-to-a-space-operation)\n  (`POST /space/:spaceId/`)\n- [Read Collection Metadata](https://w3c-ccg.github.io/wallet-attached-storage-spec/#read-collection-metadata-operation)\n  (`GET /space/:spaceId/:collectionId/meta` -- the merged Collection Metadata\n  object: configuration members beside `createdAt` / `updatedAt`, `custom` and\n  `epoch`, under one `ETag`)\n- [Update Collection (or Create Collection by Id)](https://w3c-ccg.github.io/wallet-attached-storage-spec/#update-or-create-by-id-collection-operation)\n  (`PUT /space/:spaceId/:collectionId/meta` -- a full replacement that creates\n  the Collection when absent)\n- [List Resources in a Collection](https://w3c-ccg.github.io/wallet-attached-storage-spec/#list-collection-operation)\n  (`GET /space/:spaceId/:collectionId/`)\n- [Delete Collection](https://w3c-ccg.github.io/wallet-attached-storage-spec/#delete-collection-operation)\n  (`DELETE /space/:spaceId/:collectionId/`)\n\n#### Resources API\n\n- [Create Resource](https://w3c-ccg.github.io/wallet-attached-storage-spec/#create-resource-add-resource-to-collection-operation)\n  (`POST /space/:spaceId/:collectionId/`)\n  - both JSON objects and binary blobs\n- [Get Resource by Id](https://w3c-ccg.github.io/wallet-attached-storage-spec/#read-resource-operation)\n  (`GET /space/:spaceId/:collectionId/:resourceId`)\n- [Head Resource by Id](https://w3c-ccg.github.io/wallet-attached-storage-spec/#content-types-and-representations)\n  (`HEAD /space/:spaceId/:collectionId/:resourceId`)\n  - same headers as `GET` with no body; `Content-Type`/`Content-Length` from the\n    Resource's Metadata\n- [Update Resource (or Create Resource by Id)](https://w3c-ccg.github.io/wallet-attached-storage-spec/#update-or-create-by-id-resource-operation)\n  (`PUT /space/:spaceId/:collectionId/:resourceId`)\n- [Delete Resource by Id](https://w3c-ccg.github.io/wallet-attached-storage-spec/#delete-resource-operation)\n  (`DELETE /space/:spaceId/:collectionId/:resourceId`)\n\n**Uploading binary resources (and large files).** Send the file as the **raw\nrequest body** with its own `Content-Type` (e.g. `image/png`) -- not wrapped in\na form. The server streams a raw-body upload straight to storage (enforcing the\nupload cap as it goes), so this is the path for large files. The write must\nstill be zCap-signed, and because the signature covers the `Digest` header, the\nclient hashes the whole body before sending (a plain browser `<form>` cannot do\nthis -- uploads are made programmatically by a signing client). The OPTIONAL\n`multipart/form-data` upload is supported as a convenience for the HTML-form\nworkflow: it MUST carry exactly one file part, and the server buffers that part\nin memory bounded by `MAX_UPLOAD_BYTES`, so it is best suited to smaller\nuploads. `MAX_UPLOAD_BYTES` also bounds a JSON or text Resource write, which the\nserver buffers in memory the same way.\n\n#### Access Control Policy (public read)\n\nBy default every operation requires a capability invocation. A **policy**\nauxiliary resource can override this to make a Space, Collection, or Resource\nworld-readable — the common \"create public link\" use case (e.g. a wallet sharing\na Verifiable Credential).\n\n- CRUD the policy at any level (controller-only):\n  - `GET|PUT|DELETE /space/:spaceId/policy`\n  - `GET|PUT|DELETE /space/:spaceId/:collectionId/policy`\n  - `GET|PUT|DELETE /space/:spaceId/:collectionId/:resourceId/policy`\n- Discover a policy via the `linkset` property on the Space/Collection Metadata\n  object, or `GET /space/:spaceId[/:collectionId]/linkset`\n  (`application/linkset+json`, RFC9264).\n\nHow a read is authorized: the server tries the capability invocation first; if\nnone is presented, or it does not grant access, it falls back to the **effective\npolicy** (resolved most-specific-first: Resource > Collection > Space). Policies\nare **permissive-only** — they can only broaden access beyond capabilities,\nnever deny a valid capability holder. A denied read returns `404` (so existence\nis not leaked); writes always require a capability.\n\nThe policy document is a small, `type`-discriminated, extensible shape. v1\nrecognizes one type (any other `type` is treated as \"grants nothing\", so it\nfalls through to the capability-only decision):\n\n```json\n{ \"type\": \"PublicCanRead\" }\n```\n\nSet it, for example, on a `public-credentials` Collection so anyone can\n`GET /space/:spaceId/public-credentials/:resourceId` without authorization. This\nminimal canned-policy approach (cf. S3 `public-read`, `chmod o+r`) covers the\ndominant public-read case; a richer policy language (e.g. Cedar) is left as a\nfuture, separate tier.\n\n#### Ephemeral Exchanges\n\nA transient rendezvous for cross-device flows: one page creates an exchange\nholding an opaque request, shows its URL as a QR code, and polls it until\nanother device (a phone wallet, say) posts the answer back. This is not part of\nthe WAS protocol; it is a small convenience facet the teaching server hosts\nalongside it.\n\n- `POST /workflows/ephemeral/exchanges` — body `{ \"request\": <opaque JSON> }`;\n  returns `201` with the exchange URL in both the `Location` header and a\n  `{ \"location\": ... }` body. Refused with `429` once the server is holding its\n  cap of live exchanges.\n- `POST /workflows/ephemeral/exchanges/:exchangeId` — with no body (or `{}`),\n  returns the stored `request` verbatim (\"begin\"); with any other body, stores\n  that body as the exchange's response and echoes it back (last write wins).\n- `GET /workflows/ephemeral/exchanges/:exchangeId` — polls:\n  `{ id, sequence: 0, state: \"pending\" }` until a response has been posted, then\n  `{ id, sequence: 1, state: \"complete\", response }`.\n- `GET /workflows/ephemeral/exchanges/:exchangeId/protocols` — the interaction\n  endpoint a QR encodes; returns `{ \"protocols\": { \"vcapi\": <exchange URL> } }`.\n\n**Security posture.** These routes are unauthenticated by design: the exchange\nURL is a **capability URL**, and possession of that unguessable URL is the only\naccess control, so it must be handled as a secret (and only ever passed over a\nchannel that keeps it one). The server never inspects the relayed payloads —\nthey are opaque JSON to it. Every exchange is transient: in memory only,\nexpiring about ten minutes after creation, bounded in number, and lost on\nrestart. Nothing here reads or writes a Space, and no capability is granted.\nBoth `POST` bodies are capped at 64 KiB.\n\n## Install\n\nRequires Node.js 24.x and [`pnpm`](https://pnpm.io/).\n\n```\npnpm install\n```\n\nThis server is written in TypeScript. In development it runs directly via\n[`tsx`](https://github.com/privatenumber/tsx) (no build step); for production it\nis compiled with `tsc` to `dist/`.\n\n## Usage\n\n### Running in Development\n\n`tsx` runs the TypeScript sources directly and watches for changes (views are\nserved from `src/views`, so no asset copy is needed):\n\n```\nSERVER_URL='http://localhost:3002' PORT=3002 pnpm dev\n```\n\n### Building and Starting the Server\n\n`pnpm build` compiles `src/` to `dist/` and copies `src/views` > `dist/views`,\nthen `pnpm start` runs the compiled output:\n\n```\npnpm build\nSERVER_URL='http://localhost:3002' PORT=3002 pnpm start\n```\n\n### Using as a Library\n\nThe WAS protocol surface is also exported as a registerable Fastify plugin,\n`fastifyWas`, so a downstream server can compose it with its own persistence\nbackend and security plugins. See\n[Consuming the Server as a Library](docs/consuming-server-as-library.md).\n\n### Environment Variables\n\nThe whole env surface below is read and validated once at startup\n(`loadConfigFromEnv` in `src/config.default.ts`): a missing `SERVER_URL` or any\nmalformed value fails startup immediately with the offending variable named,\nrather than surfacing later as broken ZCap matching.\n\n| Variable                    | Default                     | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |\n| --------------------------- | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `SERVER_URL`                | (none)                      | **Required.** This server's base URL; used to build and match ZCap `invocationTarget` URLs (host and port must match the client's exactly). Must be an absolute `http:`/`https:` URL with no path, query, or fragment -- deploying under a sub-path is not supported.                                                                                                                                                                                                                                                                                                                                                                                                  |\n| `PORT`                      | `3002`                      | TCP port to listen on (an integer between 1 and 65535).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |\n| `DATABASE_URL`              | (unset = filesystem)        | Selects the **PostgreSQL storage backend**: a `postgres://` connection string (e.g. `postgres://was:was@localhost:5433/was`). When set, all WAS + WebKMS data is stored in Postgres (schema migrations are applied automatically at startup); unset, the server uses the default filesystem backend rooted at `data/`. See [Storage Backends](#storage-backends).                                                                                                                                                                                                                                                                                                      |\n| `WAS_DATA_DIR`              | (unset = `data/`)           | Filesystem root the default backend stores Spaces, keystores, and revocations under. A relative value resolves against the process working directory. Ignored when `DATABASE_URL` selects the Postgres backend. Point it at a scratch directory to run a test suite against a fresh server each time, rather than accumulating every earlier run's Spaces under the project `data/`.                                                                                                                                                                                                                                                                                   |\n| `STORAGE_LIMIT_PER_SPACE`   | (unset = unlimited, warned) | Per-Space storage quota in **bytes** (spec \"Quotas\"). When set, writes that would push a Space over this limit are rejected with `quota-exceeded` (507). Unset means each Space is unlimited, and startup logs a warning; set `unlimited` to acknowledge the choice explicitly and silence it.                                                                                                                                                                                                                                                                                                                                                                         |\n| `MAX_UPLOAD_BYTES`          | `67108864` (64 MiB)         | Per-upload size cap in **bytes** (spec \"Quotas\", the backend's `maxUploadBytes` constraint), default-on. A single upload exceeding it is rejected with `payload-too-large` (413) -- distinct from the cumulative `STORAGE_LIMIT_PER_SPACE`. Also bounds a buffered JSON or text Resource write, so both accept the same size. Set `unlimited` to remove the cap (filesystem backend only: the Postgres backend buffers each upload in memory as a single `bytea`, so it rejects `unlimited` at startup); a buffered body still falls back to a 64 MiB limit even when `unlimited` is set, since only a streamed blob write on the filesystem backend becomes uncapped. |\n| `MAX_SPACES_PER_CONTROLLER` | `100`                       | Max number of Spaces a single controller DID may create (a default-on count quota). A create beyond the limit is rejected with `quota-exceeded` (507); overwriting an existing Space never trips it. Set `unlimited` for no cap. Hard (transactional) on the Postgres backend, soft under concurrency on the filesystem backend -- like the byte quota.                                                                                                                                                                                                                                                                                                                |\n| `MAX_COLLECTIONS_PER_SPACE` | `100`                       | Max number of Collections one Space may hold (a default-on count quota, also enforced during a tar import). A create beyond the limit is rejected with `quota-exceeded` (507); overwriting an existing Collection's description never trips it. Set `unlimited` for no cap.                                                                                                                                                                                                                                                                                                                                                                                            |\n| `MAX_RESOURCES_PER_SPACE`   | `10000`                     | Max number of live Resources one Space may hold across all its Collections (a default-on count quota, also enforced during a tar import; tombstoned Resources do not count). A create beyond the limit is rejected with `quota-exceeded` (507); overwriting an existing Resource never trips it, and a delete frees a slot. Set `unlimited` for no cap.                                                                                                                                                                                                                                                                                                                |\n| `KMS_RECORD_KEK`            | (unset = disabled)          | At-rest encryption key for WebKMS key records: a single AES-256 key-encryption key (KEK) in base58btc Multikey form (`secretKeyMultibase`, header `0xa2 0x01`) -- the single-KEK alias. When set, the secret fields of newly generated `/kms` key records are envelope-encrypted under it before they reach storage; existing plaintext records stay readable. Unset means key records are stored **plaintext** (the teaching default). Mutually exclusive with `KMS_RECORD_KEKS`.                                                                                                                                                                                     |\n| `KMS_RECORD_KEKS`           | (unset = disabled)          | A comma-separated list of AES-256 KEKs (same Multikey form as `KMS_RECORD_KEK`), for registering more than one KEK so a rotation can add a new KEK while keeping the old one available to decrypt records already written under it. Each KEK is registered by an id derived from its material; surrounding whitespace is trimmed and empty entries ignored; a duplicate entry is a startup error. The **first entry is the current KEK** (the one that wraps new records) by default -- so a rotation is \"prepend the new KEK, keep the old behind it\". Use `KMS_RECORD_KEK` for the single-KEK case; setting both is a startup error.                                 |\n| `KMS_RECORD_CURRENT_KEK`    | (unset = first entry)       | Optionally overrides which registered KEK wraps **new** records: a `urn:kek:sha256:<hex>` id, a multibase KEK value (its id is derived), or the literal `none` (case-insensitive). It must name a KEK registered via `KMS_RECORD_KEK`/`KMS_RECORD_KEKS`. `none` is the **decrypt-only** posture -- existing encrypted records still read, but new key records are written **plaintext** (the wind-down path). Setting it with no KEK configured is a startup error.                                                                                                                                                                                                    |\n| `WAS_ONBOARDING_TOKEN`      | (unset = disabled)          | Shared-secret onboarding token gating the two open provisioning endpoints (`POST /spaces/` and `POST /kms/keystores`). When set, those two endpoints require an `Authorization: Bearer <token>` header, which then substitutes for ZCap verification on that request; every other operation still uses the normal capability-invocation path. Unset means provisioning is open -- anyone may create a Space or keystore by proving control of the `controller` DID in the request body (the teaching default). See [Provisioning gate](#provisioning-gate).                                                                                                            |\n| `WAS_DISCLOSE_VERSION`      | `true`                      | Whether the exact server version is published. `false` removes it from `/health` (together with the build commit and time), from the welcome page, and from the service description's `instance` member, for a hardened deployment. Accepts `true` or `false`.                                                                                                                                                                                                                                                                                                                                                                                                         |\n\n### Provisioning gate\n\nBy default, anyone may create a Space (`POST /spaces/`) or a WebKMS keystore\n(`POST /kms/keystores`) by proving control of the `controller` DID named in the\nrequest body -- the open, teaching-server behavior. A deployment can gate those\ntwo endpoints in one of two mutually-exclusive ways:\n\n- **Onboarding token** -- set `WAS_ONBOARDING_TOKEN` (or pass `onboardingToken`\n  to the `fastifyWas` plugin / `createApp`). Provisioning then requires an\n  `Authorization: Bearer <token>` header matching the configured secret; a valid\n  token substitutes for ZCap verification on that request.\n- **Custom policy** -- pass an `authorizeProvisioning` callback to the plugin.\n  It receives `{ request }` and returns `'verify'` (run the normal ZCap path),\n  `'grant'` (authorize the request itself, skipping ZCap verification), or\n  `'deny'` (403); it may also throw a `ProblemError` for a custom response.\n\nBoth configure the same seam; setting both at once is rejected at startup.\n\n### Storage Backends\n\nTwo interchangeable first-party backends implement the same `StorageBackend`\ncontract (`src/types.ts`):\n\n- **Filesystem** (default): stores everything under `data/`. Zero setup.\n- **PostgreSQL**: selected by setting `DATABASE_URL`. Quota accounting is\n  transactional (a _hard_ per-Space limit, unlike the filesystem's documented\n  soft limit), conditional writes use row locks instead of an in-process mutex\n  (so multiple server processes can share one database), and blob uploads are\n  buffered `bytea` writes bounded by `MAX_UPLOAD_BYTES` (default 64 MiB;\n  `MAX_UPLOAD_BYTES=unlimited` is rejected at startup, since the in-memory\n  buffering makes an unbounded upload unsafe). A buffered JSON or text write is\n  bounded the same way on either backend, and stays bounded at the 64 MiB\n  default even when `MAX_UPLOAD_BYTES=unlimited` is accepted (filesystem backend\n  only), since a buffered body is held in memory regardless of the cap.\n\nTo run a disposable local Postgres with Podman (substitute `docker` if you\nprefer; the commands are identical):\n\n```bash\n# One-time: pull and start Postgres 17 with a named volume for data.\n# Host port 5433 avoids colliding with any system Postgres on 5432.\npodman run -d --name was-postgres \\\n  -e POSTGRES_USER=was \\\n  -e POSTGRES_PASSWORD=was \\\n  -e POSTGRES_DB=was \\\n  -p 5433:5432 \\\n  -v was-pgdata:/var/lib/postgresql/data \\\n  docker.io/library/postgres:17\n\n# Verify it is accepting connections:\npodman exec was-postgres pg_isready -U was\n\n# Day-to-day lifecycle:\npodman stop was-postgres\npodman start was-postgres\n\n# Full teardown (drops all stored data):\npodman rm -f was-postgres && podman volume rm was-pgdata\n```\n\nThen start the server against it:\n\n```bash\nDATABASE_URL=postgres://was:was@localhost:5433/was pnpm dev\n```\n\nSchema migrations are embedded (`src/backends/postgresSchema.ts`) and applied\nidempotently at startup. To migrate existing data between backends, export each\nSpace from one server and import it into the other — both backends speak the\nsame tar archive dialect (`POST /space/:id/export` / `.../import`).\n\n### Running Tests\n\nThe full gate (lint + build + Vitest integration tests):\n\n```\npnpm test\n```\n\nJust the Vitest integration suite under `test/`:\n\n```\npnpm test-node\n```\n\nThe Postgres backend tests are **opt-in**: they are skipped unless\n`WAS_TEST_DATABASE_URL` points at a running (disposable) Postgres. With the\nPodman container above running:\n\n```\npnpm test:pg\n```\n\nEach suite isolates itself in a throwaway `was_test_<hex>` schema, dropped on\nteardown, so parallel test workers never collide and the container stays\nreusable.\n\n### Conformance Tests\n\nProtocol conformance testing lives in its own package,\n[`@interop/was-conformance-suite`](https://github.com/interop-alliance/was-conformance-suite),\nwhich ships a `was-conformance` CLI that runs against any WAS server by URL\n(installed here as a devDependency). The URL passed to the CLI and the server's\n`SERVER_URL` **must be byte-for-byte identical** (including host and port) —\nZCap `invocationTarget` URLs embed the full host:port, so even `localhost` vs\n`127.0.0.1` or a port mismatch will make delegated-access tests 404.\n\nFor a local run, `pnpm conformance:local` does the whole dance for you: it spins\nup the server on a fixed local URL, waits until it answers, runs the CLI against\nthat same URL, and tears the server down afterward (even if the suite fails) —\nso the two URLs can't drift out of sync.\n\n```bash\n# One-shot local run (recommended). Override the port with PORT=... if 3002 is\n# taken; the server and CLI URLs are both derived from it, so they stay in\n# sync. Extra arguments are forwarded to the CLI (no `--` separator needed;\n# pnpm forwards them itself).\npnpm conformance:local\npnpm conformance:local --grep chunk --reporter json\n\n# Against an already-running or external server. Start it with a matching\n# SERVER_URL, then in another shell:\npnpm conformance https://was.example.com\n\n# With an onboarding token, for servers that require one for POST /spaces/:\npnpm conformance https://was.example.com --token abc123\n\n# TEST_SERVER_URL / TEST_ONBOARDING_TOKEN env vars still work as fallbacks:\nTEST_SERVER_URL=https://was.example.com pnpm conformance\n```\n\nUseful CLI options: `-s/--suite <id>`, `-g/--grep <pattern>`,\n`--include-optional` / `--skip-optional`, `-r json`, `--timeout <ms>`,\n`--fail-fast`. Exit codes: `0` conformant, `1` failures, `2` usage error or\nserver unreachable.\n\n## Security\n\nThis is an experimental research server.\n\n## License\n\n[GNU AFFERO GENERAL PUBLIC LICENSE v3](LICENSE)\n","readmeFilename":"README.md"}