{"_id":"@coast/qrcode-svg","_rev":"4-f6c88b937191fa4e3bee237203385093","name":"@coast/qrcode-svg","dist-tags":{"latest":"1.0.9"},"versions":{"1.0.7":{"name":"@coast/qrcode-svg","version":"1.0.7","keywords":[],"author":"","license":"ISC","_id":"@coast/qrcode-svg@1.0.7","maintainers":[{"name":"russelltaga","email":"russell@coastapp.com"},{"name":"zakcoast","email":"zak@coastapp.com"},{"name":"coast-bot","email":"eng@coastapp.com"},{"name":"reid-coast","email":"reid@coastapp.com"}],"dist":{"shasum":"1248ee099aea9370b5ac310b772e2fb01db1d1a6","tarball":"https://registry.npmjs.org/@coast/qrcode-svg/-/qrcode-svg-1.0.7.tgz","fileCount":101,"integrity":"sha512-r8+lkrAbMsfTNCzymHBoeOlMo9DeW6Wr4fCXHdxbS0BySjZi1ssm2dpvLBJY3x3SmNLqzLSA9dOLmmfF1F7+Rg==","signatures":[{"sig":"MEUCIGuExv3L2EFx1PU8dBD6V9x9hK3ZHmuabmZFkzbFt6UCAiEA1vHJ83XwEk2Ff68sG9DjE9mMY12D1Zmoetvr75do6qw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1958032},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"cf87ca4fae4c3aa8bb56adc204fcf4e0223f18b2","scripts":{"dev":"cd dev && yarn && yarn dev","lint":"eslint","test":"vitest","build":"yarn clean && tsc -p tsconfig.json && yarn format:dist","clean":"rimraf dist","start":"cd dev && yarn start","format:src":"prettier --write \"src/**/*.{ts,js}\"","format:dist":"prettier --write \"dist/**/*.{ts,js}\"","generate:pdfs":"rimraf pdfs/output*.{pdf,svg} && ts-node scripts/generate-pdfs.ts","heroku-postbuild":"cd dev && yarn heroku-postbuild"},"_npmUser":{"name":"zakcoast","email":"zak@coastapp.com"},"prettier":"@coast/project-config/prettier.json","_npmVersion":"10.5.0","description":"Generates a QRCode in SVG with an integrated Coast logo at the bottom.","directories":{},"_nodeVersion":"20.12.2","dependencies":{"lodash":"^4.17.21","pretty":"^2.0.0","qrcode-svg":"^1.1.0","combine-pdfs":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"^17.7.2","eslint":"^9.4.0","rimraf":"^3.0.2","vitest":"^1.6.0","ts-node":"^10.9.2","prettier":"^3.3.1","csvtojson":"^2.0.10","puppeteer":"^22.11.0","typescript":"^5.4.5","@types/node":"^20.14.2","@types/eslint":"^8.42.3","@types/lodash":"^4.17.5","@types/pretty":"^2.0.3","@types/qrcode-svg":"^1.1.4","typescript-eslint":"^7.12.0","@coast/project-config":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/qrcode-svg_1.0.7_1734036345819_0.6599695556176843","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@coast/qrcode-svg","version":"1.0.8","keywords":[],"author":{},"license":"ISC","_id":"@coast/qrcode-svg@1.0.8","maintainers":[{"name":"russelltaga","email":"russell@coastapp.com"},{"name":"zakcoast","email":"zak@coastapp.com"},{"name":"coast-bot","email":"eng@coastapp.com"},{"name":"reid-coast","email":"reid@coastapp.com"}],"dist":{"shasum":"d152fa588dd534b9e1eb8f6af05229f71b4e6e8b","tarball":"https://registry.npmjs.org/@coast/qrcode-svg/-/qrcode-svg-1.0.8.tgz","fileCount":137,"integrity":"sha512-rrh5ia5m6zHQXBi2zxbjCKTN53clsN2yMkSP+SDCRkbOJ76pTVfOlG5d5TqUVjuLB8ZCsPB+3DX/Pi55hEBK/Q==","signatures":[{"sig":"MEUCIQD7Kg3bDPU3DrTx56xTmJssPgiWxjLYLpAw0jAIiwmeBAIgY4QishtRw0SIezalap/dVtr/BIydZaxZtZ9VPPUrGhE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3113536},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"dev":"cd dev && yarn && yarn dev","lint":"eslint","test":"vitest","build":"yarn clean && tsc -p tsconfig.json && yarn format:dist","clean":"rimraf dist","start":"cd dev && yarn start","prepack":"yarn build","format:src":"prettier --write \"src/**/*.{ts,js}\"","format:dist":"prettier --write \"dist/**/*.{ts,js}\"","generate:pdfs":"rimraf pdfs/output*.{pdf,svg} && ts-node scripts/generate-pdfs.ts","heroku-postbuild":"cd dev && yarn heroku-postbuild"},"_npmUser":{"name":"reid-coast","email":"reid@coastapp.com"},"prettier":"@coast/project-config/prettier.json","description":"Generates a QRCode in SVG with an integrated Coast logo at the bottom.","directories":{},"dependencies":{"lodash":"^4.17.21","qrcode-svg":"^1.1.0","js-beautify":"^2.0.3","combine-pdfs":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"^17.7.2","eslint":"^9.4.0","rimraf":"^3.0.2","vitest":"^1.6.0","ts-node":"^10.9.2","prettier":"^3.3.1","csvtojson":"^2.0.10","puppeteer":"^22.11.0","typescript":"^5.4.5","@types/node":"^20.14.2","@types/eslint":"^8.42.3","@types/lodash":"^4.17.5","@types/qrcode-svg":"^1.1.4","typescript-eslint":"^7.12.0","@types/js-beautify":"^1.14.3","@coast/project-config":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/qrcode-svg_1.0.8_1785339500752_0.8977903120148802","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Broken publish — dist is incomplete; use 1.0.9 or later"},"1.0.9":{"name":"@coast/qrcode-svg","version":"1.0.9","keywords":[],"author":{},"license":"ISC","_id":"@coast/qrcode-svg@1.0.9","maintainers":[{"name":"russelltaga","email":"russell@coastapp.com"},{"name":"zakcoast","email":"zak@coastapp.com"},{"name":"coast-bot","email":"eng@coastapp.com"},{"name":"reid-coast","email":"reid@coastapp.com"}],"dist":{"shasum":"b9aa9f32bca0dccdcacb8c2e7fe3bc4faf2ed12d","tarball":"https://registry.npmjs.org/@coast/qrcode-svg/-/qrcode-svg-1.0.9.tgz","fileCount":37,"integrity":"sha512-mXLCoVBb9svi0YTznnMeKDKKOx9OENphqmtldMnR5IhOtc4D8ugLJcYkuLw1qAEGjlEjFfxRPvwi+H8uzGZanQ==","signatures":[{"sig":"MEUCIQDvUDIopt9kp8FoW9vl+C85Qb1uM0lfcuWeZEsuJ/LhSQIgSQGTnR6meMWgCozZydEJAQrBW2W7A/unvFuDlp05o9w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122189},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"dev":"cd dev && yarn && yarn dev","lint":"eslint","test":"vitest","build":"yarn clean && tsc -p tsconfig.json && yarn format:dist","clean":"rimraf dist","start":"cd dev && yarn start","prepack":"yarn build","format:src":"prettier --write \"src/**/*.{ts,js}\"","format:dist":"prettier --write \"dist/**/*.{ts,js}\"","generate:pdfs":"rimraf pdfs/output*.{pdf,svg} && ts-node scripts/generate-pdfs.ts","heroku-postbuild":"cd dev && yarn heroku-postbuild"},"_npmUser":{"name":"reid-coast","email":"reid@coastapp.com"},"prettier":"@coast/project-config/prettier.json","description":"Generates a QRCode in SVG with an integrated Coast logo at the bottom.","directories":{},"dependencies":{"lodash":"^4.17.21","qrcode-svg":"^1.1.0","js-beautify":"^2.0.3","combine-pdfs":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"^17.7.2","eslint":"^9.4.0","rimraf":"^3.0.2","vitest":"^1.6.0","ts-node":"^10.9.2","prettier":"^3.3.1","csvtojson":"^2.0.10","puppeteer":"^22.11.0","typescript":"^5.4.5","@types/node":"^20.14.2","@types/eslint":"^8.42.3","@types/lodash":"^4.17.5","@types/qrcode-svg":"^1.1.4","typescript-eslint":"^7.12.0","@types/js-beautify":"^1.14.3","@coast/project-config":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/qrcode-svg_1.0.9_1785340582815_0.6350164486460874","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2024-12-12T20:45:45.740Z","modified":"2026-07-29T16:01:46.002Z","1.0.7":"2024-12-12T20:45:46.174Z","1.0.8":"2026-07-29T15:38:20.935Z","1.0.9":"2026-07-29T15:56:22.977Z"},"author":{},"license":"ISC","keywords":[],"description":"Generates a QRCode in SVG with an integrated Coast logo at the bottom.","maintainers":[{"name":"coast-bot","email":"eng@coastapp.com"},{"name":"reid-coast","email":"reid@coastapp.com"},{"name":"russelltaga","email":"russell@coastapp.com"},{"name":"zakcoast","email":"zak@coastapp.com"}],"readme":"# createQRCode\n\nGenerates a QRCode in SVG with an integrated Coast logo at the bottom.\n\n<img src=\"./example.png\" width=\"300\"/>\n\n## Generating Quest PDFs\n\nAppend the `/upload` path to the base app URL to upload the CSV file.\n\nDue to upload constraints (bandwidth and 30 second request timeout), the app will only process 350 rows at a time.\n\n### Expected CSV format\n\nThe CSV MUST include the following columns:\n- Asset Details URL\n- Service Request URL\n\nThe CSV can OPTIONALLY include the following columns:\n- Manufacturer\n- Model\n- Serial Number\n- Coast ID\n- Acquired Year\n\nAll other columns will be ignored.\n\n### Generate command\n\nRun `yarn generate:pdfs path/to/data.csv`.\n\nPDFs will be output in the top-level `pdfs` folder, as numbered files. Note:\nany existing files in this folder will be removed when the script is run.\n\n### Troubleshooting\nIf the CSV format is incorrect, the app will say that it processed the file, but it will not display an error nor generate/display a link to a zip file containing the PDFs. You will need to follow the instructions in the section further down to tail the Heroku logs to see any error messages.\n\n## Usage\n\n```\nimport { createQRCode } from '@coast/qrcode-svg';\n\nconst url = 'https://shared.coastapp.com/r/d634c3d2-4708-42f3-8dbe-a987696a8bb3';\nconst width = 400;\nconst showBorder = true;\nconst svg = createQRCode({ url, width, showBorder });\n```\n\n### Props:\n\n-   url: string\n-   width?: number - if omitted, SVG will be size-agnostic / responsive\n-   showBorder?: boolean - defaults to false\n-   showLogo?: boolean - defaults to true\n\n## Publishing\n\n-   Run `yarn build && git add dist && git commit -m \"Update distribution\"`\n-   Bump the version via `npm version` (this will create a `vXXX` tag)\n-   Merge your changes to the `main` branch\n-   Push up the new version tag via `git push --tags`\n-   Update the the reference in the package that uses this library to point at the new version tag\n\n## Development\n\nThis project includes a dev environment for modifying the output of the createQRCode SVG generator. It uses a [SvelteKit](https://kit.svelte.dev) server to show the rendered SVG in a browser.\n\n#### Run the app\n\n```\nyarn\nyarn dev\n```\n\nThen open http://localhost:5173\n\n## Testing\n\nTests run in [vitest](https://vitest.dev).\n\n```\nyarn test\n```\n\nNote: the SVG fixtures are read in as files at the beginning of the test run, so any changes to the fixtures will require restarting the tests. (Press R while in watch mode.)\n\n## Heroku\n\nAccess at https://dashboard.heroku.com/apps/qrcode-svg\n\nInstall the [Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli#install-with-an-installer) and sign in by running `heroku login`\n\n### Dyno size\nAt the moment the primary app constraint is memory. We are currently limited to using a 2x dyno size with 1 GB memory. After we have an invoice for at least $30 for a month, we can use larger dyno sizes with more memory.\n\nhttps://dashboard.heroku.com/apps/qrcode-svg/resources\n\n### App configuration\n\n#### Config vars\n\n```\nPUPPETEER_EXECUTABLE_PATH: /app/.chrome-for-testing/chrome-linux64/chrome\nNODE_ENV: production\n```\n\n#### Buildpacks\n\nAdd [heroku-community/chrome-for-testing](https://github.com/heroku/heroku-buildpack-chrome-for-testing)\n\n### Watch app logs\n\n```\nheroku logs -a qrcode-svg --tail\n```\n\n### Clear app cache\n\n```\nheroku builds:cache:purge -a qrcode-svg\n```\n\n### Restart app\n\n```\nheroku ps:restart -a qrcode-svg\n```\n","readmeFilename":"README.md"}