From 91a3a1423c20a37f6504e7d794ea1fc597811de6 Mon Sep 17 00:00:00 2001 From: Shibo Lyu Date: Sat, 4 Jan 2025 01:04:00 +0800 Subject: [PATCH] fix: return error based on official approach. --- package.json | 2 + pnpm-lock.yaml | 1178 ++++++++++++++++++++++++++++++++++++++++++++++++ src/index.ts | 14 +- 3 files changed, 1190 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 351ad33..901a984 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,8 @@ "license": "ISC", "dependencies": { "@aws-sdk/client-s3": "^3.540.0", + "@tryghost/errors": "^1.3.6", + "@tryghost/tpl": "^0.1.33", "ghost-storage-base": "^1.0.0" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 627ebb2..c69afd6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,12 @@ importers: '@aws-sdk/client-s3': specifier: ^3.540.0 version: 3.721.0 + '@tryghost/errors': + specifier: ^1.3.6 + version: 1.3.6 + '@tryghost/tpl': + specifier: ^0.1.33 + version: 0.1.33 ghost-storage-base: specifier: ^1.0.0 version: 1.0.0 @@ -540,6 +546,542 @@ packages: resolution: {integrity: sha512-PpjSboaDUE6yl+1qlg3Si57++e84oXdWGbuFUSAciXsVfEZJJJupR2Nb0QuXHiunt2vGR+1PTizOMvnUPaG2Qg==} engines: {node: '>=16.0.0'} + '@stdlib/array-float32@0.2.2': + resolution: {integrity: sha512-pTcy1FNQrrJLL1LMxJjuVpcKJaibbGCFFTe41iCSXpSOC8SuTBuNohrO6K9+xR301Ruxxn4yrzjJJ6Fa3nQJ2g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-float64@0.2.2': + resolution: {integrity: sha512-ZmV5wcacGrhT0maw9dfLXNv4N3ZwFUV3D7ItFfZFGFnKIJbubrWzwtaYnxzIXigrDc8g3F6FVHRpsQLMxq0/lA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-int16@0.2.2': + resolution: {integrity: sha512-kHxyQ1INGtga38Grr/5MnDVAuJgnerh+MsJQcpT5jxxnc9QAnVc7O6DRv8i/hfOOxUOH15C/MeoBs+zim4CnLQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-int32@0.2.2': + resolution: {integrity: sha512-+jFqht43oPJ8YnlyCZ7cSf9Z8xenIIsJDgLZ9zW+gh8o13SSfF+ukm0AGAdnKnKGR3zPBLnSso7JXyDe2r134g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-int8@0.2.2': + resolution: {integrity: sha512-UW3KlKt7Lww1XML5Gzj+YYHRXD8+RIUrnlPcTwYH9O8j+/m5vyvGYlBIJD2MDO1fgUl2skgmpNkK9ULfsBlIRA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-uint16@0.2.2': + resolution: {integrity: sha512-z5c/Izw43HkKfb1pTgEUMAS8GFvhtHkkHZSjX3XJN+17P0VjknxjlSvPiCBGqaDX9jXtlWH3mn1LSyDKtJQoeA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-uint32@0.2.2': + resolution: {integrity: sha512-3T894I9C2MqZJJmRCYFTuJp4Qw9RAt+GzYnVPyIXoK1h3TepUXe9VIVx50cUFIibdXycgu0IFGASeAb3YMyupw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-uint8@0.2.2': + resolution: {integrity: sha512-Ip9MUC8+10U9x0crMKWkpvfoUBBhWzc6k5SI4lxx38neFVmiJ3f+5MBADEagjpoKSBs71vlY2drnEZe+Gs2Ytg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-uint8c@0.2.2': + resolution: {integrity: sha512-uBEJ1yKLZjwgmCV7iSNLkr/SGCxL7qVwnb+f4avVSBxlIv/k29oIO/sibgkHbZMBlBSw39dWQzIKD0UQJWDVDQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-float32array-support@0.2.2': + resolution: {integrity: sha512-pi2akQl8mVki43fF1GNQVLYW0bHIPp2HuRNThX9GjB3OFQTpvrV8/3zPSh4lOxQa5gRiabgf0+Rgeu3AOhEw9A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-float64array-support@0.2.2': + resolution: {integrity: sha512-8L3GuKY1o0dJARCOsW9MXcugXapaMTpSG6dGxyNuUVEvFfY5UOzcj9/JIDal5FjqSgqVOGL5qZl2qtRwub34VA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-int16array-support@0.2.2': + resolution: {integrity: sha512-rIrJ2371vd4kg5sHb/bz0xX1dlwyElT6kivnFPtZUXMaMS1breSUIpwPkUPXdr1AbmQdeJYv0c/YBtKB0PCo2g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-int32array-support@0.2.2': + resolution: {integrity: sha512-3o/6PuZ+z6+cimb9L1f0d4LGP2GJO4EUVlD6oz8I6vKz35438coM5CduXOMVWvdzm4Rku4ty5mi1Gz0U53pC4Q==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-int8array-support@0.2.2': + resolution: {integrity: sha512-QUasYxAqQdgqDglQTwV9dZSwMXvLzLpVC4FcN+kia/+nX1HGjYUBq95fBj0vigW+SC2OiuepJkNiB/PlhA08+g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-node-buffer-support@0.2.2': + resolution: {integrity: sha512-9ReyJGYe9BEZXbUxeRBima0nYy6GwFLVBj7eQ+UUzfG8w7LYYUCpWk954yDpd0v/u+XZQvp1M8EQC2gJLd/i0g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-own-property@0.2.2': + resolution: {integrity: sha512-m5rV4Z2/iNkwx2vRsNheM6sQZMzc8rQQOo90LieICXovXZy8wA5jNld4kRKjMNcRt/TjrNP7i2Rhh8hruRDlHg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-symbol-support@0.2.2': + resolution: {integrity: sha512-vCsGGmDZz5dikGgdF26rIL0y0nHvH7qaVf89HLLTybceuZijAqFSJEqcB3Gpl5uaeueLNAWExHi2EkoUVqKHGg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-tostringtag-support@0.2.2': + resolution: {integrity: sha512-bSHGqku11VH0swPEzO4Y2Dr+lTYEtjSWjamwqCTC8udOiOIOHKoxuU4uaMGKJjVfXG1L+XefLHqzuO5azxdRaA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-uint16array-support@0.2.2': + resolution: {integrity: sha512-aL188V7rOkkEH4wYjfpB+1waDO4ULxo5ppGEK6X0kG4YiXYBL2Zyum53bjEQvo0Nkn6ixe18dNzqqWWytBmDeg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-uint32array-support@0.2.2': + resolution: {integrity: sha512-+UHKP3mZOACkJ9CQjeKNfbXHm5HGQB862V5nV5q3UQlHPzhslnXKyG1SwAxTx+0g88C/2vlDLeqG8H4TH2UTFA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-uint8array-support@0.2.2': + resolution: {integrity: sha512-VfzrB0BMik9MvPyKcMDJL3waq4nM30RZUrr2EuuQ/RbUpromRWSDbzGTlRq5SfjtJrHDxILPV3rytDCc03dgWA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-uint8clampedarray-support@0.2.2': + resolution: {integrity: sha512-/zT8Piv1UUFUpelBo0LuTE4V9BOEW7DTwfGlPvez93lk72XtaIYhTHkj+Z9YBGfAMV2PbL6eteqFffMVzUgnXg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-arguments@0.2.2': + resolution: {integrity: sha512-SejXrHpneNcn0nDot2K49XoTzPQQUvCFQj+2vc4UtJdtFFzB5r1fYgvtL7RqkhVglD7zNJG1acJYa7PiZCpZog==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-array@0.2.2': + resolution: {integrity: sha512-aJyTX2U3JqAGCATgaAX9ygvDHc97GCIKkIhiZm/AZaLoFHPtMA1atQ4bKcefEC8Um9eefryxTHfFPfSr9CoNQQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-boolean@0.2.2': + resolution: {integrity: sha512-3KFLRTYZpX6u95baZ6PubBvjehJs2xBU6+zrenR0jx8KToUYCnJPxqqj7JXRhSD+cOURmcjj9rocVaG9Nz18Pg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-buffer@0.2.2': + resolution: {integrity: sha512-4/WMFTEcDYlVbRhxY8Wlqag4S70QCnn6WmQ4wmfiLW92kqQHsLvTNvdt/qqh/SDyDV31R/cpd3QPsVN534dNEA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-collection@0.2.2': + resolution: {integrity: sha512-tbh6ySMqzTkHjFzcNkwtfnJgt65qWeu+0Wv3N0D9QEd3gnJfWq4mJJS3DyJ5n91VoB7RXppB/giDxDUCw/Y+KQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-enumerable-property@0.2.2': + resolution: {integrity: sha512-An5QM9Zb3bjKZp5XVdsHTv6/8pJMJvnweHDdLPQhEtLve3YIM4Xo0CQ3TlvKgTr6Lz2UO/+yx8rrDdN5i9Dp5Q==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-error@0.2.2': + resolution: {integrity: sha512-HKw/vTJvXG8OvDSWSRA5nCKAgKxvzG7xack0xjCUTw1Xh3q8mMmQtCTjwkRtFyvSFDd0DeacMc/Ur5sU5bzOgg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-float32array@0.2.2': + resolution: {integrity: sha512-hxEKz/Y4m1NYuOaiQKoqQA1HeAYwNXFqSk3FJ4hC71DuGNit2tuxucVyck3mcWLpLmqo0+Qlojgwo5P9/C/9MQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-float64array@0.2.2': + resolution: {integrity: sha512-3R1wLi6u/IHXsXMtaLnvN9BSpqAJ8tWhwjOOr6kadDqCWsU7Odc7xKLeAXAInAxwnV8VDpO4ifym4A3wehazPQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-function@0.2.2': + resolution: {integrity: sha512-whY69DUYWljCJ79Cvygp7VzWGOtGTsh3SQhzNuGt+ut6EsOW+8nwiRkyBXYKf/MOF+NRn15pxg8cJEoeRgsPcA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-int16array@0.2.2': + resolution: {integrity: sha512-HQ9yyX1di07pWreBk6njw9x1sipJKSP4SCSkidLfUHKxaooxeUprAFONfMiEMdNBbn7f3awfs23h1bpN/Z6Vmg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-int32array@0.2.2': + resolution: {integrity: sha512-YomgTwoJD/ci8K9mWNCyqSDtkYfHNplMYw+B9rmcxrjX//1LVZkrzgwWEc6dC3RlY0Ou+uDHJpKeKL9G2fj4GQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-int8array@0.2.2': + resolution: {integrity: sha512-Y1QP3uIZ+CG+rFrD6nOO/N/8O1rRbXgG+iVo5aj8xNRUtfg1iYekUspfNKqxeZUJ95Ocv705m7/vsGlvI1MugQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-integer@0.2.2': + resolution: {integrity: sha512-2d4CioQmnPcNDvNfC3Q6+xAJLwYYcSUamnxP0bSBJ1oAazWaVArdXNUAUxufek2Uaq6TVIM2gNSMyivIKIJd2w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-nan@0.2.2': + resolution: {integrity: sha512-Wh7KPIVfi6UVBRuPgkjVnoJP6mVtDNg+Y4m3Hko86TSf78KqFXfyZy/m6hnlYBWZRkNJDKo1J/7A/zpPwcEUVg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-nonnegative-integer@0.2.2': + resolution: {integrity: sha512-4t2FoZQeZ5nMYHYSeTVlgAp/HLEMYqe9qMcJgbvj63KTrGCDsuIpTE0S+UTxAc6Oc3Ftgb0ygjBFJQ0mxwN0Ow==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-number@0.2.2': + resolution: {integrity: sha512-sWpJ59GqGbmlcdYSUV/OYkmQW8k47w10+E0K0zPu1x1VKzhjgA5ZB2sJcpgI8Vt3ckRLjdhuc62ZHJkrJujG7A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-object-like@0.2.2': + resolution: {integrity: sha512-MjQBpHdEebbJwLlxh/BKNH8IEHqY0YlcCMRKOQU0UOlILSJg0vG+GL4fDDqtx9FSXxcTqC+w3keHx8kAKvQhzg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-object@0.2.2': + resolution: {integrity: sha512-sNnphJuHyMDHHHaonlx6vaCKMe4sHOn0ag5Ck4iW3kJtM2OZB2J4h8qFcwKzlMk7fgFu7vYNGCZtpm1dYbbUfQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-plain-object@0.2.2': + resolution: {integrity: sha512-o4AFWgBsSNzZAOOfIrxoDFYTqnLuGiaHDFwIeZGUHdpQeav2Fll+sGeaqOcekF7yKawoswnwWdJqTsjapb4Yzw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-regexp@0.2.2': + resolution: {integrity: sha512-2JtiUtRJxPaVXL7dkWoV3n5jouI65DwYDXsDXg3xo23TXlTNGgU/HhKO4FWC1Yqju7YMZi0hcZSW6E9v8ISqeQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-string@0.2.2': + resolution: {integrity: sha512-SOkFg4Hq443hkadM4tzcwTHWvTyKP9ULOZ8MSnnqmU0nBX1zLVFLFGY8jnF6Cary0dL0V7QQBCfuxqKFM6u2PQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-uint16array@0.2.2': + resolution: {integrity: sha512-w3+HeTiXGLJGw5nCqr0WbvgArNMEj7ulED1Yd19xXbmmk2W1ZUB+g9hJDOQTiKsTU4AVyH4/As+aA8eDVmWtmg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-uint32array@0.2.2': + resolution: {integrity: sha512-3F4nIHg1Qp0mMIsImWUC8DwQ3qBK5vdIJTjS2LufLbFBhHNmv5kK1yJiIXQDTLkENU0STZe05TByo01ZNLOmDQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-uint8array@0.2.2': + resolution: {integrity: sha512-51WnDip6H2RrN0CbqWmfqySAjam8IZ0VjlfUDc3PtcgrZGrKKjVgyHAsT/L3ZDydwF+aB94uvYJu5QyrCPNaZw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-uint8clampedarray@0.2.2': + resolution: {integrity: sha512-MjHhOxjOXesqUNgoDGOiO9vib1HV3uCNoYQfiEDWAv30pVAty70wEcwDQ7cdQs1ZGfGC/355ob8AR2Z8lY4ryw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-tools-array-function@0.2.2': + resolution: {integrity: sha512-FYeT7X9x0C8Nh+MN6IJUDz+7i7yB6mio2/SDlrvyepjyPSU/cfHfwW0GEOnQhxZ+keLZC/YqDD930WjRODwMdA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/boolean-ctor@0.2.2': + resolution: {integrity: sha512-qIkHzmfxDvGzQ3XI9R7sZG97QSaWG5TvWVlrvcysOGT1cs6HtQgnf4D//SRzZ52VLm8oICP+6OKtd8Hpm6G7Ww==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/buffer-ctor@0.2.2': + resolution: {integrity: sha512-Q/FkXxyZUzCA1fwOl7sa8ZYg6e60fTksCYr01nJv8fvmr9l9Ju6MKmm20n833yE7KA5jDDtZW9lB1V7552fLMA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/buffer-from-buffer@0.2.2': + resolution: {integrity: sha512-EU/Mju7j3Hw/z6xxlZ14h6ZEyhiarR4nXhDQwycJ4NcFb7Oi+KaeNvX5rRQgf/k04cpcq8VkQiM1xOMrKPCvqA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/complex-float32-ctor@0.0.2': + resolution: {integrity: sha512-QsTLynhTRmDT0mSkfdHj0FSqQSxh2nKx+vvrH3Y0/Cd/r0WoHFZwyibndDxshfkf9B7nist8QKyvV82I3IZciA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/complex-float32-reim@0.1.2': + resolution: {integrity: sha512-24H+t1xwQF6vhOoMZdDA3TFB4M+jb5Swm/FwNaepovlzVIG2NlthUZs6mZg1T3oegqesIRQRwhpn4jIPjuGiTw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/complex-float64-ctor@0.0.3': + resolution: {integrity: sha512-oixCtBif+Uab2rKtgedwQTbQTEC+wVSu4JQH935eJ8Jo0eL6vXUHHlVrkLgYKlCDLvq5px1QQn42Czg/ixh6Gw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/complex-float64-reim@0.1.2': + resolution: {integrity: sha512-q6RnfgbUunApAYuGmkft1oOM3x3xVMVJwNRlRgfIXwKDb8pYt+S/CeIwi3Su5SF6ay3AqA1s+ze7m21osXAJyw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-array-max-typed-array-length@0.2.2': + resolution: {integrity: sha512-uAoBItVIfuzR4zKK1F57Znrn2frKL0U9gqJkg30BXuno3YlUvbhIfVP3VsUmGJCmi9ztgYLqX10yqb0KvlM2Ig==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-ninf@0.2.2': + resolution: {integrity: sha512-Iu+wZs/vgudAKVg9FEcRY3FadkmvsWuq/wJ3jIHjhaP5xcnoF3XJUO4IneEndybHwehfJL65NShnDsJcg1gicw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-pinf@0.2.2': + resolution: {integrity: sha512-UcwnWaSkUMD8QyKADwkXPlY7yOosCPZpE2EDXf/+WOzuWi5vpsec+JaasD5ggAN8Rv8OTVmexTFs1uZfrHgqVQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-int16-max@0.2.2': + resolution: {integrity: sha512-w7XnWFxYXRyAnbKOxur3981FeaSlhKvHlhETwH5ZhtOQerk3Jn/iJFdtbN8CD0he1Kml4DWhnoKB7P9PcOaTIw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-int16-min@0.2.2': + resolution: {integrity: sha512-zn15vCgNoyD97z7mNQMChEneyc6xQudVGj1BOv5vZl827vHAs+KV6xeCI7VGY8Lpd6V22piDoGG3Mvj/43u9vQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-int32-max@0.3.0': + resolution: {integrity: sha512-jYN84QfG/yP2RYw98OR6UYehFFs0PsGAihV6pYU0ey+WF9IOXgSjRP56KMoZ7ctHwl4wsnj9I+qB2tGuEXr+pQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-int32-min@0.2.2': + resolution: {integrity: sha512-4QMOTpo5QykiWp52Wtugu1WK1wV/Bi2Hjj9L97dfZ3BPB1Oa9ykiUZvTsq3GBNCMu2YHPv1ugbV91C3p3bw+Aw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-int8-max@0.2.2': + resolution: {integrity: sha512-zp1L61S/ycOmkILmvuXEKvtXrEJ0QUAwP65sNAWMJOtdT0mhGMfGpXKvCK84TC3+jP5Wk4LU13cgO2bf/pmGTw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-int8-min@0.2.2': + resolution: {integrity: sha512-nxPloZUqbGuyuOPC0U3xQOn9YdyRq2g9uc1dzcw6k0XBhql9mlz9kCbdC74HeMm4K9Dyyb7IlAZLCezdv60s6g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-uint16-max@0.2.2': + resolution: {integrity: sha512-qaFXbxgFnAkt73P5Ch7ODb0TsOTg0LEBM52hw6qt7+gTMZUdS0zBAiy5J2eEkTxA9rD9X3nIyUtLf2C7jafNdw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-uint32-max@0.2.2': + resolution: {integrity: sha512-2G44HQgIKDrh3tJUkmvtz+eM+uwDvOMF+2I3sONcTHacANb+zP7la4LDYiTp+HFkPJyfh/kPapXBiHpissAb1A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-uint8-max@0.2.2': + resolution: {integrity: sha512-ZTBQq3fqS/Y4ll6cPY5SKaS266EfmKP9PW3YLJaTELmYIzVo9w2RFtfCqN05G3olTQ6Le9MUEE/C6VFgZNElDQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/error-tools-fmtprodmsg@0.2.2': + resolution: {integrity: sha512-2IliQfTes4WV5odPidZFGD5eYDswZrPXob7oOu95Q69ERqImo8WzSwnG2EDbHPyOyYCewuMfM5Ha6Ggf+u944Q==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/fs-exists@0.2.2': + resolution: {integrity: sha512-uGLqc7izCIam2aTyv0miyktl4l8awgRkCS39eIEvvvnKIaTBF6pxfac7FtFHeEQKE3XhtKsOmdQ/yJjUMChLuA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/fs-resolve-parent-path@0.2.2': + resolution: {integrity: sha512-ZG78ouZc+pdPLtU+sSpYTvbKTiLUgn6NTtlVFYmcmkYRFn+fGOOakwVuhYMcYG6ti10cLD6WzB/YujxIt8f+nA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-assert-is-integer@0.2.5': + resolution: {integrity: sha512-Zi8N66GbWtSCR3OUsRdBknjNlX+aBN8w6CaVEP5+Jy/a7MgMYzevS52TNS5sm8jqzKBlFhZlPLex+Zl2GlPvSA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-assert-is-nan@0.2.2': + resolution: {integrity: sha512-QVS8rpWdkR9YmHqiYLDVLsCiM+dASt/2feuTl4T/GSdou3Y/PS/4j/tuDvCDoHDNfDkULUW+FCVjKYpbyoeqBQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-napi-unary@0.2.3': + resolution: {integrity: sha512-BCyJmpq2S8EFo2yMt1z+v1EL7nn8RHcM6jn7fa8n3BTP679K0MSlawIh3A0CFogfrTdjPM4G44VO1ddsdLExcg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-floor@0.2.3': + resolution: {integrity: sha512-zTkxVRawtWwJ4NmAT/1e+ZsIoBj1JqUquGOpiNVGNIKtyLOeCONZlZSbN7zuxPkshvmcSjpQ/VLKR8Tw/37E9A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-ctor@0.2.2': + resolution: {integrity: sha512-98pL4f1uiXVIw9uRV6t4xecMFUYRRTUoctsqDDV8MSRtKEYDzqkWCNz/auupJFJ135L1ejzkejh73fASsgcwKQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-float64-base-to-float32@0.2.2': + resolution: {integrity: sha512-T5snDkVNZY6pomrSW/qLWQfZ9JHgqCFLi8jaaarfNj2o+5NMUuvvRifLUIacTm8/uC96xB0j3+wKTh1zbIV5ig==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/object-ctor@0.2.1': + resolution: {integrity: sha512-HEIBBpfdQS9Nh5mmIqMk9fzedx6E0tayJrVa2FD7No86rVuq/Ikxq1QP7qNXm+i6z9iNUUS/lZq7BmJESWO/Zg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/process-cwd@0.2.2': + resolution: {integrity: sha512-8Q/nA/ud5d5PEzzG6ZtKzcOw+RMLm5CWR8Wd+zVO5vcPj+JD7IV7M2lBhbzfUzr63Torrf/vEhT3cob8vUHV/A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/regexp-extended-length-path@0.2.2': + resolution: {integrity: sha512-z3jqauEsaxpsQU3rj1A1QnOgu17pyW5kt+Az8QkoTk7wqNE8HhPikI6k4o7XBHV689rSFWZCl4c4W+7JAiNObQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/regexp-function-name@0.2.2': + resolution: {integrity: sha512-0z/KRsgHJJ3UQkmBeLH+Nin0hXIeA+Fw1T+mnG2V5CHnTA6FKlpxJxWrvwLEsRX7mR/DNtDp06zGyzMFE/4kig==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/regexp-regexp@0.2.2': + resolution: {integrity: sha512-LlWqVH7wou4rJ2vovmn8ZZf4Z5/sMYxGQkmUcURvdCDMSL4pt91uPMi9I2hLECcIYXLiKUD87VSR56Y5luaafg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/string-base-format-interpolate@0.2.2': + resolution: {integrity: sha512-i9nU9rAB2+o/RR66TS9iQ8x+YzeUDL1SGiAo6GY3hP6Umz5Dx9Qp/v8T69gWVsb4a1YSclz5+YeCWaFgwvPjKA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/string-base-format-tokenize@0.2.2': + resolution: {integrity: sha512-kXq2015i+LJjqth5dN+hYnvJXBSzRm8w0ABWB5tYAsIuQTpQK+mSo2muM8JBEFEnqUHAwpUsu2qNTK/9o8lsJg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/string-base-lowercase@0.4.0': + resolution: {integrity: sha512-IH35Z5e4T+S3b3SfYY39mUhrD2qvJVp4VS7Rn3+jgj4+C3syocuAPsJ8C4OQXWGfblX/N9ymizbpFBCiVvMW8w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/string-base-replace@0.2.2': + resolution: {integrity: sha512-Y4jZwRV4Uertw7AlA/lwaYl1HjTefSriN5+ztRcQQyDYmoVN3gzoVKLJ123HPiggZ89vROfC+sk/6AKvly+0CA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/string-format@0.2.2': + resolution: {integrity: sha512-GUa50uxgMAtoItsxTbMmwkyhIwrCxCrsjzk3nAbLnt/1Kt1EWOWMwsALqZdD6K4V/xSJ4ns6PZur3W6w+vKk9g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/string-replace@0.2.2': + resolution: {integrity: sha512-czNS5IU7sBuHjac45Y3VWUTsUoi82yc8JsMZrOMcjgSrEuDrVmA6sNJg7HC1DuSpdPjm/v9uUk102s1gIfk3Nw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/symbol-ctor@0.2.2': + resolution: {integrity: sha512-XsmiTfHnTb9jSPf2SoK3O0wrNOXMxqzukvDvtzVur1XBKfim9+seaAS4akmV1H3+AroAXQWVtde885e1B6jz1w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-constructor-name@0.2.2': + resolution: {integrity: sha512-TBtO3MKDAf05ij5ajmyBCbpKKt0Lfahn5tu18gqds4PkFltgcw5tVZfSHY5DZ2HySJQ2GMMYjPW2Kbg6yPCSVg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-convert-path@0.2.2': + resolution: {integrity: sha512-8nNuAgt23Np9NssjShUrPK42c6gRTweGuoQw+yTpTfBR9VQv8WFyt048n8gRGUlAHizrdMNpEY9VAb7IBzpVYw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-copy@0.2.2': + resolution: {integrity: sha512-DM8O5tgOHHyhaERDJKa/ThDhIewDyo5SxoFJnmxSriAlJsV9uAmzF8rm7vY969TPRACb+Uxj2GXUoYlmUcHTmA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-define-nonenumerable-read-only-property@0.2.2': + resolution: {integrity: sha512-V3mpAesJemLYDKG376CsmoczWPE/4LKsp8xBvUxCt5CLNAx3J/1W39iZQyA5q6nY1RStGinGn1/dYZwa8ig0Uw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-define-property@0.2.4': + resolution: {integrity: sha512-XlMdz7xwuw/sqXc9LbsV8XunCzZXjbZPC+OAdf4t4PBw4ZRwGzlTI6WED+f4PYR5Tp9F1cHgLPyMYCIBfA2zRg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-escape-regexp-string@0.2.2': + resolution: {integrity: sha512-areCibzgpmvm6pGKBg+mXkSDJW4NxtS5jcAT7RtunGMdAYhA/I5whISMPaeJkIT2XhjjFkjKBaIs5pF6aPr4fQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-get-prototype-of@0.2.2': + resolution: {integrity: sha512-eDb1BAvt7GW/jduBkfuQrUsA9p09mV8RW20g0DWPaxci6ORYg/UB0tdbAA23aZz2QUoxdYY5s/UJxlq/GHwoKQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-global@0.2.2': + resolution: {integrity: sha512-A4E8VFHn+1bpfJ4PA8H2b62CMQpjv2A+H3QDEBrouLFWne0wrx0TNq8vH6VYHxx9ZRxhgWQjfHiSAxtUJobrbQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-index-of@0.2.2': + resolution: {integrity: sha512-yVnjPk3Arzf3no+Ju5ys4ZVG4aKHA8xV4g53Ni+FO8c0AStKq9F8O+E/aFxluCKqLz6jGLaLea7996e0Hcw9mQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-keys@0.2.2': + resolution: {integrity: sha512-mvmvhpewElNalx5YotZ/jI57CiYHc9y6N8SGxJiOUs04NkWMkW8rnXRvJEi0rPj2BOIJReEGZ1WaZpdL68DUcQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-library-manifest@0.2.2': + resolution: {integrity: sha512-YqzVLuBsB4wTqzdUtRArAjBJoT3x61iop2jFChXexhl6ejV3vDpHcukEEkqIOcJKut+1cG5TLJdexgHNt1C0NA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-native-class@0.2.2': + resolution: {integrity: sha512-cSn/FozbEpfR/FlJAoceQtZ8yUJFhZ8RFkbEsxW/7+H4o09yln3lBS0HSfUJISYNtpTNN/2/Fup88vmvwspvwA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-noop@0.2.2': + resolution: {integrity: sha512-QlHCBCExrFlNFFqDBOvxPeHkvAuMBHsbQYWRjSG2FD6QumEDn9EqBAcJZNr+xYdkw/6SVRJ0ySTyroReg5vcAA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-property-descriptor@0.2.2': + resolution: {integrity: sha512-iq0jFOOX5OmaOC1uyO8POjWPPA6GxbFFcDzH4QsyhKWN2P5ZDvnKMRfH6TuMmaLEA5vSzeNwGfcBPQMRBRphUg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-property-names@0.2.2': + resolution: {integrity: sha512-LlHK467gOxvD6T5yzSy/DnDPzeG00Qj1lrowapAOP7HbGMPvs3RI8Re32IqUke5OE698jXW3tL0VDu6yLi2e1A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-regexp-from-string@0.2.2': + resolution: {integrity: sha512-xvyX44wYAn7DUSTwfIdzohFFo2J+kkzZf1I3cQZr09k8364/1x2Ro7bhPVXX/fEUJ1LbbPF3PAcGa44cvN8Nzg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-type-of@0.2.2': + resolution: {integrity: sha512-RLGFxPNgY9AtVVrFGdKO6Y3pOd/Ov2WA4O2/czZN/AbgYzbPdoF0KkfvHRIney6k+TtvoyYB8YqZXJ4G88f9BQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@tryghost/errors@1.3.6': + resolution: {integrity: sha512-qxl6wF5tlhr646Earjmfcz3km6d+B0tzUmocyVu3tY8StI4pH8mLgzHDtkiTAls9ABPichBxZQe6a8PDcVJbFw==} + + '@tryghost/tpl@0.1.33': + resolution: {integrity: sha512-wkwLw0SvX3Ex+yQP/wl7w4m1PYOddP/jLEcW5xGUEGaYSuPgpHrHPmu9lvxWmK++q/SPiVHqVSV97FFaIb2oNQ==} + '@types/body-parser@1.19.5': resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} @@ -579,6 +1121,14 @@ packages: bowser@2.11.0: resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + esbuild@0.20.2: resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} engines: {node: '>=12'} @@ -588,20 +1138,55 @@ packages: resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} hasBin: true + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + ghost-storage-base@1.0.0: resolution: {integrity: sha512-qIW6pny/wWKjrbRmXVNis9i7856AMR5/NZmnLTrKbA0KIEnA9K/fhkj7ISnSyTYfBv17sFsC23eJfvj6dDgZrQ==} + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + lodash._reinterpolate@3.0.0: + resolution: {integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==} + + lodash.template@4.5.0: + resolution: {integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==} + + lodash.templatesettings@4.2.0: + resolution: {integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==} + moment@2.27.0: resolution: {integrity: sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==} + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + prettier@3.4.2: resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==} engines: {node: '>=14'} hasBin: true + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -1526,6 +2111,562 @@ snapshots: '@smithy/types': 3.7.2 tslib: 2.8.1 + '@stdlib/array-float32@0.2.2': + dependencies: + '@stdlib/assert-has-float32array-support': 0.2.2 + + '@stdlib/array-float64@0.2.2': + dependencies: + '@stdlib/assert-has-float64array-support': 0.2.2 + + '@stdlib/array-int16@0.2.2': + dependencies: + '@stdlib/assert-has-int16array-support': 0.2.2 + + '@stdlib/array-int32@0.2.2': + dependencies: + '@stdlib/assert-has-int32array-support': 0.2.2 + + '@stdlib/array-int8@0.2.2': + dependencies: + '@stdlib/assert-has-int8array-support': 0.2.2 + + '@stdlib/array-uint16@0.2.2': + dependencies: + '@stdlib/assert-has-uint16array-support': 0.2.2 + + '@stdlib/array-uint32@0.2.2': + dependencies: + '@stdlib/assert-has-uint32array-support': 0.2.2 + + '@stdlib/array-uint8@0.2.2': + dependencies: + '@stdlib/assert-has-uint8array-support': 0.2.2 + + '@stdlib/array-uint8c@0.2.2': + dependencies: + '@stdlib/assert-has-uint8clampedarray-support': 0.2.2 + + '@stdlib/assert-has-float32array-support@0.2.2': + dependencies: + '@stdlib/assert-is-float32array': 0.2.2 + '@stdlib/constants-float64-pinf': 0.2.2 + + '@stdlib/assert-has-float64array-support@0.2.2': + dependencies: + '@stdlib/assert-is-float64array': 0.2.2 + + '@stdlib/assert-has-int16array-support@0.2.2': + dependencies: + '@stdlib/assert-is-int16array': 0.2.2 + '@stdlib/constants-int16-max': 0.2.2 + '@stdlib/constants-int16-min': 0.2.2 + + '@stdlib/assert-has-int32array-support@0.2.2': + dependencies: + '@stdlib/assert-is-int32array': 0.2.2 + '@stdlib/constants-int32-max': 0.3.0 + '@stdlib/constants-int32-min': 0.2.2 + + '@stdlib/assert-has-int8array-support@0.2.2': + dependencies: + '@stdlib/assert-is-int8array': 0.2.2 + '@stdlib/constants-int8-max': 0.2.2 + '@stdlib/constants-int8-min': 0.2.2 + + '@stdlib/assert-has-node-buffer-support@0.2.2': + dependencies: + '@stdlib/assert-is-buffer': 0.2.2 + + '@stdlib/assert-has-own-property@0.2.2': {} + + '@stdlib/assert-has-symbol-support@0.2.2': {} + + '@stdlib/assert-has-tostringtag-support@0.2.2': + dependencies: + '@stdlib/assert-has-symbol-support': 0.2.2 + + '@stdlib/assert-has-uint16array-support@0.2.2': + dependencies: + '@stdlib/assert-is-uint16array': 0.2.2 + '@stdlib/constants-uint16-max': 0.2.2 + + '@stdlib/assert-has-uint32array-support@0.2.2': + dependencies: + '@stdlib/assert-is-uint32array': 0.2.2 + '@stdlib/constants-uint32-max': 0.2.2 + + '@stdlib/assert-has-uint8array-support@0.2.2': + dependencies: + '@stdlib/assert-is-uint8array': 0.2.2 + '@stdlib/constants-uint8-max': 0.2.2 + + '@stdlib/assert-has-uint8clampedarray-support@0.2.2': + dependencies: + '@stdlib/assert-is-uint8clampedarray': 0.2.2 + + '@stdlib/assert-is-arguments@0.2.2': + dependencies: + '@stdlib/assert-has-own-property': 0.2.2 + '@stdlib/assert-is-array': 0.2.2 + '@stdlib/assert-is-enumerable-property': 0.2.2 + '@stdlib/constants-uint32-max': 0.2.2 + '@stdlib/math-base-assert-is-integer': 0.2.5 + '@stdlib/utils-native-class': 0.2.2 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-is-array@0.2.2': + dependencies: + '@stdlib/utils-native-class': 0.2.2 + + '@stdlib/assert-is-boolean@0.2.2': + dependencies: + '@stdlib/assert-has-tostringtag-support': 0.2.2 + '@stdlib/boolean-ctor': 0.2.2 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 + '@stdlib/utils-native-class': 0.2.2 + + '@stdlib/assert-is-buffer@0.2.2': + dependencies: + '@stdlib/assert-is-object-like': 0.2.2 + + '@stdlib/assert-is-collection@0.2.2': + dependencies: + '@stdlib/constants-array-max-typed-array-length': 0.2.2 + '@stdlib/math-base-assert-is-integer': 0.2.5 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-is-enumerable-property@0.2.2': + dependencies: + '@stdlib/assert-is-integer': 0.2.2 + '@stdlib/assert-is-nan': 0.2.2 + '@stdlib/assert-is-string': 0.2.2 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-is-error@0.2.2': + dependencies: + '@stdlib/utils-get-prototype-of': 0.2.2 + '@stdlib/utils-native-class': 0.2.2 + + '@stdlib/assert-is-float32array@0.2.2': + dependencies: + '@stdlib/utils-native-class': 0.2.2 + + '@stdlib/assert-is-float64array@0.2.2': + dependencies: + '@stdlib/utils-native-class': 0.2.2 + + '@stdlib/assert-is-function@0.2.2': + dependencies: + '@stdlib/utils-type-of': 0.2.2 + + '@stdlib/assert-is-int16array@0.2.2': + dependencies: + '@stdlib/utils-native-class': 0.2.2 + + '@stdlib/assert-is-int32array@0.2.2': + dependencies: + '@stdlib/utils-native-class': 0.2.2 + + '@stdlib/assert-is-int8array@0.2.2': + dependencies: + '@stdlib/utils-native-class': 0.2.2 + + '@stdlib/assert-is-integer@0.2.2': + dependencies: + '@stdlib/assert-is-number': 0.2.2 + '@stdlib/constants-float64-ninf': 0.2.2 + '@stdlib/constants-float64-pinf': 0.2.2 + '@stdlib/math-base-assert-is-integer': 0.2.5 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-is-nan@0.2.2': + dependencies: + '@stdlib/assert-is-number': 0.2.2 + '@stdlib/math-base-assert-is-nan': 0.2.2 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-is-nonnegative-integer@0.2.2': + dependencies: + '@stdlib/assert-is-integer': 0.2.2 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-is-number@0.2.2': + dependencies: + '@stdlib/assert-has-tostringtag-support': 0.2.2 + '@stdlib/number-ctor': 0.2.2 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 + '@stdlib/utils-native-class': 0.2.2 + + '@stdlib/assert-is-object-like@0.2.2': + dependencies: + '@stdlib/assert-tools-array-function': 0.2.2 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 + + '@stdlib/assert-is-object@0.2.2': + dependencies: + '@stdlib/assert-is-array': 0.2.2 + + '@stdlib/assert-is-plain-object@0.2.2': + dependencies: + '@stdlib/assert-has-own-property': 0.2.2 + '@stdlib/assert-is-function': 0.2.2 + '@stdlib/assert-is-object': 0.2.2 + '@stdlib/utils-get-prototype-of': 0.2.2 + '@stdlib/utils-native-class': 0.2.2 + + '@stdlib/assert-is-regexp@0.2.2': + dependencies: + '@stdlib/assert-has-tostringtag-support': 0.2.2 + '@stdlib/utils-native-class': 0.2.2 + + '@stdlib/assert-is-string@0.2.2': + dependencies: + '@stdlib/assert-has-tostringtag-support': 0.2.2 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 + '@stdlib/utils-native-class': 0.2.2 + + '@stdlib/assert-is-uint16array@0.2.2': + dependencies: + '@stdlib/utils-native-class': 0.2.2 + + '@stdlib/assert-is-uint32array@0.2.2': + dependencies: + '@stdlib/utils-native-class': 0.2.2 + + '@stdlib/assert-is-uint8array@0.2.2': + dependencies: + '@stdlib/utils-native-class': 0.2.2 + + '@stdlib/assert-is-uint8clampedarray@0.2.2': + dependencies: + '@stdlib/utils-native-class': 0.2.2 + + '@stdlib/assert-tools-array-function@0.2.2': + dependencies: + '@stdlib/assert-is-array': 0.2.2 + '@stdlib/error-tools-fmtprodmsg': 0.2.2 + '@stdlib/string-format': 0.2.2 + + '@stdlib/boolean-ctor@0.2.2': {} + + '@stdlib/buffer-ctor@0.2.2': + dependencies: + '@stdlib/assert-has-node-buffer-support': 0.2.2 + + '@stdlib/buffer-from-buffer@0.2.2': + dependencies: + '@stdlib/assert-is-buffer': 0.2.2 + '@stdlib/assert-is-function': 0.2.2 + '@stdlib/buffer-ctor': 0.2.2 + '@stdlib/error-tools-fmtprodmsg': 0.2.2 + '@stdlib/string-format': 0.2.2 + + '@stdlib/complex-float32-ctor@0.0.2': + dependencies: + '@stdlib/assert-is-number': 0.2.2 + '@stdlib/error-tools-fmtprodmsg': 0.2.2 + '@stdlib/number-float64-base-to-float32': 0.2.2 + '@stdlib/string-format': 0.2.2 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 + '@stdlib/utils-define-property': 0.2.4 + + '@stdlib/complex-float32-reim@0.1.2': + dependencies: + '@stdlib/array-float32': 0.2.2 + '@stdlib/complex-float32-ctor': 0.0.2 + + '@stdlib/complex-float64-ctor@0.0.3': + dependencies: + '@stdlib/assert-is-number': 0.2.2 + '@stdlib/complex-float32-ctor': 0.0.2 + '@stdlib/error-tools-fmtprodmsg': 0.2.2 + '@stdlib/string-format': 0.2.2 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 + '@stdlib/utils-define-property': 0.2.4 + + '@stdlib/complex-float64-reim@0.1.2': + dependencies: + '@stdlib/array-float64': 0.2.2 + '@stdlib/complex-float64-ctor': 0.0.3 + + '@stdlib/constants-array-max-typed-array-length@0.2.2': {} + + '@stdlib/constants-float64-ninf@0.2.2': + dependencies: + '@stdlib/number-ctor': 0.2.2 + + '@stdlib/constants-float64-pinf@0.2.2': {} + + '@stdlib/constants-int16-max@0.2.2': {} + + '@stdlib/constants-int16-min@0.2.2': {} + + '@stdlib/constants-int32-max@0.3.0': {} + + '@stdlib/constants-int32-min@0.2.2': {} + + '@stdlib/constants-int8-max@0.2.2': {} + + '@stdlib/constants-int8-min@0.2.2': {} + + '@stdlib/constants-uint16-max@0.2.2': {} + + '@stdlib/constants-uint32-max@0.2.2': {} + + '@stdlib/constants-uint8-max@0.2.2': {} + + '@stdlib/error-tools-fmtprodmsg@0.2.2': {} + + '@stdlib/fs-exists@0.2.2': + dependencies: + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 + + '@stdlib/fs-resolve-parent-path@0.2.2': + dependencies: + '@stdlib/assert-has-own-property': 0.2.2 + '@stdlib/assert-is-function': 0.2.2 + '@stdlib/assert-is-plain-object': 0.2.2 + '@stdlib/assert-is-string': 0.2.2 + '@stdlib/error-tools-fmtprodmsg': 0.2.2 + '@stdlib/fs-exists': 0.2.2 + '@stdlib/process-cwd': 0.2.2 + '@stdlib/string-format': 0.2.2 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 + + '@stdlib/math-base-assert-is-integer@0.2.5': + dependencies: + '@stdlib/math-base-special-floor': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.2 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-assert-is-nan@0.2.2': + dependencies: + '@stdlib/utils-library-manifest': 0.2.2 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-napi-unary@0.2.3': + dependencies: + '@stdlib/complex-float32-ctor': 0.0.2 + '@stdlib/complex-float32-reim': 0.1.2 + '@stdlib/complex-float64-ctor': 0.0.3 + '@stdlib/complex-float64-reim': 0.1.2 + '@stdlib/utils-library-manifest': 0.2.2 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-floor@0.2.3': + dependencies: + '@stdlib/math-base-napi-unary': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.2 + transitivePeerDependencies: + - supports-color + + '@stdlib/number-ctor@0.2.2': {} + + '@stdlib/number-float64-base-to-float32@0.2.2': + dependencies: + '@stdlib/array-float32': 0.2.2 + + '@stdlib/object-ctor@0.2.1': {} + + '@stdlib/process-cwd@0.2.2': {} + + '@stdlib/regexp-extended-length-path@0.2.2': + dependencies: + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 + + '@stdlib/regexp-function-name@0.2.2': + dependencies: + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 + + '@stdlib/regexp-regexp@0.2.2': + dependencies: + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 + + '@stdlib/string-base-format-interpolate@0.2.2': {} + + '@stdlib/string-base-format-tokenize@0.2.2': {} + + '@stdlib/string-base-lowercase@0.4.0': {} + + '@stdlib/string-base-replace@0.2.2': {} + + '@stdlib/string-format@0.2.2': + dependencies: + '@stdlib/string-base-format-interpolate': 0.2.2 + '@stdlib/string-base-format-tokenize': 0.2.2 + + '@stdlib/string-replace@0.2.2': + dependencies: + '@stdlib/assert-is-function': 0.2.2 + '@stdlib/assert-is-regexp': 0.2.2 + '@stdlib/assert-is-string': 0.2.2 + '@stdlib/error-tools-fmtprodmsg': 0.2.2 + '@stdlib/string-base-replace': 0.2.2 + '@stdlib/string-format': 0.2.2 + '@stdlib/utils-escape-regexp-string': 0.2.2 + + '@stdlib/symbol-ctor@0.2.2': {} + + '@stdlib/utils-constructor-name@0.2.2': + dependencies: + '@stdlib/assert-is-buffer': 0.2.2 + '@stdlib/regexp-function-name': 0.2.2 + '@stdlib/utils-native-class': 0.2.2 + + '@stdlib/utils-convert-path@0.2.2': + dependencies: + '@stdlib/assert-is-string': 0.2.2 + '@stdlib/error-tools-fmtprodmsg': 0.2.2 + '@stdlib/regexp-extended-length-path': 0.2.2 + '@stdlib/string-base-lowercase': 0.4.0 + '@stdlib/string-format': 0.2.2 + '@stdlib/string-replace': 0.2.2 + + '@stdlib/utils-copy@0.2.2': + dependencies: + '@stdlib/array-float32': 0.2.2 + '@stdlib/array-float64': 0.2.2 + '@stdlib/array-int16': 0.2.2 + '@stdlib/array-int32': 0.2.2 + '@stdlib/array-int8': 0.2.2 + '@stdlib/array-uint16': 0.2.2 + '@stdlib/array-uint32': 0.2.2 + '@stdlib/array-uint8': 0.2.2 + '@stdlib/array-uint8c': 0.2.2 + '@stdlib/assert-has-own-property': 0.2.2 + '@stdlib/assert-is-array': 0.2.2 + '@stdlib/assert-is-buffer': 0.2.2 + '@stdlib/assert-is-error': 0.2.2 + '@stdlib/assert-is-nonnegative-integer': 0.2.2 + '@stdlib/buffer-from-buffer': 0.2.2 + '@stdlib/constants-float64-pinf': 0.2.2 + '@stdlib/error-tools-fmtprodmsg': 0.2.2 + '@stdlib/string-format': 0.2.2 + '@stdlib/utils-define-property': 0.2.4 + '@stdlib/utils-get-prototype-of': 0.2.2 + '@stdlib/utils-index-of': 0.2.2 + '@stdlib/utils-keys': 0.2.2 + '@stdlib/utils-property-descriptor': 0.2.2 + '@stdlib/utils-property-names': 0.2.2 + '@stdlib/utils-regexp-from-string': 0.2.2 + '@stdlib/utils-type-of': 0.2.2 + transitivePeerDependencies: + - supports-color + + '@stdlib/utils-define-nonenumerable-read-only-property@0.2.2': + dependencies: + '@stdlib/utils-define-property': 0.2.4 + + '@stdlib/utils-define-property@0.2.4': + dependencies: + '@stdlib/error-tools-fmtprodmsg': 0.2.2 + '@stdlib/string-format': 0.2.2 + + '@stdlib/utils-escape-regexp-string@0.2.2': + dependencies: + '@stdlib/assert-is-string': 0.2.2 + '@stdlib/error-tools-fmtprodmsg': 0.2.2 + '@stdlib/string-format': 0.2.2 + + '@stdlib/utils-get-prototype-of@0.2.2': + dependencies: + '@stdlib/assert-is-function': 0.2.2 + '@stdlib/object-ctor': 0.2.1 + '@stdlib/utils-native-class': 0.2.2 + + '@stdlib/utils-global@0.2.2': + dependencies: + '@stdlib/assert-is-boolean': 0.2.2 + '@stdlib/error-tools-fmtprodmsg': 0.2.2 + '@stdlib/string-format': 0.2.2 + + '@stdlib/utils-index-of@0.2.2': + dependencies: + '@stdlib/assert-is-collection': 0.2.2 + '@stdlib/assert-is-integer': 0.2.2 + '@stdlib/assert-is-nan': 0.2.2 + '@stdlib/assert-is-string': 0.2.2 + '@stdlib/error-tools-fmtprodmsg': 0.2.2 + '@stdlib/string-format': 0.2.2 + transitivePeerDependencies: + - supports-color + + '@stdlib/utils-keys@0.2.2': + dependencies: + '@stdlib/assert-has-own-property': 0.2.2 + '@stdlib/assert-is-arguments': 0.2.2 + '@stdlib/assert-is-enumerable-property': 0.2.2 + '@stdlib/assert-is-object-like': 0.2.2 + '@stdlib/utils-index-of': 0.2.2 + '@stdlib/utils-noop': 0.2.2 + '@stdlib/utils-type-of': 0.2.2 + transitivePeerDependencies: + - supports-color + + '@stdlib/utils-library-manifest@0.2.2': + dependencies: + '@stdlib/fs-resolve-parent-path': 0.2.2 + '@stdlib/utils-convert-path': 0.2.2 + debug: 2.6.9 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + '@stdlib/utils-native-class@0.2.2': + dependencies: + '@stdlib/assert-has-own-property': 0.2.2 + '@stdlib/assert-has-tostringtag-support': 0.2.2 + '@stdlib/symbol-ctor': 0.2.2 + + '@stdlib/utils-noop@0.2.2': {} + + '@stdlib/utils-property-descriptor@0.2.2': + dependencies: + '@stdlib/assert-has-own-property': 0.2.2 + + '@stdlib/utils-property-names@0.2.2': + dependencies: + '@stdlib/object-ctor': 0.2.1 + '@stdlib/utils-keys': 0.2.2 + transitivePeerDependencies: + - supports-color + + '@stdlib/utils-regexp-from-string@0.2.2': + dependencies: + '@stdlib/assert-is-string': 0.2.2 + '@stdlib/error-tools-fmtprodmsg': 0.2.2 + '@stdlib/regexp-regexp': 0.2.2 + '@stdlib/string-format': 0.2.2 + + '@stdlib/utils-type-of@0.2.2': + dependencies: + '@stdlib/utils-constructor-name': 0.2.2 + '@stdlib/utils-global': 0.2.2 + + '@tryghost/errors@1.3.6': + dependencies: + '@stdlib/utils-copy': 0.2.2 + uuid: 9.0.1 + transitivePeerDependencies: + - supports-color + + '@tryghost/tpl@0.1.33': + dependencies: + lodash.template: 4.5.0 + '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 @@ -1578,6 +2719,10 @@ snapshots: bowser@2.11.0: {} + debug@2.6.9: + dependencies: + ms: 2.0.0 + esbuild@0.20.2: optionalDependencies: '@esbuild/aix-ppc64': 0.20.2 @@ -1608,16 +2753,49 @@ snapshots: dependencies: strnum: 1.0.5 + function-bind@1.1.2: {} + ghost-storage-base@1.0.0: dependencies: moment: 2.27.0 + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + lodash._reinterpolate@3.0.0: {} + + lodash.template@4.5.0: + dependencies: + lodash._reinterpolate: 3.0.0 + lodash.templatesettings: 4.2.0 + + lodash.templatesettings@4.2.0: + dependencies: + lodash._reinterpolate: 3.0.0 + moment@2.27.0: {} + ms@2.0.0: {} + + path-parse@1.0.7: {} + prettier@3.4.2: {} + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + strnum@1.0.5: {} + supports-preserve-symlinks-flag@1.0.0: {} + tslib@2.8.1: {} typescript@5.7.2: {} diff --git a/src/index.ts b/src/index.ts index b4a0fae..85f88bd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,6 +5,8 @@ import { S3, } from '@aws-sdk/client-s3' import StorageBase, { type ReadOptions, type Image } from 'ghost-storage-base' +import errors from '@tryghost/errors' +import tpl from '@tryghost/tpl' import { join } from 'path' import { createReadStream } from 'fs' import type { Readable } from 'stream' @@ -197,16 +199,20 @@ class S3Storage extends StorageBase { stream.pipe(res) } catch (err) { if (err.name === 'NoSuchKey') { - res.status(404).send('Image not found'); + return next( + new errors.NotFoundError({ + message: tpl('File not found'), + code: 'STATIC_FILE_NOT_FOUND', + property: err.path, + }) + ) } else { - res.status(500); - next(err); + next(new errors.InternalServerError({ err: err })) } } } } - async read(options: ReadOptions = { path: '' }) { let path = (options.path || '').replace(/\/$|\\$/, '')