{"_id":"@caruuto/cdn","_rev":"12-954dbc83f7cec53e374ec49bee9107be","name":"@caruuto/cdn","dist-tags":{"latest":"4.4.0"},"versions":{"4.0.0":{"name":"@caruuto/cdn","version":"4.0.0","author":"","license":"","_id":"@caruuto/cdn@4.0.0","maintainers":[{"name":"woogz","email":"jayraydon@gmail.com"},{"name":"jimlambie","email":"jameslambie@gmail.com"}],"homepage":"","dist":{"shasum":"3d2a34acae91edecdb430cd793851b62ffe8a9dd","tarball":"https://registry.npmjs.org/@caruuto/cdn/-/cdn-4.0.0.tgz","fileCount":52,"integrity":"sha512-yc71JKyMum+9jRS6o3a62iSt4tKpCn6DIUThUIuNxTSy+EzFV7+9vn18Nss/P31LV9lS3SB15kzKraC3fJMrqA==","signatures":[{"sig":"MEYCIQDit75P1lyQU9Wkgk2SBx1aOU8VK/wZpRamW1dZFnM5pQIhALAtx4asgE/fQVrMoRHavgbT8hX1nh6qEuHfPjTzu3v8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8465673},"snyk":true,"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"b29dc356e68ba83c694c598ffcb3f30f132486ef","scripts":{"init":"validate-commit-msg","test":"rm -f config/config.test.json && eslint . && prettier-standard --changed --format '**/*.js' && yarn run test:run","start":"node index.js --node_env=development","posttest":"./scripts/coverage.js","test:run":"rm -rf cache && env NODE_ENV=test ./node_modules/.bin/nyc --reporter=lcov -x '**/workspace/**' -x 'test/**' ./node_modules/mocha/bin/_mocha test","precommit":"node scripts/precommit.js"},"_npmUser":{"name":"jimlambie","email":"jameslambie@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"8.19.4","description":"- [Overview](#overview) - [Requirements](#requirements) - [Your First CDN Project](#your-first-cdn-project) - [Links](#links)","directories":{"test":"test"},"lint-staged":{"*.{js,jsx,md,html,css}":["prettier --write","git add"]},"_nodeVersion":"16.20.0","dependencies":{"he":"^1.1.0","cron":"^2.0.0","etag":"^1.7.0","jimp":"^0.22.0","mime":"^2.4.0","sha1":"~1.1.1","uuid":"latest","sharp":"0.32.5","colors":"^1.1.2","mkdirp":"^1.0.0","router":"~1.3.0","sqwish":"^0.2.2","aws-sdk":"latest","convict":"^4.0.0","gifwrap":"^0.7.5","maxmind":"^2.2.0","chokidar":"^3.5.0","fs-extra":"^7.0.1","imagemin":"^6.0.0","url-join":"^3.0.0","babel-cli":"latest","uglify-js":"^3.13.0","useragent":"2.3.0","aspect-fit":"^1.0.2","babel-core":"latest","cloudfront":"~0.4.0","body-parser":"^1.18.2","color-namer":"^1.1.0","object-path":"^0.11.4","streamifier":"^0.1.1","compressible":"^2.0.13","finalhandler":"~1.1.0","jsonwebtoken":"^8.2.1","node-vibrant":"^3.1.0","range-parser":"^1.2.0","range-stream":"^1.1.0","ua-parser-js":"^0.7.10","concat-stream":"^2.0.0","console-stamp":"^0.2.2","length-stream":"~0.1.1","stream-length":"^1.0.2","@caruuto/cache":"latest","smartcrop-sharp":"2.0.8","babel-preset-env":"latest","image-size-stream":"1.1.0","imagemin-jpegtran":"^7.0.0","babel-preset-minify":"latest","exif-reader-paras20xx":"^1.1.1","accept-language-parser":"^1.2.0","validate-commit-message":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^14.0.0","nock":"^9.0.2","husky":"^1.3.1","mocha":"^5.2.0","redis":"^2.6.3","sinon":"^4.0.2","eslint":"8.5.0","should":"~13.2.0","it-each":"^0.3.1","env-test":"^1.0.0","prettier":"^1.18.2","coveralls":"^3.1.1","fakeredis":"^2.0.0","supertest":"^4.0.0","http-proxy":"^1.16.2","proxyquire":"~2.0.0","superagent":"^7.0.0","lint-staged":"^9.2.5","aws-sdk-mock":"^5.0.0","prettier-standard":"^16.4.1","eslint-config-prettier":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cdn_4.0.0_1696524803363_0.8595936274006211","host":"s3://npm-registry-packages"}},"4.0.1":{"name":"@caruuto/cdn","version":"4.0.1","author":"","license":"","_id":"@caruuto/cdn@4.0.1","maintainers":[{"name":"woogz","email":"jayraydon@gmail.com"},{"name":"jimlambie","email":"jameslambie@gmail.com"}],"homepage":"","dist":{"shasum":"6aca4a003851bce573c87a7a46cfd8b07e1a552b","tarball":"https://registry.npmjs.org/@caruuto/cdn/-/cdn-4.0.1.tgz","fileCount":52,"integrity":"sha512-7TQIlaEL05w6NwOkw/9e2NC4k4wjDHSDhSRStruLlT23LurLkRZfysuYY069wpIoD+mc3hpb1jsvFPR2ApzfjQ==","signatures":[{"sig":"MEUCIQDQVz2if5e/9S1k8pssgd3wsPfG7Is9nXhBwpTXP2R9lwIgZ9mQqeO2Z4+qz3FJzm7TqtGOAwuehQrNAYi9fVtutWw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8467045},"snyk":true,"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"a8250e9b1138f57e13d1ec9939f273eb10c3d112","scripts":{"init":"validate-commit-msg","test":"rm -f config/config.test.json && eslint . && prettier-standard --changed --format '**/*.js' && yarn run test:run","start":"node index.js --node_env=development","posttest":"./scripts/coverage.js","test:run":"rm -rf cache && env NODE_ENV=test ./node_modules/.bin/nyc --reporter=lcov -x '**/workspace/**' -x 'test/**' ./node_modules/mocha/bin/_mocha test 'test/**/*.js' --exit","precommit":"node scripts/precommit.js"},"_npmUser":{"name":"jimlambie","email":"jameslambie@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"8.19.4","description":"- [Overview](#overview) - [Requirements](#requirements) - [Your First CDN Project](#your-first-cdn-project) - [Links](#links)","directories":{"test":"test"},"lint-staged":{"*.{js,jsx,md,html,css}":["prettier --write","git add"]},"_nodeVersion":"16.20.0","dependencies":{"he":"^1.1.0","cron":"^2.0.0","etag":"^1.7.0","jimp":"^0.22.12","mime":"^2.4.0","sha1":"~1.1.1","sharp":"^0.32.6","colors":"^1.1.2","mkdirp":"^1.0.0","router":"~1.3.0","aws-sdk":"latest","convict":"^6.2.4","gifwrap":"^0.7.5","maxmind":"^2.2.0","chokidar":"^3.5.0","fs-extra":"^7.0.1","imagemin":"^6.0.0","url-join":"^3.0.0","aspect-fit":"^1.0.2","cloudfront":"~0.4.0","body-parser":"^1.18.2","color-namer":"^1.1.0","object-path":"^0.11.4","streamifier":"^0.1.1","@dadi/logger":"^1.5.0","compressible":"^2.0.13","finalhandler":"~1.1.0","jsonwebtoken":"^9.0.2","node-vibrant":"^3.1.0","range-parser":"^1.2.0","range-stream":"^1.1.0","ua-parser-js":"^0.7.10","concat-stream":"^2.0.0","console-stamp":"^0.2.2","length-stream":"~0.1.1","stream-length":"^1.0.2","@caruuto/cache":"latest","smartcrop-sharp":"2.0.8","image-size-stream":"1.1.0","imagemin-jpegtran":"^5.0.0","babel-preset-minify":"latest","exif-reader-paras20xx":"^1.1.1","accept-language-parser":"^1.2.0","validate-commit-message":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^14.0.0","nock":"^9.0.2","husky":"^1.3.1","mocha":"10.2.0","redis":"^4.6.13","sinon":"^4.0.2","eslint":"8.5.0","should":"~13.2.0","it-each":"0.3.0","env-test":"^1.0.0","prettier":"^1.18.2","coveralls":"^3.1.1","fakeredis":"^2.0.0","supertest":"^4.0.0","@babel/cli":"^7.24.5","http-proxy":"^1.16.2","proxyquire":"~2.0.0","superagent":"^7.0.0","@babel/core":"^7.24.5","lint-staged":"^9.2.5","aws-sdk-mock":"^5.0.0","@babel/preset-env":"^7.24.5","prettier-standard":"15.0.1","eslint-config-prettier":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cdn_4.0.1_1714616490728_0.611109646650928","host":"s3://npm-registry-packages"}},"4.0.2":{"name":"@caruuto/cdn","version":"4.0.2","author":"","license":"","_id":"@caruuto/cdn@4.0.2","maintainers":[{"name":"woogz","email":"jayraydon@gmail.com"},{"name":"jimlambie","email":"jameslambie@gmail.com"}],"homepage":"","dist":{"shasum":"899d2e7c373b55df1a7c86ff7e125fd348af97b5","tarball":"https://registry.npmjs.org/@caruuto/cdn/-/cdn-4.0.2.tgz","fileCount":52,"integrity":"sha512-KC+5vggBN/eJVskZJmCX7AZg/OWfbOis8Hxwdmnqan5uG8awn0hzzeo6mZiX6HorUC96hFXcfCyRUgrr/W+Kaw==","signatures":[{"sig":"MEYCIQDZQxyx2I/6rF78Vke6gNwtCkzy+FkHG8BZb2fwymt6AAIhAOsBuEv39OuOui71Xj2zfPPTemD1GRADiBkEBXxwCpLX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8467550},"snyk":true,"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"bf14d9d77b15441a25ba9eb16f91dc5306643d8d","scripts":{"init":"validate-commit-msg","test":"rm -f config/config.test.json && eslint . && prettier-standard --changed --format '**/*.js' && yarn run test:run","start":"node index.js --node_env=development","posttest":"./scripts/coverage.js","test:run":"rm -rf cache && env NODE_ENV=test ./node_modules/.bin/nyc --reporter=lcov -x '**/workspace/**' -x 'test/**' ./node_modules/mocha/bin/_mocha test 'test/**/*.js' --exit","precommit":"node scripts/precommit.js"},"_npmUser":{"name":"jimlambie","email":"jameslambie@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"8.19.4","description":"- [Overview](#overview) - [Requirements](#requirements) - [Your First CDN Project](#your-first-cdn-project) - [Links](#links)","directories":{"test":"test"},"lint-staged":{"*.{js,jsx,md,html,css}":["prettier --write","git add"]},"_nodeVersion":"16.20.0","dependencies":{"he":"^1.1.0","cron":"^2.0.0","etag":"^1.7.0","jimp":"^0.22.12","mime":"^2.4.0","sha1":"~1.1.1","sharp":"^0.32.6","colors":"^1.1.2","mkdirp":"^1.0.0","router":"~1.3.0","aws-sdk":"latest","convict":"^6.2.4","gifwrap":"^0.7.5","maxmind":"^2.2.0","chokidar":"^3.5.0","fs-extra":"^7.0.1","imagemin":"^6.0.0","url-join":"^3.0.0","aspect-fit":"^1.0.2","cloudfront":"~0.4.0","body-parser":"^1.18.2","color-namer":"^1.1.0","object-path":"^0.11.4","streamifier":"^0.1.1","@dadi/logger":"^1.5.0","compressible":"^2.0.13","finalhandler":"~1.1.0","jsonwebtoken":"^9.0.2","node-vibrant":"^3.1.0","range-parser":"^1.2.0","range-stream":"^1.1.0","ua-parser-js":"^0.7.10","concat-stream":"^2.0.0","console-stamp":"^0.2.2","length-stream":"~0.1.1","stream-length":"^1.0.2","@caruuto/cache":"latest","smartcrop-sharp":"2.0.8","image-size-stream":"1.1.0","imagemin-jpegtran":"^5.0.0","babel-preset-minify":"latest","exif-reader-paras20xx":"^1.1.1","accept-language-parser":"^1.2.0","validate-commit-message":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^14.0.0","nock":"^9.0.2","husky":"^1.3.1","mocha":"10.2.0","redis":"^4.6.13","sinon":"^4.0.2","eslint":"8.5.0","should":"~13.2.0","it-each":"0.3.0","env-test":"^1.0.0","prettier":"^1.18.2","coveralls":"^3.1.1","fakeredis":"^2.0.0","supertest":"^4.0.0","@babel/cli":"^7.24.5","http-proxy":"^1.16.2","proxyquire":"~2.0.0","superagent":"^7.0.0","@babel/core":"^7.24.5","lint-staged":"^9.2.5","aws-sdk-mock":"^5.0.0","@babel/preset-env":"^7.24.5","prettier-standard":"15.0.1","eslint-config-prettier":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cdn_4.0.2_1718077240508_0.32922331697767016","host":"s3://npm-registry-packages"}},"4.0.3":{"name":"@caruuto/cdn","version":"4.0.3","author":"","license":"","_id":"@caruuto/cdn@4.0.3","maintainers":[{"name":"jimlambie","email":"jameslambie@gmail.com"},{"name":"woogz","email":"jayraydon@gmail.com"}],"homepage":"","dist":{"shasum":"9f0b115b4e15515609682487d10c70fee03c2bff","tarball":"https://registry.npmjs.org/@caruuto/cdn/-/cdn-4.0.3.tgz","fileCount":51,"integrity":"sha512-56zVZAdcJEFCNW5mHvN36tjWhp7NbOLTlkWpGBukX7Ip/F6BtA1G1YGwkLqzokZtUbKZZsFs63ggHIrp4K7hgw==","signatures":[{"sig":"MEYCIQDzi/jWyZ+n4PpX4uUIQLQUa5TgCQZJW6y6sfprUQVU9wIhAKUFY0UP/DlWZjq6eGxAS2q8aBV/G+JVVM8RAVXLxVsw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8459476},"snyk":true,"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"a7278f2741391e4b75e58c5fc39179b9afb2fd70","scripts":{"init":"validate-commit-msg","test":"rm -f config/config.test.json && eslint . && prettier-standard --changed --format '**/*.js' && yarn run test:run","start":"node index.js --node_env=development","posttest":"./scripts/coverage.js","test:run":"rm -rf cache && env NODE_ENV=test ./node_modules/.bin/nyc --reporter=lcov -x '**/workspace/**' -x 'test/**' ./node_modules/mocha/bin/_mocha test 'test/**/*.js' --exit","precommit":"node scripts/precommit.js"},"_npmUser":{"name":"jimlambie","email":"jameslambie@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.7.0","description":"- [Overview](#overview) - [Requirements](#requirements) - [Your First CDN Project](#your-first-cdn-project) - [Links](#links)","directories":{"test":"test"},"lint-staged":{"*.{js,jsx,md,html,css}":["prettier --write","git add"]},"_nodeVersion":"18.20.3","dependencies":{"he":"^1.1.0","cron":"^2.0.0","etag":"^1.7.0","jimp":"^0.22.12","mime":"^2.4.0","sha1":"~1.1.1","sharp":"^0.32.6","colors":"^1.1.2","mkdirp":"^1.0.0","router":"~1.3.0","aws-sdk":"latest","convict":"^6.2.4","gifwrap":"^0.7.5","maxmind":"^2.2.0","chokidar":"^3.5.0","fs-extra":"^7.0.1","imagemin":"^6.0.0","url-join":"^3.0.0","aspect-fit":"^1.0.2","cloudfront":"~0.4.0","body-parser":"^1.18.2","color-namer":"^1.1.0","object-path":"^0.11.4","streamifier":"^0.1.1","@dadi/logger":"^1.5.0","compressible":"^2.0.13","finalhandler":"~1.1.0","jsonwebtoken":"^9.0.2","node-vibrant":"^3.1.0","range-parser":"^1.2.0","range-stream":"^1.1.0","ua-parser-js":"^0.7.10","concat-stream":"^2.0.0","console-stamp":"^0.2.2","length-stream":"~0.1.1","stream-length":"^1.0.2","@caruuto/cache":"latest","smartcrop-sharp":"2.0.8","image-size-stream":"1.1.0","imagemin-jpegtran":"^5.0.0","babel-preset-minify":"latest","exif-reader-paras20xx":"^1.1.1","accept-language-parser":"^1.2.0","validate-commit-message":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^14.0.0","nock":"^9.0.2","husky":"^1.3.1","mocha":"10.2.0","redis":"^4.6.13","sinon":"^4.0.2","eslint":"8.5.0","should":"~13.2.0","it-each":"0.3.0","env-test":"^1.0.0","prettier":"^1.18.2","coveralls":"^3.1.1","fakeredis":"^2.0.0","supertest":"^4.0.0","@babel/cli":"^7.24.5","http-proxy":"^1.16.2","proxyquire":"~2.0.0","superagent":"^7.0.0","@babel/core":"^7.24.5","lint-staged":"^9.2.5","aws-sdk-mock":"^5.0.0","@babel/preset-env":"^7.24.5","prettier-standard":"15.0.1","eslint-config-prettier":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cdn_4.0.3_1747972566947_0.7020008882938316","host":"s3://npm-registry-packages-npm-production"}},"4.0.4":{"name":"@caruuto/cdn","version":"4.0.4","author":"","license":"","_id":"@caruuto/cdn@4.0.4","maintainers":[{"name":"jimlambie","email":"jameslambie@gmail.com"},{"name":"woogz","email":"jayraydon@gmail.com"}],"homepage":"","dist":{"shasum":"1c6c1a6ee92b8fff4dbe9581e826750b4f0887e8","tarball":"https://registry.npmjs.org/@caruuto/cdn/-/cdn-4.0.4.tgz","fileCount":54,"integrity":"sha512-gCdtSOhvTxM6uUIYFj3oJ4jMifzEu2xaQwuLmGpnzrnxHF+pwovbXfZykxwDACu/yGOyI4mRQyRdVOBcDizARg==","signatures":[{"sig":"MEQCIHAojqQPW3qCi06oqiWj4k0EPHwRzRcPTwHY9CIEjAayAiBnPR7TCrdwq3cERMMqS10WtsdXMbOESgL4ipNZOxG76Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8468353},"snyk":true,"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"48b933729db8c6a2f1fd3a7dbde8e8dca5c07449","scripts":{"init":"validate-commit-msg","test":"rm -f config/config.test.json && eslint . && prettier-standard --changed --format '**/*.js' && yarn run test:run","start":"node index.js --node_env=development","posttest":"./scripts/coverage.js","test:run":"rm -rf cache && env NODE_ENV=test ./node_modules/.bin/nyc --reporter=lcov -x '**/workspace/**' -x 'test/**' ./node_modules/mocha/bin/_mocha test 'test/**/*.js' --exit","precommit":"node scripts/precommit.js"},"_npmUser":{"name":"jimlambie","email":"jameslambie@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.7.0","description":"- [Overview](#overview) - [Requirements](#requirements) - [Your First CDN Project](#your-first-cdn-project) - [Links](#links)","directories":{"test":"test"},"lint-staged":{"*.{js,jsx,md,html,css}":["prettier --write","git add"]},"_nodeVersion":"18.20.3","dependencies":{"he":"^1.1.0","cron":"^2.0.0","etag":"^1.7.0","jimp":"^0.22.12","mime":"^2.4.0","sha1":"~1.1.1","sharp":"^0.32.6","colors":"^1.1.2","mkdirp":"^1.0.0","router":"~1.3.0","aws-sdk":"latest","convict":"^6.2.4","gifwrap":"^0.7.5","maxmind":"^2.2.0","chokidar":"^3.5.0","fs-extra":"^7.0.1","imagemin":"^6.0.0","url-join":"^3.0.0","aspect-fit":"^1.0.2","cloudfront":"~0.4.0","body-parser":"^1.18.2","color-namer":"^1.1.0","object-path":"^0.11.4","streamifier":"^0.1.1","@dadi/logger":"^1.5.0","compressible":"^2.0.13","finalhandler":"~1.1.0","jsonwebtoken":"^9.0.2","node-vibrant":"^3.1.0","range-parser":"^1.2.0","range-stream":"^1.1.0","ua-parser-js":"^0.7.10","concat-stream":"^2.0.0","console-stamp":"^0.2.2","length-stream":"~0.1.1","stream-length":"^1.0.2","@caruuto/cache":"latest","smartcrop-sharp":"2.0.8","image-size-stream":"1.1.0","imagemin-jpegtran":"^5.0.0","babel-preset-minify":"latest","exif-reader-paras20xx":"^1.1.1","accept-language-parser":"^1.2.0","validate-commit-message":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^14.0.0","nock":"^9.0.2","husky":"^1.3.1","mocha":"10.2.0","redis":"^4.6.13","sinon":"^4.0.2","eslint":"8.5.0","should":"~13.2.0","it-each":"0.3.0","env-test":"^1.0.0","prettier":"^1.18.2","coveralls":"^3.1.1","fakeredis":"^2.0.0","supertest":"^4.0.0","@babel/cli":"^7.24.5","http-proxy":"^1.16.2","proxyquire":"~2.0.0","superagent":"^7.0.0","@babel/core":"^7.24.5","lint-staged":"^9.2.5","aws-sdk-mock":"^5.0.0","@babel/preset-env":"^7.24.5","prettier-standard":"15.0.1","eslint-config-prettier":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cdn_4.0.4_1747973844557_0.5975914913967839","host":"s3://npm-registry-packages-npm-production"}},"4.0.5":{"name":"@caruuto/cdn","version":"4.0.5","author":"","license":"","_id":"@caruuto/cdn@4.0.5","maintainers":[{"name":"jimlambie","email":"jameslambie@gmail.com"},{"name":"woogz","email":"jayraydon@gmail.com"}],"homepage":"","dist":{"shasum":"2a84a0630b0fd16f02490a6e69af17574c3d4e82","tarball":"https://registry.npmjs.org/@caruuto/cdn/-/cdn-4.0.5.tgz","fileCount":54,"integrity":"sha512-5XXHNO6a/ZGFmZwapNchkzHvjJ0Ys4dM00EWftwlHd3um44T61UnYaFFtCD/P6lEX//Qh1kk0lDGG+TAoxeRUA==","signatures":[{"sig":"MEUCIGvADfNBqxuXZwA5qNr5Ao/ETzywv30qUr9QwPmHkBTkAiEA0Bq02n9XcKs9Q0u74+OBUQ3VzPpCpRxIGl8LEER1XXI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8507752},"snyk":true,"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"574a41d000cb5cf4f58ce88e172e731126918254","scripts":{"init":"validate-commit-msg","test":"rm -f config/config.test.json && eslint . && prettier-standard --changed --format '**/*.js' && yarn run test:run","start":"node index.js --node_env=development","posttest":"./scripts/coverage.js","test:run":"rm -rf cache && env NODE_ENV=test ./node_modules/.bin/nyc --reporter=lcov -x '**/workspace/**' -x 'test/**' ./node_modules/mocha/bin/_mocha test 'test/**/*.js' --exit","precommit":"node scripts/precommit.js"},"_npmUser":{"name":"jimlambie","email":"jameslambie@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.8.2","description":"- [Overview](#overview) - [Requirements](#requirements) - [Your First CDN Project](#your-first-cdn-project) - [Directory Sharding](#directory-sharding) - [Links](#links)","directories":{"test":"test"},"lint-staged":{"*.{js,jsx,md,html,css}":["prettier --write","git add"]},"_nodeVersion":"20.19.4","dependencies":{"he":"^1.1.0","cron":"^2.0.0","etag":"^1.7.0","jimp":"^0.22.12","mime":"^2.4.0","sha1":"~1.1.1","sharp":"^0.32.6","colors":"^1.1.2","mkdirp":"^1.0.0","router":"~1.3.0","aws-sdk":"latest","convict":"^6.2.4","gifwrap":"^0.7.5","maxmind":"^2.2.0","chokidar":"^3.5.0","fs-extra":"^7.0.1","imagemin":"^6.0.0","url-join":"^3.0.0","aspect-fit":"^1.0.2","cloudfront":"~0.4.0","body-parser":"^1.18.2","color-namer":"^1.1.0","object-path":"^0.11.4","streamifier":"^0.1.1","@dadi/logger":"^1.5.0","compressible":"^2.0.13","finalhandler":"~1.1.0","jsonwebtoken":"^9.0.2","node-vibrant":"^3.1.0","range-parser":"^1.2.0","range-stream":"^1.1.0","ua-parser-js":"^0.7.10","concat-stream":"^2.0.0","console-stamp":"^0.2.2","length-stream":"~0.1.1","stream-length":"^1.0.2","@caruuto/cache":"latest","smartcrop-sharp":"2.0.8","image-size-stream":"1.1.0","imagemin-jpegtran":"^5.0.0","babel-preset-minify":"latest","exif-reader-paras20xx":"^1.1.1","accept-language-parser":"^1.2.0","validate-commit-message":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^14.0.0","nock":"^9.0.2","husky":"^1.3.1","mocha":"10.2.0","redis":"^4.6.13","sinon":"^4.0.2","eslint":"8.5.0","should":"~13.2.0","it-each":"0.3.0","env-test":"^1.0.0","prettier":"^1.18.2","coveralls":"^3.1.1","fakeredis":"^2.0.0","supertest":"^4.0.0","@babel/cli":"^7.24.5","http-proxy":"^1.16.2","proxyquire":"~2.0.0","superagent":"^7.0.0","@babel/core":"^7.24.5","lint-staged":"^9.2.5","aws-sdk-mock":"^5.0.0","@babel/preset-env":"^7.24.5","prettier-standard":"15.0.1","eslint-config-prettier":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cdn_4.0.5_1778466558391_0.7281817244380282","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"@caruuto/cdn","version":"4.1.0","author":"","license":"","_id":"@caruuto/cdn@4.1.0","maintainers":[{"name":"jimlambie","email":"jameslambie@gmail.com"},{"name":"woogz","email":"jayraydon@gmail.com"}],"homepage":"","dist":{"shasum":"9f14ee83f216ca901d8101a136cea81138947c0b","tarball":"https://registry.npmjs.org/@caruuto/cdn/-/cdn-4.1.0.tgz","fileCount":55,"integrity":"sha512-NwHTIR7CAUgCi5Z5QasW5DSHZHbiPwbe0i6C/9/KcmxtK3EK9zl5vqKnLJJEPaHvDVFYNXSk0b5TWXcLhwnUsg==","signatures":[{"sig":"MEUCICtQdJ8DpPt7FOpr3Nh55LBteD6mtC2d1qGbUUkSSE1bAiEA4N/Gl7P45y2zR8fDuzeDr+c5SBmkaxeykSBxMriI5oc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8520392},"snyk":true,"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"46f4a149ecabc7a3c53ad15042a98056f13903a2","scripts":{"init":"validate-commit-msg","test":"rm -f config/config.test.json && eslint . && prettier-standard --changed --format '**/*.js' && yarn run test:run","start":"node index.js --node_env=development","posttest":"./scripts/coverage.js","test:run":"rm -rf cache && env NODE_ENV=test ./node_modules/.bin/nyc --reporter=lcov -x '**/workspace/**' -x 'test/**' ./node_modules/mocha/bin/_mocha test 'test/**/*.js' --exit","precommit":"node scripts/precommit.js"},"_npmUser":{"name":"jimlambie","email":"jameslambie@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.8.2","description":"- [Overview](#overview) - [Requirements](#requirements) - [Your First CDN Project](#your-first-cdn-project) - [Directory Sharding](#directory-sharding) - [Links](#links)","directories":{"test":"test"},"lint-staged":{"*.{js,jsx,md,html,css}":["prettier --write","git add"]},"_nodeVersion":"20.19.4","dependencies":{"he":"^1.1.0","cron":"^2.0.0","etag":"^1.7.0","jimp":"^0.22.12","mime":"^2.4.0","sha1":"~1.1.1","sharp":"^0.32.6","colors":"^1.1.2","mkdirp":"^1.0.0","router":"~1.3.0","aws-sdk":"latest","convict":"^6.2.4","gifwrap":"^0.7.5","maxmind":"^2.2.0","chokidar":"^3.5.0","fs-extra":"^7.0.1","imagemin":"^6.0.0","url-join":"^3.0.0","aspect-fit":"^1.0.2","cloudfront":"~0.4.0","body-parser":"^1.18.2","color-namer":"^1.1.0","object-path":"^0.11.4","streamifier":"^0.1.1","@dadi/logger":"^1.5.0","compressible":"^2.0.13","finalhandler":"~1.1.0","jsonwebtoken":"^9.0.2","node-vibrant":"^3.1.0","range-parser":"^1.2.0","range-stream":"^1.1.0","ua-parser-js":"^0.7.10","concat-stream":"^2.0.0","console-stamp":"^0.2.2","length-stream":"~0.1.1","stream-length":"^1.0.2","@caruuto/cache":"^3.3.1","smartcrop-sharp":"2.0.8","image-size-stream":"1.1.0","imagemin-jpegtran":"^5.0.0","babel-preset-minify":"latest","exif-reader-paras20xx":"^1.1.1","accept-language-parser":"^1.2.0","validate-commit-message":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^14.0.0","nock":"^9.0.2","husky":"^1.3.1","mocha":"10.2.0","redis":"^4.6.13","sinon":"^4.0.2","eslint":"8.5.0","should":"~13.2.0","it-each":"0.3.0","env-test":"^1.0.0","prettier":"^1.18.2","coveralls":"^3.1.1","fakeredis":"^2.0.0","supertest":"^4.0.0","@babel/cli":"^7.24.5","http-proxy":"^1.16.2","proxyquire":"~2.0.0","superagent":"^7.0.0","@babel/core":"^7.24.5","lint-staged":"^9.2.5","aws-sdk-mock":"^5.0.0","@babel/preset-env":"^7.24.5","prettier-standard":"15.0.1","eslint-config-prettier":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cdn_4.1.0_1778481941892_0.8875001519679644","host":"s3://npm-registry-packages-npm-production"}},"4.2.0":{"name":"@caruuto/cdn","version":"4.2.0","author":"","license":"","_id":"@caruuto/cdn@4.2.0","maintainers":[{"name":"jimlambie","email":"jameslambie@gmail.com"},{"name":"woogz","email":"jayraydon@gmail.com"}],"homepage":"","dist":{"shasum":"db7ee3ff026740ca440c7ae12701c6d26b2415a9","tarball":"https://registry.npmjs.org/@caruuto/cdn/-/cdn-4.2.0.tgz","fileCount":56,"integrity":"sha512-chnClTYWb55QfFFJe1+wgjRkwbp8Xj/Ah9/w1t3lNKoN/COlEb660AKnbX+PG2YwBGZ8NSYAfCF0tdWpCt3MBg==","signatures":[{"sig":"MEUCIQCvWlk0V4fBrbQc5flimnRRfOC/jijhsX0DhhA+Q6TVfwIgL5gGqiRCzLtK55XQ0mZLKMD7YO3AGRiMcRKkjY8TEh4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8596721},"snyk":true,"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"a5fc834e58ea45d5f3b7b96d81955076333d1021","scripts":{"init":"validate-commit-msg","test":"rm -f config/config.test.json && eslint . && prettier-standard --changed --format '**/*.js' && yarn run test:run","start":"node index.js --node_env=development","posttest":"./scripts/coverage.js","test:run":"rm -rf cache && env NODE_ENV=test ./node_modules/.bin/nyc --reporter=lcov -x '**/workspace/**' -x 'test/**' ./node_modules/mocha/bin/_mocha test 'test/**/*.js' --exit","precommit":"node scripts/precommit.js"},"_npmUser":{"name":"jimlambie","email":"jameslambie@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.8.2","description":"- [Overview](#overview) - [Requirements](#requirements) - [Your First CDN Project](#your-first-cdn-project) - [Directory Sharding](#directory-sharding) - [Links](#links)","directories":{"test":"test"},"lint-staged":{"*.{js,jsx,md,html,css}":["prettier --write","git add"]},"_nodeVersion":"20.19.4","dependencies":{"he":"^1.1.0","cron":"^2.0.0","etag":"^1.7.0","jimp":"^0.22.12","mime":"^2.4.0","sha1":"~1.1.1","redis":"^4.6.13","sharp":"^0.32.6","colors":"^1.1.2","mkdirp":"^1.0.0","router":"~1.3.0","aws-sdk":"latest","convict":"^6.2.4","gifwrap":"^0.7.5","maxmind":"^2.2.0","chokidar":"^3.5.0","fs-extra":"^7.0.1","imagemin":"^6.0.0","url-join":"^3.0.0","aspect-fit":"^1.0.2","cloudfront":"~0.4.0","body-parser":"^1.18.2","color-namer":"^1.1.0","object-path":"^0.11.4","streamifier":"^0.1.1","@dadi/logger":"^1.5.0","compressible":"^2.0.13","finalhandler":"~1.1.0","jsonwebtoken":"^9.0.2","node-vibrant":"^3.1.0","range-parser":"^1.2.0","range-stream":"^1.1.0","ua-parser-js":"^0.7.10","concat-stream":"^2.0.0","console-stamp":"^0.2.2","length-stream":"~0.1.1","stream-length":"^1.0.2","@caruuto/cache":"^3.3.1","smartcrop-sharp":"2.0.8","image-size-stream":"1.1.0","imagemin-jpegtran":"^5.0.0","babel-preset-minify":"latest","exif-reader-paras20xx":"^1.1.1","accept-language-parser":"^1.2.0","validate-commit-message":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^14.0.0","nock":"^9.0.2","husky":"^1.3.1","mocha":"10.2.0","sinon":"^4.0.2","eslint":"8.5.0","should":"~13.2.0","it-each":"0.3.0","env-test":"^1.0.0","prettier":"^1.18.2","coveralls":"^3.1.1","fakeredis":"^2.0.0","supertest":"^4.0.0","@babel/cli":"^7.24.5","http-proxy":"^1.16.2","proxyquire":"~2.0.0","superagent":"^7.0.0","@babel/core":"^7.24.5","lint-staged":"^9.2.5","aws-sdk-mock":"^5.0.0","@babel/preset-env":"^7.24.5","prettier-standard":"15.0.1","eslint-config-prettier":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cdn_4.2.0_1778483783398_0.3821098393925346","host":"s3://npm-registry-packages-npm-production"}},"4.3.0":{"name":"@caruuto/cdn","version":"4.3.0","author":"","license":"","_id":"@caruuto/cdn@4.3.0","maintainers":[{"name":"jimlambie","email":"jameslambie@gmail.com"},{"name":"woogz","email":"jayraydon@gmail.com"}],"homepage":"","dist":{"shasum":"90baddd7096818906287503e82f4404e2883f62c","tarball":"https://registry.npmjs.org/@caruuto/cdn/-/cdn-4.3.0.tgz","fileCount":58,"integrity":"sha512-TPdWqBFPFwdf8/5JH1ARJzhUwO7fB1YhifIra8vdtL+yZQZgLHeMVHqMzyCxlGuBqoa1VVpCBieuojq52lAUHw==","signatures":[{"sig":"MEQCICKaQ51k+m88yroHVijwXqSgCPCABD9xu6a65NZ41B4PAiBnrBJ4xB4PJNrLVnxpx99tKGqQPGLcMCR/U36HEUuoIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8599941},"snyk":true,"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"c1a142e0ebcb5e5d70681725536f82d3a434249a","scripts":{"init":"validate-commit-msg","test":"rm -f config/config.test.json && eslint . && prettier-standard --changed --format '**/*.js' && yarn run test:run","start":"node index.js --node_env=development","posttest":"./scripts/coverage.js","test:run":"rm -rf cache && env NODE_ENV=test ./node_modules/.bin/nyc --reporter=lcov -x '**/workspace/**' -x 'test/**' ./node_modules/mocha/bin/_mocha test 'test/**/*.js' --exit","precommit":"node scripts/precommit.js"},"_npmUser":{"name":"jimlambie","email":"jameslambie@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.8","description":"- [Overview](#overview) - [Requirements](#requirements) - [Your First CDN Project](#your-first-cdn-project) - [Directory Sharding](#directory-sharding) - [Links](#links)","directories":{"test":"test"},"lint-staged":{"*.{js,jsx,md,html,css}":["prettier --write","git add"]},"_nodeVersion":"22.22.3","dependencies":{"he":"^1.1.0","cron":"^2.0.0","etag":"^1.7.0","jimp":"^0.22.12","mime":"^2.4.0","sha1":"~1.1.1","redis":"^4.6.13","sharp":"^0.32.6","colors":"^1.1.2","mkdirp":"^1.0.0","router":"~1.3.0","aws-sdk":"latest","convict":"^6.2.4","gifwrap":"^0.7.5","maxmind":"^2.2.0","chokidar":"^3.5.0","fs-extra":"^7.0.1","imagemin":"^6.0.0","url-join":"^3.0.0","aspect-fit":"^1.0.2","cloudfront":"~0.4.0","body-parser":"^1.18.2","color-namer":"^1.1.0","object-path":"^0.11.4","streamifier":"^0.1.1","@dadi/logger":"^1.5.0","compressible":"^2.0.13","finalhandler":"~1.1.0","jsonwebtoken":"^9.0.2","node-vibrant":"^3.1.0","range-parser":"^1.2.0","range-stream":"^1.1.0","ua-parser-js":"^0.7.10","concat-stream":"^2.0.0","console-stamp":"^0.2.2","length-stream":"~0.1.1","stream-length":"^1.0.2","@caruuto/cache":"^3.5.0","smartcrop-sharp":"2.0.8","image-size-stream":"1.1.0","imagemin-jpegtran":"^5.0.0","babel-preset-minify":"latest","exif-reader-paras20xx":"^1.1.1","accept-language-parser":"^1.2.0","validate-commit-message":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^14.0.0","nock":"^9.0.2","husky":"^1.3.1","mocha":"10.2.0","sinon":"^4.0.2","eslint":"8.5.0","should":"~13.2.0","it-each":"0.3.0","env-test":"^1.0.0","prettier":"^1.18.2","coveralls":"^3.1.1","fakeredis":"^2.0.0","supertest":"^4.0.0","@babel/cli":"^7.24.5","http-proxy":"^1.16.2","proxyquire":"~2.0.0","superagent":"^7.0.0","@babel/core":"^7.24.5","lint-staged":"^9.2.5","aws-sdk-mock":"^5.0.0","@babel/preset-env":"^7.24.5","prettier-standard":"15.0.1","eslint-config-prettier":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cdn_4.3.0_1782031213761_0.2345992266651511","host":"s3://npm-registry-packages-npm-production"}},"4.3.1":{"name":"@caruuto/cdn","version":"4.3.1","author":"","license":"","_id":"@caruuto/cdn@4.3.1","maintainers":[{"name":"jimlambie","email":"jameslambie@gmail.com"},{"name":"woogz","email":"jayraydon@gmail.com"}],"homepage":"","dist":{"shasum":"2fb97caa012e5076a3f1fd823c23dae255123dd3","tarball":"https://registry.npmjs.org/@caruuto/cdn/-/cdn-4.3.1.tgz","fileCount":58,"integrity":"sha512-X5DPrIv0YCXfQzEuJ1v9mMxbmlQLoPtd3TS0dnM1+qrqdwQQLL5r/KxP6EBb6dUYmWmJ7VAlvenFcFXlb11lfA==","signatures":[{"sig":"MEYCIQC7eqg2d6zwUemm23oPZWmKckTlnOivURn+6Ve6uSQpSwIhAMXena0310DHVGUGN2mTJDED0p0eh+dHOVub31hnUkfn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8600010},"snyk":true,"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"f13a0ef6629d90cf41fa51a3ef2aed33e0e921cd","scripts":{"init":"validate-commit-msg","test":"rm -f config/config.test.json && eslint . && prettier-standard --changed --format '**/*.js' && yarn run test:run","start":"node index.js --node_env=development","posttest":"./scripts/coverage.js","test:run":"rm -rf cache && env NODE_ENV=test ./node_modules/.bin/nyc --reporter=lcov -x '**/workspace/**' -x 'test/**' ./node_modules/mocha/bin/_mocha test 'test/**/*.js' --exit","precommit":"node scripts/precommit.js"},"_npmUser":{"name":"jimlambie","email":"jameslambie@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.8","description":"- [Overview](#overview) - [Requirements](#requirements) - [Your First CDN Project](#your-first-cdn-project) - [Directory Sharding](#directory-sharding) - [Links](#links)","directories":{"test":"test"},"lint-staged":{"*.{js,jsx,md,html,css}":["prettier --write","git add"]},"_nodeVersion":"22.22.3","dependencies":{"he":"^1.1.0","cron":"^2.0.0","etag":"^1.7.0","jimp":"^0.22.12","mime":"^2.4.0","sha1":"~1.1.1","redis":"^4.6.13","sharp":"^0.32.6","colors":"^1.1.2","mkdirp":"^1.0.0","router":"~1.3.0","aws-sdk":"latest","convict":"^6.2.4","gifwrap":"^0.7.5","maxmind":"^2.2.0","chokidar":"^3.5.0","fs-extra":"^7.0.1","imagemin":"^6.0.0","url-join":"^3.0.0","aspect-fit":"^1.0.2","cloudfront":"~0.4.0","body-parser":"^1.18.2","color-namer":"^1.1.0","object-path":"^0.11.4","streamifier":"^0.1.1","@dadi/logger":"^1.5.0","compressible":"^2.0.13","finalhandler":"~1.1.0","jsonwebtoken":"^9.0.2","node-vibrant":"^3.1.0","range-parser":"^1.2.0","range-stream":"^1.1.0","ua-parser-js":"^0.7.10","concat-stream":"^2.0.0","console-stamp":"^0.2.2","length-stream":"~0.1.1","stream-length":"^1.0.2","@caruuto/cache":"^3.6.0","smartcrop-sharp":"2.0.8","image-size-stream":"1.1.0","imagemin-jpegtran":"^5.0.0","babel-preset-minify":"latest","exif-reader-paras20xx":"^1.1.1","accept-language-parser":"^1.2.0","validate-commit-message":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^14.0.0","nock":"^9.0.2","husky":"^1.3.1","mocha":"10.2.0","sinon":"^4.0.2","eslint":"8.5.0","should":"~13.2.0","it-each":"0.3.0","env-test":"^1.0.0","prettier":"^1.18.2","coveralls":"^3.1.1","fakeredis":"^2.0.0","supertest":"^4.0.0","@babel/cli":"^7.24.5","http-proxy":"^1.16.2","proxyquire":"~2.0.0","superagent":"^7.0.0","@babel/core":"^7.24.5","lint-staged":"^9.2.5","aws-sdk-mock":"^5.0.0","@babel/preset-env":"^7.24.5","prettier-standard":"15.0.1","eslint-config-prettier":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cdn_4.3.1_1782033465908_0.5376846712966381","host":"s3://npm-registry-packages-npm-production"}},"4.3.2":{"name":"@caruuto/cdn","version":"4.3.2","author":"","license":"","_id":"@caruuto/cdn@4.3.2","maintainers":[{"name":"jimlambie","email":"jameslambie@gmail.com"},{"name":"woogz","email":"jayraydon@gmail.com"}],"homepage":"","dist":{"shasum":"7268f56179e950d3f729a9e0b97933dbf26cf496","tarball":"https://registry.npmjs.org/@caruuto/cdn/-/cdn-4.3.2.tgz","fileCount":58,"integrity":"sha512-gfJ/8iZOTonQlHj7ZDUxk32BT2nI/I2CrbsdDELXd/qpQsP+4UsiAkYuJhaIhR5qEL3sSZXcHylok1myrQSBMA==","signatures":[{"sig":"MEQCIFSokvF2D/MlEVbEFreeptRj+uT9fKqZKbiYhxjsf0+AAiAzEjo6VUjp5nOM8eoZgqVDttLjiJ0JhWOwnAUZvqmplA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8600288},"snyk":true,"husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"a592272ab7f951a67f86908a4cf61e65c58a1f85","scripts":{"init":"validate-commit-msg","test":"rm -f config/config.test.json && eslint . && prettier-standard --changed --format '**/*.js' && yarn run test:run","start":"node index.js --node_env=development","posttest":"./scripts/coverage.js","test:run":"rm -rf cache && env NODE_ENV=test ./node_modules/.bin/nyc --reporter=lcov -x '**/workspace/**' -x 'test/**' ./node_modules/mocha/bin/_mocha test 'test/**/*.js' --exit","precommit":"node scripts/precommit.js"},"_npmUser":{"name":"jimlambie","email":"jameslambie@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.8","description":"- [Overview](#overview) - [Requirements](#requirements) - [Your First CDN Project](#your-first-cdn-project) - [Directory Sharding](#directory-sharding) - [Links](#links)","directories":{"test":"test"},"lint-staged":{"*.{js,jsx,md,html,css}":["prettier --write","git add"]},"_nodeVersion":"22.22.3","dependencies":{"he":"^1.1.0","cron":"^2.0.0","etag":"^1.7.0","jimp":"^0.22.12","mime":"^2.4.0","sha1":"~1.1.1","redis":"^4.6.13","sharp":"^0.32.6","colors":"^1.1.2","mkdirp":"^1.0.0","router":"~1.3.0","aws-sdk":"latest","convict":"^6.2.4","gifwrap":"^0.7.5","maxmind":"^2.2.0","chokidar":"^3.5.0","fs-extra":"^7.0.1","imagemin":"^6.0.0","url-join":"^3.0.0","aspect-fit":"^1.0.2","cloudfront":"~0.4.0","body-parser":"^1.18.2","color-namer":"^1.1.0","object-path":"^0.11.4","streamifier":"^0.1.1","@dadi/logger":"^1.5.0","compressible":"^2.0.13","finalhandler":"~1.1.0","jsonwebtoken":"^9.0.2","node-vibrant":"^3.1.0","range-parser":"^1.2.0","range-stream":"^1.1.0","ua-parser-js":"^0.7.10","concat-stream":"^2.0.0","console-stamp":"^0.2.2","length-stream":"~0.1.1","stream-length":"^1.0.2","@caruuto/cache":"^3.6.0","smartcrop-sharp":"2.0.8","image-size-stream":"1.1.0","imagemin-jpegtran":"^5.0.0","babel-preset-minify":"latest","exif-reader-paras20xx":"^1.1.1","accept-language-parser":"^1.2.0","validate-commit-message":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^14.0.0","nock":"^9.0.2","husky":"^1.3.1","mocha":"10.2.0","sinon":"^4.0.2","eslint":"8.5.0","should":"~13.2.0","it-each":"0.3.0","env-test":"^1.0.0","prettier":"^1.18.2","coveralls":"^3.1.1","fakeredis":"^2.0.0","supertest":"^4.0.0","@babel/cli":"^7.24.5","http-proxy":"^1.16.2","proxyquire":"~2.0.0","superagent":"^7.0.0","@babel/core":"^7.24.5","lint-staged":"^9.2.5","aws-sdk-mock":"^5.0.0","@babel/preset-env":"^7.24.5","prettier-standard":"15.0.1","eslint-config-prettier":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cdn_4.3.2_1782074332948_0.25215242135460225","host":"s3://npm-registry-packages-npm-production"}},"4.4.0":{"name":"@caruuto/cdn","version":"4.4.0","description":"- [Overview](#overview) - [Requirements](#requirements) - [Your First CDN Project](#your-first-cdn-project) - [Directory Sharding](#directory-sharding) - [Links](#links)","scripts":{"init":"validate-commit-msg","start":"node index.js --node_env=development","test":"rm -f config/config.test.json && eslint . && prettier-standard --changed --format '**/*.js' && yarn run test:run","test:run":"rm -rf cache && env NODE_ENV=test ./node_modules/.bin/nyc --reporter=lcov -x '**/workspace/**' -x 'test/**' ./node_modules/mocha/bin/_mocha test 'test/**/*.js' --exit","precommit":"node scripts/precommit.js","posttest":"./scripts/coverage.js"},"dependencies":{"@caruuto/cache":"^3.6.0","@dadi/logger":"^1.5.0","accept-language-parser":"^1.2.0","aspect-fit":"^1.0.2","aws-sdk":"latest","babel-preset-minify":"latest","body-parser":"^1.18.2","chokidar":"^3.5.0","cloudfront":"~0.4.0","color-namer":"^1.1.0","colors":"^1.1.2","compressible":"^2.0.13","concat-stream":"^2.0.0","console-stamp":"^0.2.2","convict":"^6.2.4","cron":"^2.0.0","etag":"^1.7.0","exif-reader-paras20xx":"^1.1.1","finalhandler":"~1.1.0","fs-extra":"^7.0.1","gifwrap":"^0.7.5","he":"^1.1.0","image-size-stream":"1.1.0","imagemin":"^6.0.0","imagemin-jpegtran":"^5.0.0","jimp":"^0.22.12","jsonwebtoken":"^9.0.2","length-stream":"~0.1.1","maxmind":"^2.2.0","mime":"^2.4.0","mkdirp":"^1.0.0","node-vibrant":"^3.1.0","object-path":"^0.11.4","range-parser":"^1.2.0","range-stream":"^1.1.0","redis":"^4.6.13","router":"~1.3.0","sha1":"~1.1.1","sharp":"^0.32.6","smartcrop-sharp":"2.0.8","stream-length":"^1.0.2","streamifier":"^0.1.1","ua-parser-js":"^0.7.10","url-join":"^3.0.0","validate-commit-message":"^3.0.1"},"devDependencies":{"@babel/cli":"^7.24.5","@babel/core":"^7.24.5","@babel/preset-env":"^7.24.5","aws-sdk-mock":"^5.0.0","coveralls":"^3.1.1","env-test":"^1.0.0","eslint":"8.5.0","eslint-config-prettier":"^9.0.0","fakeredis":"^2.0.0","http-proxy":"^1.16.2","husky":"^1.3.1","it-each":"0.3.0","lint-staged":"^9.2.5","mocha":"10.2.0","nock":"^9.0.2","nyc":"^14.0.0","prettier":"^1.18.2","prettier-standard":"15.0.1","proxyquire":"~2.0.0","should":"~13.2.0","sinon":"^4.0.2","superagent":"^7.0.0","supertest":"^4.0.0"},"repository":{"type":"git","url":""},"homepage":"","directories":{"test":"test"},"author":"","license":"","snyk":true,"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,jsx,md,html,css}":["prettier --write","git add"]},"_id":"@caruuto/cdn@4.4.0","gitHead":"84e5b527389f2d34ab6372c8d8bec94f4f47ab32","_nodeVersion":"22.22.3","_npmVersion":"10.9.8","dist":{"integrity":"sha512-ibpyUp0tGgnAkaRRM4QTAfyT3R9lCr3IsziRZE0Gh0rWyBkBMVS2ctLKsFMKtTJlj3wn5bjbCEgVu68fDr8IcA==","shasum":"dd28b193c656d51ce439685239da541a5485ba4a","tarball":"https://registry.npmjs.org/@caruuto/cdn/-/cdn-4.4.0.tgz","fileCount":58,"unpackedSize":8601545,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCID61qRJ5z08g+qZnw2QLi6VcyAFKCKi7k3/7LRm9uQE1AiEAjnV96RzsiQ9v00DqXoSVJb4mHj9VZ/TN4DD4uQit67w="}]},"_npmUser":{"name":"jimlambie","email":"jameslambie@gmail.com"},"maintainers":[{"name":"jimlambie","email":"jameslambie@gmail.com"},{"name":"woogz","email":"jayraydon@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cdn_4.4.0_1782082644282_0.9407997154193035"},"_hasShrinkwrap":false}},"time":{"created":"2023-10-05T16:53:23.243Z","modified":"2026-06-21T22:57:24.660Z","4.0.0":"2023-10-05T16:53:23.640Z","4.0.1":"2024-05-02T02:21:30.996Z","4.0.2":"2024-06-11T03:40:40.984Z","4.0.3":"2025-05-23T03:56:07.287Z","4.0.4":"2025-05-23T04:17:24.831Z","4.0.5":"2026-05-11T02:29:18.789Z","4.1.0":"2026-05-11T06:45:42.155Z","4.2.0":"2026-05-11T07:16:23.704Z","4.3.0":"2026-06-21T08:40:14.058Z","4.3.1":"2026-06-21T09:17:46.183Z","4.3.2":"2026-06-21T20:38:53.171Z","4.4.0":"2026-06-21T22:57:24.521Z"},"repository":{"type":"git","url":""},"description":"- [Overview](#overview) - [Requirements](#requirements) - [Your First CDN Project](#your-first-cdn-project) - [Directory Sharding](#directory-sharding) - [Links](#links)","maintainers":[{"name":"jimlambie","email":"jameslambie@gmail.com"},{"name":"woogz","email":"jayraydon@gmail.com"}],"readme":"## CDN\n\n- [Overview](#overview)\n- [Requirements](#requirements)\n- [Your First CDN Project](#your-first-cdn-project)\n- [Directory Sharding](#directory-sharding)\n- [Links](#links)\n\n## Overview\n\n## Requirements\n\n- **[Node.js](https://www.nodejs.org/)** (supported versions: 6.9.2, 6.11.1, 8.9.4)\n\n## Your first CDN project\n\n### Install dependencies\n\n### Install CDN\n\n```bash\n$ cd my-app\n$ npm install @caruuto/cdn\n```\n\n### Add an entry point\n\nYou'll need an entry point for your project. We'll create a file called `index.js` and later we will start the application with `node index.js`. Add the following to the new file:\n\n```js\n/**\n *  index.js\n */\nconst app = require('@caruuto/cdn')\n```\n\n### Start the server\n\nCDN can be started from the command line simply by issuing the following command:\n\n```bash\n$ node index.js\n```\n\nWith the default configuration, our CDN server is available at http://localhost:8001. Visiting this URL will display a welcome message.\n\n### Configuration\n\nCDN requires a configuration file specific to the application environment. For example in the production environment it will look for a file named `config.production.json`.\n\nWhen CDN was installed, a development configuration file was created for you in a `config` folder at your application root.\n\n### Run CDN as a service\n\nTo run your CDN application in the background as a service, install Forever and Forever Service:\n\n```bash\n$ npm install forever forever-service -g\n\n$ forever-service install -s index.js -e NODE_ENV=production cdn --start\n```\n\n> Note: the environment variable `NODE_ENV=production` must be set to the required configuration version matching the configuration files available in the `config` directory.\n\n### Configuring an image source\n\nBefore you can serve assets or images you need to tell CDN where your files are located. Currently, CDN can serve your files from three types of source: [Amazon S3](https://docs.dadi.cloud/cdn/#amazon-s3), [a remote server](https://docs.dadi.cloud/cdn/#remote-server), and the [the local filesystem](https://docs.dadi.cloud/cdn/#local-filesystem). We'll start using the local filesystem, but see the [full documentation](https://docs.dadi.cloud/cdn/#defining-sources) for details on using the other source types.\n\nThe sample configuration file defines a local filesystem source. The `path` property is set to use an directory called `images` at the root of your application. CDN will look for your files at the location defined in this `path` property every time it handles a request.\n\n#### Example\n\n```json\n{\n  \"server\": {\n    \"host\": \"127.0.0.1\",\n    \"port\": 8001\n  },\n  \"images\": {\n    \"directory\": {\n      \"enabled\": true,\n      \"path\": \"./images\"\n    }\n  }\n}\n```\n\nWe'll use the above configuration for an example. With image files in the `images` directory we can make a request for one to view it in the browser:\n\n##### Images available\n\n```bash\n$ my-app/images  ls -la\ntotal 9464\ndrwxr-xr-x  4 root  wheel      136 13 Mar 13:02 .\ndrwxr-xr-x  4 root  wheel      136 13 Mar 13:01 ..\n-rw-r--r--  1 root  wheel     9396 13 Mar 13:02 92875.jpg\n-rw-r--r--  1 root  wheel  4832710 13 Mar 13:02 92876.jpg\n```\n\n##### Browser request\n\nhttp://127.0.0.1:8001/92875.jpg\n\n## Links\n\n- [CDN Documentation](https://docs.dadi.cloud/cdn)\n\n## Directory Sharding\n\nCDN uses 4-character subdirectory sharding (`directoryChunkSize: 4`) for all filesystem cache entries. This prevents performance degradation from large flat cache directories by distributing files across a nested hierarchy. For example, a cache key `1073ab6c…` is stored at `./cache/1073/ab6c/…`.\n\n### Deployment Runbook: Enabling Directory Sharding\n\nWhen deploying a version that enables `directoryChunkSize: 4` for the first time, the existing flat-directory cache **must be flushed** before restarting the service. Existing cache entries stored in the old flat layout will not be found after this change (due to path mismatch), so leaving them in place wastes disk space.\n\n**Required steps:**\n\n1. Stop the CDN service.\n2. Delete the existing cache directory (or call the cache flush API endpoint):\n   ```bash\n   rm -rf ./cache\n   ```\n3. Deploy the new code (which includes `directoryChunkSize: 4` in the config).\n4. Start the CDN service. The cache directory will be recreated automatically and new entries will use the sharded path layout.\n","readmeFilename":"README.md"}