{"_id":"@dizzzmas/sst-url-shortener","_rev":"18-c7f235f7ae7d0636118d871b6e1a9847","name":"@dizzzmas/sst-url-shortener","dist-tags":{"snapshot":"0.0.0-1730149874874","latest":"1.0.1"},"versions":{"0.0.0-1729610585441":{"name":"@dizzzmas/sst-url-shortener","version":"0.0.0-1729610585441","_id":"@dizzzmas/sst-url-shortener@0.0.0-1729610585441","maintainers":[{"name":"dizzzmas","email":"dmytro@jetbridge.com"}],"dist":{"shasum":"650211e8af9b0085009942c6ff3fbbbab002665c","tarball":"https://registry.npmjs.org/@dizzzmas/sst-url-shortener/-/sst-url-shortener-0.0.0-1729610585441.tgz","fileCount":11,"integrity":"sha512-e1Iu7Jor9ZPjfNvF0cFYUtYKZjgsbZ16KYvz2fV7Revqnr/KjXrN79yp6g738fOSeJ7HtcjGMHqMT2MLIX8Byw==","signatures":[{"sig":"MEUCIQD5X/XT/taJqeFJ6s/90eBU8Zfj6U1HlwUDGu9XrUdi9QIgHt/Dbhvoxp1bQP3IjajLi42e0egwHYhzN10qrk59Mic=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24742},"type":"module","module":"index.ts","shasum":"650211e8af9b0085009942c6ff3fbbbab002665c","scripts":{"release":"./scripts/release.ts"},"_npmUser":{"name":"dizzzmas","email":"dmytro@jetbridge.com"},"_integrity":"sha512-e1Iu7Jor9ZPjfNvF0cFYUtYKZjgsbZ16KYvz2fV7Revqnr/KjXrN79yp6g738fOSeJ7HtcjGMHqMT2MLIX8Byw==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"22.6.0","dependencies":{"sst":"3.2.38","zod":"^3.23.8","hono":"^4.6.5","electrodb":"^2.15.0","@hono/swagger-ui":"^0.4.1","@hono/zod-openapi":"^0.16.4","@paralleldrive/cuid2":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@pulumi/aws":"^6.56.1","@pulumi/pulumi":"^3.137.0","@types/aws-lambda":"8.10.145"},"peerDependencies":{"typescript":"^5.0.0"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/sst-url-shortener_0.0.0-1729610585441_1729610628801_0.9189452000528928","host":"s3://npm-registry-packages"}},"0.0.0-1729612747697":{"name":"@dizzzmas/sst-url-shortener","version":"0.0.0-1729612747697","_id":"@dizzzmas/sst-url-shortener@0.0.0-1729612747697","maintainers":[{"name":"dizzzmas","email":"dmytro@jetbridge.com"}],"dist":{"shasum":"239ae2179a4ee738376a831af156ca627071637b","tarball":"https://registry.npmjs.org/@dizzzmas/sst-url-shortener/-/sst-url-shortener-0.0.0-1729612747697.tgz","fileCount":11,"integrity":"sha512-ObACsA0k6cuUVCQ+b30GZPzM1vpZ0Dhnm6+kNjmy/Ti+usEB4O/M2dQ+qs9glC4Gi+6RPU+Sr26aA96g5q0p9A==","signatures":[{"sig":"MEQCICoM9luLexYgNTRf0ySh2qk6W8jXeo+ERF5Ve0c+R3h6AiAGYgtUpy3eDy5REThPdqmi5BbA1ekv27jzIdmmzLOqTg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24749},"type":"module","module":"index.ts","shasum":"239ae2179a4ee738376a831af156ca627071637b","scripts":{"release":"./scripts/release.ts"},"_npmUser":{"name":"dizzzmas","email":"dmytro@jetbridge.com"},"_integrity":"sha512-ObACsA0k6cuUVCQ+b30GZPzM1vpZ0Dhnm6+kNjmy/Ti+usEB4O/M2dQ+qs9glC4Gi+6RPU+Sr26aA96g5q0p9A==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"22.6.0","dependencies":{"sst":"3.2.38","zod":"^3.23.8","hono":"^4.6.5","electrodb":"^2.15.0","@hono/swagger-ui":"^0.4.1","@hono/zod-openapi":"^0.16.4","@paralleldrive/cuid2":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@pulumi/aws":"^6.56.1","@pulumi/pulumi":"^3.137.0","@types/aws-lambda":"8.10.145"},"peerDependencies":{"typescript":"^5.0.0"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/sst-url-shortener_0.0.0-1729612747697_1729612781605_0.5015295070816508","host":"s3://npm-registry-packages"}},"0.0.0-1729614032465":{"name":"@dizzzmas/sst-url-shortener","version":"0.0.0-1729614032465","_id":"@dizzzmas/sst-url-shortener@0.0.0-1729614032465","maintainers":[{"name":"dizzzmas","email":"dmytro@jetbridge.com"}],"dist":{"shasum":"9e9229bf5e9d5adc3d2de10ed28f899ac93bc12f","tarball":"https://registry.npmjs.org/@dizzzmas/sst-url-shortener/-/sst-url-shortener-0.0.0-1729614032465.tgz","fileCount":11,"integrity":"sha512-QdMKT5HqTGNwZDX3DPPmBjoQYifJIrlnw/ukNpg/UZ00p4RNep2FqRnKQ1c7BDp8uStkR7y8IbwCsHBr9l/yyQ==","signatures":[{"sig":"MEUCIFvsIVhEMXPSppwO8LXF6qq7b1ETjKEW4Xnzspbu0F0nAiEA1EpjhBsTLNzhAi5JHUPO82xL6rHV6nJ9xefK1RPYwao=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24373},"type":"module","module":"index.ts","shasum":"9e9229bf5e9d5adc3d2de10ed28f899ac93bc12f","scripts":{"release":"./scripts/release.ts"},"_npmUser":{"name":"dizzzmas","email":"dmytro@jetbridge.com"},"_integrity":"sha512-QdMKT5HqTGNwZDX3DPPmBjoQYifJIrlnw/ukNpg/UZ00p4RNep2FqRnKQ1c7BDp8uStkR7y8IbwCsHBr9l/yyQ==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"22.6.0","dependencies":{"sst":"3.2.38","zod":"^3.23.8","hono":"^4.6.5","electrodb":"^2.15.0","@hono/swagger-ui":"^0.4.1","@hono/zod-openapi":"^0.16.4","@paralleldrive/cuid2":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@pulumi/aws":"^6.56.1","@pulumi/pulumi":"^3.137.0","@types/aws-lambda":"8.10.145"},"peerDependencies":{"typescript":"^5.0.0"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/sst-url-shortener_0.0.0-1729614032465_1729614056265_0.9773714893365075","host":"s3://npm-registry-packages"}},"0.0.0-1729615259745":{"name":"@dizzzmas/sst-url-shortener","version":"0.0.0-1729615259745","_id":"@dizzzmas/sst-url-shortener@0.0.0-1729615259745","maintainers":[{"name":"dizzzmas","email":"dmytro@jetbridge.com"}],"dist":{"shasum":"3a4312d7cac2d32420efd580e909b033347079a7","tarball":"https://registry.npmjs.org/@dizzzmas/sst-url-shortener/-/sst-url-shortener-0.0.0-1729615259745.tgz","fileCount":11,"integrity":"sha512-f6454kMsnsJiFNnxX8T1Byj9DHSexBFDQQHqYB5aNpaTM7Hi/p6awfZm03z4D0g7+xiEMUcZN/SmczyX0aKjXQ==","signatures":[{"sig":"MEYCIQDUwPr5dzcbzo4Lvolq6z76y8Ztaf10+gtjgDgyxxqhugIhAL+MHXFD4HMSXJtwLu0+jBfsDG6mh/v0B5VUVrIvpRvE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24401},"type":"module","module":"index.ts","shasum":"3a4312d7cac2d32420efd580e909b033347079a7","scripts":{"release":"./scripts/release.ts"},"_npmUser":{"name":"dizzzmas","email":"dmytro@jetbridge.com"},"_integrity":"sha512-f6454kMsnsJiFNnxX8T1Byj9DHSexBFDQQHqYB5aNpaTM7Hi/p6awfZm03z4D0g7+xiEMUcZN/SmczyX0aKjXQ==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"22.6.0","dependencies":{"sst":"3.2.38","zod":"^3.23.8","hono":"^4.6.5","electrodb":"^2.15.0","@hono/swagger-ui":"^0.4.1","@hono/zod-openapi":"^0.16.4","@paralleldrive/cuid2":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@pulumi/aws":"^6.56.1","@pulumi/pulumi":"^3.137.0","@types/aws-lambda":"8.10.145"},"peerDependencies":{"typescript":"^5.0.0"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/sst-url-shortener_0.0.0-1729615259745_1729615296369_0.021236017419334452","host":"s3://npm-registry-packages"}},"0.0.0-1729615708402":{"name":"@dizzzmas/sst-url-shortener","version":"0.0.0-1729615708402","_id":"@dizzzmas/sst-url-shortener@0.0.0-1729615708402","maintainers":[{"name":"dizzzmas","email":"dmytro@jetbridge.com"}],"dist":{"shasum":"50c053655b0aa9df0adc7b4a107f23e4ba9548a3","tarball":"https://registry.npmjs.org/@dizzzmas/sst-url-shortener/-/sst-url-shortener-0.0.0-1729615708402.tgz","fileCount":11,"integrity":"sha512-FTLOiYxzEp2nUojcAfjXeirh3/7djeKepA1qAU/j03jQp1mHIQzIIlgHjVUuntegpnhBjmWJ9R3HMR54jHEZFQ==","signatures":[{"sig":"MEUCIQClqAZ4QUMSJ6ATeCOy763W0kERNDx/1JJoeaGxCNjPJQIgU/0REkcRN9UM0BNqjA+QSrEdOJDY2tHzNThxJRC2gfo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24486},"type":"module","module":"index.ts","shasum":"50c053655b0aa9df0adc7b4a107f23e4ba9548a3","scripts":{"release":"./scripts/release.ts"},"_npmUser":{"name":"dizzzmas","email":"dmytro@jetbridge.com"},"_integrity":"sha512-FTLOiYxzEp2nUojcAfjXeirh3/7djeKepA1qAU/j03jQp1mHIQzIIlgHjVUuntegpnhBjmWJ9R3HMR54jHEZFQ==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"22.6.0","dependencies":{"sst":"3.2.38","zod":"^3.23.8","hono":"^4.6.5","electrodb":"^2.15.0","@hono/swagger-ui":"^0.4.1","@hono/zod-openapi":"^0.16.4","@paralleldrive/cuid2":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@pulumi/aws":"^6.56.1","@pulumi/pulumi":"^3.137.0","@types/aws-lambda":"8.10.145"},"peerDependencies":{"typescript":"^5.0.0"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/sst-url-shortener_0.0.0-1729615708402_1729615732045_0.9524714010043251","host":"s3://npm-registry-packages"}},"0.0.0-1729616085839":{"name":"@dizzzmas/sst-url-shortener","version":"0.0.0-1729616085839","_id":"@dizzzmas/sst-url-shortener@0.0.0-1729616085839","maintainers":[{"name":"dizzzmas","email":"dmytro@jetbridge.com"}],"dist":{"shasum":"8f0436cc321f64aa3bc6bfbd6c83e32e52b5d001","tarball":"https://registry.npmjs.org/@dizzzmas/sst-url-shortener/-/sst-url-shortener-0.0.0-1729616085839.tgz","fileCount":11,"integrity":"sha512-gAqIpTMDJr1bG9zRvTxiPIBFS3Nye9kJLfzHzO5NTbk2dVCuYb1ZxXXEgBMPuiqz1uq0GhkOKhhkA5Zg7+hPig==","signatures":[{"sig":"MEQCIBxwmAy73OQLBtKYAVHMa4mMM0fTAIWwUTHIvi74N/r6AiBISlTHNrUNGUc95qQ5DxipFWynw2kbZ+Bup9JTI8y+hA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24539},"type":"module","module":"index.ts","shasum":"8f0436cc321f64aa3bc6bfbd6c83e32e52b5d001","scripts":{"release":"./scripts/release.ts"},"_npmUser":{"name":"dizzzmas","email":"dmytro@jetbridge.com"},"_integrity":"sha512-gAqIpTMDJr1bG9zRvTxiPIBFS3Nye9kJLfzHzO5NTbk2dVCuYb1ZxXXEgBMPuiqz1uq0GhkOKhhkA5Zg7+hPig==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"22.6.0","dependencies":{"sst":"3.2.38","zod":"^3.23.8","hono":"^4.6.5","electrodb":"^2.15.0","@hono/swagger-ui":"^0.4.1","@hono/zod-openapi":"^0.16.4","@paralleldrive/cuid2":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@pulumi/aws":"^6.56.1","@pulumi/pulumi":"^3.137.0","@types/aws-lambda":"8.10.145"},"peerDependencies":{"typescript":"^5.0.0"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/sst-url-shortener_0.0.0-1729616085839_1729616106631_0.8078361764141015","host":"s3://npm-registry-packages"}},"0.0.0-1729616163313":{"name":"@dizzzmas/sst-url-shortener","version":"0.0.0-1729616163313","_id":"@dizzzmas/sst-url-shortener@0.0.0-1729616163313","maintainers":[{"name":"dizzzmas","email":"dmytro@jetbridge.com"}],"dist":{"shasum":"4a251c0d1f25b168cd774a06cef6c28b8ca2b3be","tarball":"https://registry.npmjs.org/@dizzzmas/sst-url-shortener/-/sst-url-shortener-0.0.0-1729616163313.tgz","fileCount":11,"integrity":"sha512-hD3pCO1u4SIVQRHcqMjnYbJNMt+m0eRRC8t5DqVCC/PrPxziVjdY0jtj/cpA54EgiaFLZkWkRO/t1liPYDUmJg==","signatures":[{"sig":"MEUCICRnMECKQk1qQa6t41uQWMfa96h7YdqDnM/D5DOV8tVMAiEA3H2VMgBaUKZCi1wKVrRbRSv6K7SbuL5BWinWvMmhENk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24539},"type":"module","module":"index.ts","shasum":"4a251c0d1f25b168cd774a06cef6c28b8ca2b3be","scripts":{"release":"./scripts/release.ts"},"_npmUser":{"name":"dizzzmas","email":"dmytro@jetbridge.com"},"_integrity":"sha512-hD3pCO1u4SIVQRHcqMjnYbJNMt+m0eRRC8t5DqVCC/PrPxziVjdY0jtj/cpA54EgiaFLZkWkRO/t1liPYDUmJg==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"22.6.0","dependencies":{"sst":"3.2.38","zod":"^3.23.8","hono":"^4.6.5","electrodb":"^2.15.0","@hono/swagger-ui":"^0.4.1","@hono/zod-openapi":"^0.16.4","@paralleldrive/cuid2":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@pulumi/aws":"^6.56.1","@pulumi/pulumi":"^3.137.0","@types/aws-lambda":"8.10.145"},"peerDependencies":{"typescript":"^5.0.0"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/sst-url-shortener_0.0.0-1729616163313_1729616193563_0.793965020599759","host":"s3://npm-registry-packages"}},"0.0.0-1729636284876":{"name":"@dizzzmas/sst-url-shortener","version":"0.0.0-1729636284876","_id":"@dizzzmas/sst-url-shortener@0.0.0-1729636284876","maintainers":[{"name":"dizzzmas","email":"dmytro@jetbridge.com"}],"dist":{"shasum":"e5ffd765c0e30f0f7dd20c2eb620e1dcb0bd3e4c","tarball":"https://registry.npmjs.org/@dizzzmas/sst-url-shortener/-/sst-url-shortener-0.0.0-1729636284876.tgz","fileCount":11,"integrity":"sha512-5oiYBdCjJCQQPxAKTQVjMb47FZYoTpcWzbK0g0FPoNQTv42T+dwOVeUsd3W4i0r0KxxEspRP5voatY/1SeHnTg==","signatures":[{"sig":"MEQCIC523uTcviMlAzYL7see8EDENaoAuN7UMUlylY1GJ0PeAiBJ3avuRrOpQelan2qqD5T+NouU29Vvd6FFI3DEvEjEmw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24604},"type":"module","module":"index.ts","shasum":"e5ffd765c0e30f0f7dd20c2eb620e1dcb0bd3e4c","scripts":{"release":"./scripts/release.ts"},"_npmUser":{"name":"dizzzmas","email":"dmytro@jetbridge.com"},"_integrity":"sha512-5oiYBdCjJCQQPxAKTQVjMb47FZYoTpcWzbK0g0FPoNQTv42T+dwOVeUsd3W4i0r0KxxEspRP5voatY/1SeHnTg==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"22.6.0","dependencies":{"sst":"^3","zod":"^3.23.8","hono":"^4.6.5","electrodb":"^2.15.0","@hono/swagger-ui":"^0.4.1","@hono/zod-openapi":"^0.16.4","@paralleldrive/cuid2":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@pulumi/aws":"^6.56.1","@pulumi/pulumi":"^3.137.0","@types/aws-lambda":"8.10.145"},"peerDependencies":{"typescript":"^5.0.0"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/sst-url-shortener_0.0.0-1729636284876_1729636337300_0.661289772552184","host":"s3://npm-registry-packages"}},"0.0.0-1729639394591":{"name":"@dizzzmas/sst-url-shortener","version":"0.0.0-1729639394591","_id":"@dizzzmas/sst-url-shortener@0.0.0-1729639394591","maintainers":[{"name":"dizzzmas","email":"dmytro@jetbridge.com"}],"dist":{"shasum":"1baaa4fb47678761deb6314b7612b387ab1aceb8","tarball":"https://registry.npmjs.org/@dizzzmas/sst-url-shortener/-/sst-url-shortener-0.0.0-1729639394591.tgz","fileCount":11,"integrity":"sha512-v5NFQMxQetptZai/oXkuzVrlfR8KLjUwLGctSk3bhb6+AuEABWOTxwtuQ29HeSRdG4vxmO4ptDQl33FFriEo4w==","signatures":[{"sig":"MEUCICbsXt0SDpMY865gbwe4oWEZ61bpGA5CpjCXBF3wnurTAiEApYMW42+EGytTlASk76slARm9hPhDu6L5oDs4x9ALvLI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24513},"type":"module","module":"index.ts","shasum":"1baaa4fb47678761deb6314b7612b387ab1aceb8","scripts":{"release":"./scripts/release.ts"},"_npmUser":{"name":"dizzzmas","email":"dmytro@jetbridge.com"},"_integrity":"sha512-v5NFQMxQetptZai/oXkuzVrlfR8KLjUwLGctSk3bhb6+AuEABWOTxwtuQ29HeSRdG4vxmO4ptDQl33FFriEo4w==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"22.6.0","dependencies":{"sst":"^3","zod":"^3.23.8","hono":"^4.6.5","electrodb":"^2.15.0","@hono/swagger-ui":"^0.4.1","@hono/zod-openapi":"^0.16.4","@paralleldrive/cuid2":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@pulumi/aws":"^6.56.1","@pulumi/pulumi":"^3.137.0","@types/aws-lambda":"8.10.145"},"peerDependencies":{"typescript":"^5.0.0"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/sst-url-shortener_0.0.0-1729639394591_1729639430887_0.20126247143404585","host":"s3://npm-registry-packages"}},"0.0.0-1729639718904":{"name":"@dizzzmas/sst-url-shortener","version":"0.0.0-1729639718904","_id":"@dizzzmas/sst-url-shortener@0.0.0-1729639718904","maintainers":[{"name":"dizzzmas","email":"dmytro@jetbridge.com"}],"dist":{"shasum":"3c477449ad93aff171da2062a01109470f6f2ef3","tarball":"https://registry.npmjs.org/@dizzzmas/sst-url-shortener/-/sst-url-shortener-0.0.0-1729639718904.tgz","fileCount":11,"integrity":"sha512-+siOcyjlqg62c7WbF3QeYkOUYwhdaGwKsVqHltI9/gUHPE1W+FWvPzzkt6nel2/8mZbPeJ95yECzc+vF5iO63g==","signatures":[{"sig":"MEYCIQC76RrIOJpnGgP7Jp/QNSC2vUZccaH1Slr6pOruuBBdggIhAIFd4bspsOhceYJ0RbgP8nPHPkrhx3HhDiwryBkpeXOe","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24559},"type":"module","module":"index.ts","shasum":"3c477449ad93aff171da2062a01109470f6f2ef3","scripts":{"release":"./scripts/release.ts"},"_npmUser":{"name":"dizzzmas","email":"dmytro@jetbridge.com"},"_integrity":"sha512-+siOcyjlqg62c7WbF3QeYkOUYwhdaGwKsVqHltI9/gUHPE1W+FWvPzzkt6nel2/8mZbPeJ95yECzc+vF5iO63g==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"22.6.0","dependencies":{"sst":"^3","zod":"^3.23.8","hono":"^4.6.5","electrodb":"^2.15.0","@hono/swagger-ui":"^0.4.1","@hono/zod-openapi":"^0.16.4","@paralleldrive/cuid2":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@pulumi/aws":"^6.56.1","@pulumi/pulumi":"^3.137.0","@types/aws-lambda":"8.10.145"},"peerDependencies":{"typescript":"^5.0.0"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/sst-url-shortener_0.0.0-1729639718904_1729639751921_0.6245834565226882","host":"s3://npm-registry-packages"}},"0.0.0-1729896505089":{"name":"@dizzzmas/sst-url-shortener","version":"0.0.0-1729896505089","_id":"@dizzzmas/sst-url-shortener@0.0.0-1729896505089","maintainers":[{"name":"dizzzmas","email":"dmytro@jetbridge.com"}],"dist":{"shasum":"976a67817d4afb444a5eba980cb969f87e045d0c","tarball":"https://registry.npmjs.org/@dizzzmas/sst-url-shortener/-/sst-url-shortener-0.0.0-1729896505089.tgz","fileCount":11,"integrity":"sha512-UpbI7jEIs1rygE4DFecroTgBdSZtwzzpm+3hzRCmS0UqSg7f9cir77R4tPiE5EqzXHCltJj7nwHclj8WmJiJkA==","signatures":[{"sig":"MEYCIQDQxW7xkbbypWbn5gnK7ZNTg9uOueGPyqRy1ieJqj9IzwIhAJx8/NwRNTVCvsJ4hWpLbXXzaZNBffgjY8h0bAb/HpWc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24879},"type":"module","module":"index.ts","shasum":"976a67817d4afb444a5eba980cb969f87e045d0c","scripts":{"release":"./scripts/release.ts"},"_npmUser":{"name":"dizzzmas","email":"dmytro@jetbridge.com"},"_integrity":"sha512-UpbI7jEIs1rygE4DFecroTgBdSZtwzzpm+3hzRCmS0UqSg7f9cir77R4tPiE5EqzXHCltJj7nwHclj8WmJiJkA==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"22.6.0","dependencies":{"sst":"^3","zod":"^3.23.8","hono":"^4.6.5","electrodb":"^2.15.0","@hono/swagger-ui":"^0.4.1","@hono/zod-openapi":"^0.16.4","@paralleldrive/cuid2":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@pulumi/aws":"^6.56.1","@pulumi/pulumi":"^3.137.0","@types/aws-lambda":"8.10.145"},"peerDependencies":{"typescript":"^5.0.0"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/sst-url-shortener_0.0.0-1729896505089_1729896541728_0.28968700204136977","host":"s3://npm-registry-packages"}},"0.0.0-1729943316987":{"name":"@dizzzmas/sst-url-shortener","version":"0.0.0-1729943316987","_id":"@dizzzmas/sst-url-shortener@0.0.0-1729943316987","maintainers":[{"name":"dizzzmas","email":"dmytro@jetbridge.com"}],"dist":{"shasum":"70d2374f10e924ef98f9d996d968b298b45cb038","tarball":"https://registry.npmjs.org/@dizzzmas/sst-url-shortener/-/sst-url-shortener-0.0.0-1729943316987.tgz","fileCount":11,"integrity":"sha512-731drJh9MNYSX0KLNcPnjKv9bppMLH30aDOqo4mQYtuWVU1HluYx3u/d7TaN0XV1KoNif54P/d828+k6hJkw4A==","signatures":[{"sig":"MEUCIQDpj1kHoPYG2Ulk6S7CMYERrvaNiTJj5qcohMESPJmF+gIgBYNp3xYTA4KfNO+e/kaL6+Fe/aorMEYE1p+k9oiuooo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25331},"type":"module","module":"index.ts","shasum":"70d2374f10e924ef98f9d996d968b298b45cb038","scripts":{"release":"./scripts/release.ts"},"_npmUser":{"name":"dizzzmas","email":"dmytro@jetbridge.com"},"_integrity":"sha512-731drJh9MNYSX0KLNcPnjKv9bppMLH30aDOqo4mQYtuWVU1HluYx3u/d7TaN0XV1KoNif54P/d828+k6hJkw4A==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"22.6.0","dependencies":{"sst":"^3","zod":"^3.23.8","hono":"^4.6.5","electrodb":"^2.15.0","@hono/swagger-ui":"^0.4.1","@hono/zod-openapi":"^0.16.4","@paralleldrive/cuid2":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@pulumi/aws":"^6.56.1","@pulumi/pulumi":"^3.137.0","@types/aws-lambda":"8.10.145"},"peerDependencies":{"typescript":"^5.0.0"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/sst-url-shortener_0.0.0-1729943316987_1729943366702_0.8951848719470614","host":"s3://npm-registry-packages"}},"0.0.0-1729955703504":{"name":"@dizzzmas/sst-url-shortener","version":"0.0.0-1729955703504","_id":"@dizzzmas/sst-url-shortener@0.0.0-1729955703504","maintainers":[{"name":"dizzzmas","email":"dmytro@jetbridge.com"}],"dist":{"shasum":"eafc3885422f108d3b6c9dcc59d169d649502851","tarball":"https://registry.npmjs.org/@dizzzmas/sst-url-shortener/-/sst-url-shortener-0.0.0-1729955703504.tgz","fileCount":11,"integrity":"sha512-fxtGiVOMH5upDJeacj+ZyNXMlYBXQRgxmmns1bSxOWP6hY/jmOId4TBw0Xii+MuqA9EyzfbwZJY0Lz75da6lTA==","signatures":[{"sig":"MEUCIB+UYOZ3Y7wAi9XoC8DOhissd6Zkyt5+jB5On2YoDEm4AiEAnpQZF4X2vsY9SpcPSYOVTgthrNrDC7HH2zD0IUMlaaY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25232},"type":"module","module":"index.ts","shasum":"eafc3885422f108d3b6c9dcc59d169d649502851","scripts":{"release":"./scripts/release.ts"},"_npmUser":{"name":"dizzzmas","email":"dmytro@jetbridge.com"},"_integrity":"sha512-fxtGiVOMH5upDJeacj+ZyNXMlYBXQRgxmmns1bSxOWP6hY/jmOId4TBw0Xii+MuqA9EyzfbwZJY0Lz75da6lTA==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"22.6.0","dependencies":{"sst":"^3","zod":"^3.23.8","hono":"^4.6.5","electrodb":"^2.15.0","@hono/swagger-ui":"^0.4.1","@hono/zod-openapi":"^0.16.4","@paralleldrive/cuid2":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@pulumi/aws":"^6.56.1","@pulumi/pulumi":"^3.137.0","@types/aws-lambda":"8.10.145"},"peerDependencies":{"typescript":"^5.0.0"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/sst-url-shortener_0.0.0-1729955703504_1729955730839_0.023952931339317862","host":"s3://npm-registry-packages"}},"0.0.0-1729955753309":{"name":"@dizzzmas/sst-url-shortener","version":"0.0.0-1729955753309","_id":"@dizzzmas/sst-url-shortener@0.0.0-1729955753309","maintainers":[{"name":"dizzzmas","email":"dmytro@jetbridge.com"}],"dist":{"shasum":"e8ab6b686c10afd9c9232022c919b8424ce6b313","tarball":"https://registry.npmjs.org/@dizzzmas/sst-url-shortener/-/sst-url-shortener-0.0.0-1729955753309.tgz","fileCount":11,"integrity":"sha512-YAVELnUti5wKQoNH6/gova/86qS3CJF5YpKomTyF4xjBLQA946jEnPxZj4i46hPhuvGTTFBCgl5p+KjxHV4uVA==","signatures":[{"sig":"MEUCIFFwFMXrkJxCOj4RbbTwOT2QOAmCC20zHtum0ClxopYzAiEA0sr1XcsOSDTzePTX6hlM772jE7T8lyLXgUxt8cH9tKI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25232},"type":"module","module":"index.ts","shasum":"e8ab6b686c10afd9c9232022c919b8424ce6b313","scripts":{"release":"./scripts/release.ts"},"_npmUser":{"name":"dizzzmas","email":"dmytro@jetbridge.com"},"_integrity":"sha512-YAVELnUti5wKQoNH6/gova/86qS3CJF5YpKomTyF4xjBLQA946jEnPxZj4i46hPhuvGTTFBCgl5p+KjxHV4uVA==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"22.6.0","dependencies":{"sst":"^3","zod":"^3.23.8","hono":"^4.6.5","electrodb":"^2.15.0","@hono/swagger-ui":"^0.4.1","@hono/zod-openapi":"^0.16.4","@paralleldrive/cuid2":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@pulumi/aws":"^6.56.1","@pulumi/pulumi":"^3.137.0","@types/aws-lambda":"8.10.145"},"peerDependencies":{"typescript":"^5.0.0"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/sst-url-shortener_0.0.0-1729955753309_1729955783691_0.1014767992223029","host":"s3://npm-registry-packages"}},"0.0.1":{"name":"@dizzzmas/sst-url-shortener","version":"0.0.1","_id":"@dizzzmas/sst-url-shortener@0.0.1","maintainers":[{"name":"dizzzmas","email":"dmytro@jetbridge.com"}],"dist":{"shasum":"e60815ca4293fa2021bea359e3dd4eecfa258eb7","tarball":"https://registry.npmjs.org/@dizzzmas/sst-url-shortener/-/sst-url-shortener-0.0.1.tgz","fileCount":11,"integrity":"sha512-dpYBgSkJ91NnEUF/p0y+Azsw2yN272eCE7G+uY6XfYhK6Zcy/CkwnhHbt/oaO7OsrIrz1mtnrakxIRqyN9+9SA==","signatures":[{"sig":"MEUCIQCIiLyCCGacFfyssBTeXUYnCtBJRyqhZH5OG/14jHMHlQIgcfqfXdRlToVcBjNjm32vA1C9JABZR3bohvuVtfoO1zM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25328},"type":"module","module":"index.ts","gitHead":"437514c098caf438b0d2b719071fa4ade9ab71b6","scripts":{"release":"./scripts/release.ts"},"_npmUser":{"name":"dizzzmas","email":"dmytro@jetbridge.com"},"_npmVersion":"10.7.0","description":"Host your own URL shortener on AWS with SST and chop up those beefy URLs in a breeze.","directories":{},"_nodeVersion":"18.20.4","dependencies":{"sst":"^3","zod":"^3.23.8","hono":"^4.6.5","electrodb":"^2.15.0","@hono/swagger-ui":"^0.4.1","@hono/zod-openapi":"^0.16.4","@paralleldrive/cuid2":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@pulumi/aws":"^6.56.1","@pulumi/pulumi":"^3.137.0","@changesets/cli":"^2.27.9","@types/aws-lambda":"8.10.145"},"peerDependencies":{"typescript":"^5.0.0"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/sst-url-shortener_0.0.1_1729987481493_0.017163584288444333","host":"s3://npm-registry-packages"}},"0.0.0-1730077680418":{"name":"@dizzzmas/sst-url-shortener","version":"0.0.0-1730077680418","_id":"@dizzzmas/sst-url-shortener@0.0.0-1730077680418","maintainers":[{"name":"dizzzmas","email":"dmytro@jetbridge.com"}],"dist":{"shasum":"67657e9ed82676f5336dfb084ef0f4c8f36b1bce","tarball":"https://registry.npmjs.org/@dizzzmas/sst-url-shortener/-/sst-url-shortener-0.0.0-1730077680418.tgz","fileCount":11,"integrity":"sha512-zgxUtZEMHBjNBTc//tILPMkiXiDWtsLVDlPdEzdEiCvqKtmGbepXN71q/E1zR/FtyzO1hJFXCoIJTG8b415Z8g==","signatures":[{"sig":"MEQCIG5+Glz8rINfSknUV8Isry1dksfrNCd/SBUlCQfokM63AiAvlRFc8sAShw0GIraCfcnQfv6tGCsvJ1+8oRHpzv7VUA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31197},"type":"module","module":"index.ts","shasum":"67657e9ed82676f5336dfb084ef0f4c8f36b1bce","scripts":{"release":"./scripts/release.ts"},"_npmUser":{"name":"dizzzmas","email":"dmytro@jetbridge.com"},"_integrity":"sha512-zgxUtZEMHBjNBTc//tILPMkiXiDWtsLVDlPdEzdEiCvqKtmGbepXN71q/E1zR/FtyzO1hJFXCoIJTG8b415Z8g==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"22.6.0","dependencies":{"sst":"^3","zod":"^3.23.8","hono":"^4.6.5","electrodb":"^2.15.0","@hono/swagger-ui":"^0.4.1","@hono/zod-openapi":"^0.16.4","@paralleldrive/cuid2":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@pulumi/aws":"^6.56.1","@pulumi/pulumi":"^3.137.0","@changesets/cli":"^2.27.9","@types/aws-lambda":"8.10.145"},"peerDependencies":{"typescript":"^5.0.0"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/sst-url-shortener_0.0.0-1730077680418_1730077726611_0.8858729013721054","host":"s3://npm-registry-packages"}},"0.0.0-1730149874874":{"name":"@dizzzmas/sst-url-shortener","version":"0.0.0-1730149874874","_id":"@dizzzmas/sst-url-shortener@0.0.0-1730149874874","maintainers":[{"name":"dizzzmas","email":"dmytro@jetbridge.com"}],"dist":{"shasum":"15e8a5da5c3dd4eae8a01876358a7a01359b5211","tarball":"https://registry.npmjs.org/@dizzzmas/sst-url-shortener/-/sst-url-shortener-0.0.0-1730149874874.tgz","fileCount":11,"integrity":"sha512-Am9J/MF046y1S4xnGaG/1cI7us0HM/OD4RO4Mu8n4Sgca5uv4UsK1Zzez9WUxCdIbvUBZiNJTdJMdJ0osSKdOQ==","signatures":[{"sig":"MEUCIGWLer3NqvtpyLRKDk7X1rBu/IzlxejfJCfl0eCorxb0AiEA29DELOQwA1YG+Vu40cwDBJDnJ5FQtNuLQT69vMgNy9Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31613},"type":"module","module":"index.ts","shasum":"15e8a5da5c3dd4eae8a01876358a7a01359b5211","scripts":{"release":"./scripts/release.ts"},"_npmUser":{"name":"dizzzmas","email":"dmytro@jetbridge.com"},"_integrity":"sha512-Am9J/MF046y1S4xnGaG/1cI7us0HM/OD4RO4Mu8n4Sgca5uv4UsK1Zzez9WUxCdIbvUBZiNJTdJMdJ0osSKdOQ==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"22.6.0","dependencies":{"sst":"^3","zod":"^3.23.8","hono":"^4.6.5","electrodb":"^2.15.0","@hono/swagger-ui":"^0.4.1","@hono/zod-openapi":"^0.16.4","@paralleldrive/cuid2":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@pulumi/aws":"^6.56.1","@pulumi/pulumi":"^3.137.0","@changesets/cli":"^2.27.9","@types/aws-lambda":"8.10.145"},"peerDependencies":{"typescript":"^5.0.0"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/sst-url-shortener_0.0.0-1730149874874_1730150100270_0.9013300743502659","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@dizzzmas/sst-url-shortener","version":"1.0.0","_id":"@dizzzmas/sst-url-shortener@1.0.0","maintainers":[{"name":"dizzzmas","email":"dmytro@jetbridge.com"}],"dist":{"shasum":"d17bff4b98c6bf59412d744adeeb061bdecdbafe","tarball":"https://registry.npmjs.org/@dizzzmas/sst-url-shortener/-/sst-url-shortener-1.0.0.tgz","fileCount":11,"integrity":"sha512-D65rDJ2pzczQwxPEhu8jhJ+zN55LHGf0CIqS8S0Bj4Fteeu65E9GCgB4wXJVOKNcTFRkhytKwH5qCUTkwJfrMg==","signatures":[{"sig":"MEQCIDfmSVcMfijEJN5m+R5YutAacxCU3MZgpU7Kf26OKLHQAiA8F2CoargBrDUuOy1/8Er0VtUy9st8oJuHbfAwBr7Rqg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31826},"type":"module","module":"index.ts","gitHead":"5c83d63b626a15da1248f7810f94afa0398f2dd7","scripts":{"release":"./scripts/release.ts"},"_npmUser":{"name":"dizzzmas","email":"dmytro@jetbridge.com"},"_npmVersion":"10.7.0","description":"[![NPM version](https://img.shields.io/npm/v/@dizzzmas/sst-url-shortener.svg)](https://npmjs.org/package/@dizzzmas/sst-url-shortener) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@dizzzmas/sst-url-shortener)","directories":{},"_nodeVersion":"18.20.4","dependencies":{"sst":"^3","zod":"^3.23.8","hono":"^4.6.5","electrodb":"^2.15.0","@hono/swagger-ui":"^0.4.1","@hono/zod-openapi":"^0.16.4","@paralleldrive/cuid2":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@pulumi/aws":"^6.56.1","@pulumi/pulumi":"^3.137.0","@changesets/cli":"^2.27.9","@types/aws-lambda":"8.10.145"},"peerDependencies":{"typescript":"^5.0.0"},"optionalDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/sst-url-shortener_1.0.0_1730157029865_0.07147944712509302","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@dizzzmas/sst-url-shortener","module":"index.ts","version":"1.0.1","type":"module","scripts":{"release":"./scripts/release.ts"},"devDependencies":{"@changesets/cli":"^2.27.9","@pulumi/aws":"^6.56.1","@pulumi/pulumi":"^3.137.0","@types/aws-lambda":"8.10.145","@types/bun":"latest"},"peerDependencies":{"typescript":"^5.0.0"},"dependencies":{"@hono/swagger-ui":"^0.4.1","@hono/zod-openapi":"^0.16.4","@paralleldrive/cuid2":"^2.2.2","electrodb":"^2.15.0","hono":"^4.6.5","sst":"^3","zod":"^3.23.8"},"optionalDependencies":{},"_id":"@dizzzmas/sst-url-shortener@1.0.1","gitHead":"18d29769d18b9a1aa47b755b9db679f036d380ac","description":"[![NPM version](https://img.shields.io/npm/v/@dizzzmas/sst-url-shortener.svg)](https://npmjs.org/package/@dizzzmas/sst-url-shortener) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@dizzzmas/sst-url-shortener)","_nodeVersion":"18.20.4","_npmVersion":"10.7.0","dist":{"integrity":"sha512-OUuCbPCQ26alvS+JJeCEOh0rqeHWyVgwOIPKEWbVC2U+CWUM05K93QmXvaj8UmBNdMm0SLYjviuOcyaBKn/pWw==","shasum":"8da8795ad355eb7f98153a948730f1631f969bc9","tarball":"https://registry.npmjs.org/@dizzzmas/sst-url-shortener/-/sst-url-shortener-1.0.1.tgz","fileCount":11,"unpackedSize":32182,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFD6L24p6P7g+0/jj5XB4K9wFdGDA3aMIO052IhbRCr0AiA/wvR2SES1yTy74Tsjxyz5p1PyyPp8NxA+AkvzlsDxLA=="}]},"_npmUser":{"name":"dizzzmas","email":"dmytro@jetbridge.com"},"directories":{},"maintainers":[{"name":"dizzzmas","email":"dmytro@jetbridge.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/sst-url-shortener_1.0.1_1730159560249_0.22927330243920196"},"_hasShrinkwrap":false}},"time":{"created":"2024-10-22T15:23:48.685Z","modified":"2024-10-28T23:52:40.625Z","0.0.0-1729610585441":"2024-10-22T15:23:49.068Z","0.0.0-1729612747697":"2024-10-22T15:59:41.851Z","0.0.0-1729614032465":"2024-10-22T16:20:56.445Z","0.0.0-1729615259745":"2024-10-22T16:41:36.577Z","0.0.0-1729615708402":"2024-10-22T16:48:52.236Z","0.0.0-1729616085839":"2024-10-22T16:55:06.827Z","0.0.0-1729616163313":"2024-10-22T16:56:33.744Z","0.0.0-1729636284876":"2024-10-22T22:32:17.492Z","0.0.0-1729639394591":"2024-10-22T23:23:51.244Z","0.0.0-1729639718904":"2024-10-22T23:29:12.142Z","0.0.0-1729896505089":"2024-10-25T22:49:01.971Z","0.0.0-1729943316987":"2024-10-26T11:49:26.912Z","0.0.0-1729955703504":"2024-10-26T15:15:31.081Z","0.0.0-1729955753309":"2024-10-26T15:16:23.897Z","0.0.1":"2024-10-27T00:04:41.670Z","0.0.0-1730077680418":"2024-10-28T01:08:46.821Z","0.0.0-1730149874874":"2024-10-28T21:15:00.466Z","1.0.0":"2024-10-28T23:10:30.084Z","1.0.1":"2024-10-28T23:52:40.427Z"},"description":"[![NPM version](https://img.shields.io/npm/v/@dizzzmas/sst-url-shortener.svg)](https://npmjs.org/package/@dizzzmas/sst-url-shortener) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@dizzzmas/sst-url-shortener)","maintainers":[{"name":"dizzzmas","email":"dmytro@jetbridge.com"}],"readme":"# :hocho: sst-url-shortener\n\n[![NPM version](https://img.shields.io/npm/v/@dizzzmas/sst-url-shortener.svg)](https://npmjs.org/package/@dizzzmas/sst-url-shortener) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@dizzzmas/sst-url-shortener)\n\nHost your own URL shortener on AWS with [SST](https://github.com/sst/sst) and chop up those beefy links in a breeze!\n\n- :twisted_rightwards_arrows: Add as a component to your existing SST app or deploy standalone and integrate with your [JS](https://github.com/Dizzzmas/sst-url-shortener-js-sdk)/[Python](https://github.com/Dizzzmas/sst-url-shortener-python-sdk)/[Go](https://github.com/Dizzzmas/sst-url-shortener-go-sdk) backend via the OpenAPI sdk\n- :lock: Opt-in API bearer auth and Swagger docs UI\n- :sparkles: URL search and expiration support\n- :house: Bring your custom domain\n- :moneybag: Serverless and fully within AWS Free Tier, 0 upfront cost\n\n![diagram](./docs/diagram.png)\n\n# Pre-requisites\n\nIf this is your first time using SST or deploying to AWS, make sure you have the [AWS credentials](https://sst.dev/docs/iam-credentials/) properly setup\n\n# Quickstart\n\n## Standalone SST app\nThis is for cases when you can't or don't want to integrate the `URLShortener` component into your existing SST app.\nHere we will create a new SST app and use an OpenAPI SDK to integrate with our backend deployed elsewhere.\n\n- Create a new project:\n```bash\nmkdir my-shortener-app && cd my-shortener-app\nnpm init -y\n```\n\n- Init SST and install the `URLShortener` component:\n```bash\nnpx sst@latest init\nnpm install @dizzzmas/sst-url-shortener\n```\n\n- Declare the URL shortener component in `sst.config.ts`:\n```typescript\n/// <reference path=\"./.sst/platform/config.d.ts\" />\nimport { UrlShortener } from \"@dizzzmas/sst-url-shortener\";\n\nexport default $config({\n  app(input) {\n    return {\n      name: \"url-shortener\",\n      removal: input?.stage === \"production\" ? \"retain\" : \"remove\",\n      home: \"aws\",\n    };\n  },\n  async run() {\n    const urlShortener = new UrlShortener({})\n\n    return {\n      api: urlShortener.api.url,\n    }\n  },\n});\n```\n\n- Deploy the app to your personal stage via SST dev mode:\n```bash\nnpx sst dev\n```\n\nNotice that our app once deployed returns a URL of an API endpoint.\nBy default the API doesn't require authentication and has Swagger UI enabled.\nWe can visit `{api}/ui` to access the swagger UI and test our API.\n\n### Backend integration via OpenAPI SDK\nSDKs are available for:\n\n- [JS](https://github.com/Dizzzmas/sst-url-shortener-js-sdk)\n- [Python](https://github.com/Dizzzmas/sst-url-shortener-python-sdk)\n- [Go](https://github.com/Dizzzmas/sst-url-shortener-go-sdk)\n\nBelow is an example of using the JS SDK to shorten a URL:\n\nInstall the SDK in your backend project\n```bash\nnpm install @dizzzmas/sst-url-shortener-sdk\n```\n\nUse it:\n```typescript\nimport SstURLShortener from '@dizzzmas/sst-url-shortener-sdk';\n\nconst client = new SstURLShortener({\n  baseURL: \"YOUR_API_URL\",\n  bearerToken: undefined // auth disabled in this example\n});\n\nasync function main() {\n  const newUrl = await client.urls.create({\n    originalUrl: \"https://sst.dev/docs\"\n  });\n  const shortUrl = newUrl.result.shortUrl;\n  console.log(shortUrl);  // the shortened URL\n\n  const urls = await client.urls.search({});\n  console.log(urls.result);\n}\n\nmain();\n```\n\n## Add as a component to an existing SST app\n\nInstall the component:\n```bash\nnpm install @dizzzmas/sst-url-shortener\n```\n\nModify `sst.config.ts` to include the component:\n```typescript\nimport { UrlShortener } from \"@dizzzmas/sst-url-shortener\";\n\nasync run() {\n  // ...your existing components\n  const urlShortener = new UrlShortener({});\n\n  // link URL shortener to another component e.g. a lambda function\n  const example = new sst.aws.Function(\"Example\", {\n    link: [...urlShortener.link],\n    handler: \"example.handler\",\n    url: true,\n  })\n}\n```\n\nInside the `example.ts` Lambda handler:\n```typescript\nimport { ShortUrl } from \"@dizzzmas/sst-url-shortener\"\n\nexport const handler = async () => {\n  const { shortUrl } = await ShortUrl.create({\n    originalUrl: \"https://sst.dev/docs\"\n  })\n  console.log(\"new short url\", shortUrl)\n\n  const searchResult = await ShortUrl.search({})\n  console.log(\"search results\", searchResult)\n\n  return shortUrl\n}\n```\n## Component configuration\n\n### Authentication\n\nAPI bearer authentication is disabled by default and can be enabled via setting `enableApiAuth` to `true` on the component.\n```typescript\nconst shortener = new UrlShortener({\n  enableApiAuth: true,\n})\n```\nMake sure you specify the Bearer token expected by the API for authentication.\n\nThe Bearer token can be set via `UrlShortenerApiAuthKey` SST [Secret](https://sst.dev/docs/component/secret/) and defaults to `your_secret`\n```bash\n# set the secret\nnpx sst secret set UrlShortenerApiAuthKey \"YOUR_TOKEN\"\n```\n\n### Swagger UI\n\nSwagger UI is enabled by default and can be disabled via settings `enableOpenApiDocs` to `false` on the component.\n\n```typescript\nconst shortener = new UrlShortener({\n  enableOpenApiDocs: false,\n})\n```\n\n### Custom domain\n\nYou can specify a custom domain for the URL shortener and its API.\n```typescript\nconst shortener = new UrlShortener({\n  domain: {\n    name: \"share.acme.com\",\n    dns: sst.aws.dns()\n  }\n})\n```\nThe above example will results in short URLs looking like `https://share.acme.com/etogiyeu`, and the API looking like `https://api.share.acme.com/ui`\n\nCustom domains work out of the box if you use AWS Route53, Cloudflare or Vercel as your DNS provider, but will require [manual setup](https://sst.dev/docs/custom-domains#manual-setup) for other providers.\nPlease check out SST [Custom Domains](https://sst.dev/docs/custom-domains) docs for more info.\n\n### Short id length\n\nShort id is the alphanumeric identifier for your URLs generated using [cuid2](https://github.com/paralleldrive/cuid2)\ne.g. in `https://share.acme.com/etogiyeu` the short id is `etogiyeu`\n\nIts length can be anywhere from 4 to 24 characters and defaults to 8.\n```typescript\nconst shortener = new UrlShortener({\n  shortIdLength: 12\n})\n```\n\n### Transform underlying resources\n\nYou can fully customize the underlying resources thanks to the SST [Transform](https://sst.dev/docs/components/#transform) feature.\n\n```typescript\nconst shortener = new UrlShortener({\n  transform: {\n    redirectHandler: {\n      function: {\n        timeout: 30\n      }\n    }\n  }\n})\n```\n\n","readmeFilename":"README.md"}