{"_id":"@awesome-cordova-library/compressor-image","_rev":"5-da9165ce90e9ad96a362ac0ab291d334","name":"@awesome-cordova-library/compressor-image","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@awesome-cordova-library/compressor-image","version":"1.0.0","description":"An efficient JavaScript library that utilizes canvas to compress images by adjusting their quality or size. Ideal for optimizing images for better performance and faster loading times.","main":"lib/index.js","types":"lib/index.d.ts","keywords":["cordova","capacitor","ionic","javascript","typescript","mobile","image","compressor"],"publishConfig":{"access":"public"},"author":{"name":"Jordan AZOULAY","email":"jazoulay@joazco.com","url":"https://github.com/joazco"},"license":"SEE LICENSE IN LICENSE","repository":{"type":"git","url":"git://github.com/joazco/awesome-cordova-library.git"},"bugs":{"url":"https://github.com/joazco/awesome-cordova-library/issues"},"homepage":"https://github.com/joazco/awesome-cordova-library","devDependencies":{"@types/jest":"^27.5.1","@types/react":"~17.0.21","jest":"^28.1.0","prettier":"^2.6.2","ts-jest":"^28.0.3","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.7.2"},"scripts":{"build":"rm -rf lib/ && tsc","build-yalc":"npm run build; yalc publish --push --private","test":"jest --config jestconfig.json","format":"prettier --write \"./src/**/*.ts\"","lint":"tslint -p tsconfig.json","prepublish":"npm run format; npm run lint; npm test; npm run build"},"directories":{"lib":"lib"},"dependencies":{},"gitHead":"694398282c0c04ba5f8b5ea7bb238e347991ae81","_id":"@awesome-cordova-library/compressor-image@1.0.0","_nodeVersion":"16.20.0","_npmVersion":"8.19.4","dist":{"integrity":"sha512-dFHqYkN0zMiNW0bLLdI/P2j9HMdB/PN66YhsJHxVndkun+y0moW3HJL4xP2DHom00f5Ww51IpjtLVSZCnXe4tw==","shasum":"02ab32bec496f54cfd91a2d9401620e5a4e343f4","tarball":"https://registry.npmjs.org/@awesome-cordova-library/compressor-image/-/compressor-image-1.0.0.tgz","fileCount":7,"unpackedSize":20000,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAXImVnM7JtIsgcILzbisrj757F7aPPGwQpZ8QflEQEtAiBRFRNIQHxddiJFhZg2YL9I72XBsHZY75aNwDWr4h7rgA=="}]},"_npmUser":{"name":"joazco","email":"jazoulay@joazco.com"},"maintainers":[{"name":"joazco","email":"jazoulay@joazco.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/compressor-image_1.0.0_1694276286446_0.6570764073559701"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.1":{"name":"@awesome-cordova-library/compressor-image","version":"1.0.1","description":"An efficient JavaScript library that utilizes canvas to compress images by adjusting their quality or size. Ideal for optimizing images for better performance and faster loading times.","main":"lib/index.js","types":"lib/index.d.ts","keywords":["cordova","capacitor","ionic","javascript","typescript","mobile","image","compressor"],"publishConfig":{"access":"public"},"author":{"name":"Jordan AZOULAY","email":"jazoulay@joazco.com","url":"https://github.com/joazco"},"license":"SEE LICENSE IN LICENSE","repository":{"type":"git","url":"git://github.com/joazco/awesome-cordova-library.git"},"bugs":{"url":"https://github.com/joazco/awesome-cordova-library/issues"},"homepage":"https://github.com/joazco/awesome-cordova-library","devDependencies":{"@types/jest":"^27.5.1","@types/react":"~17.0.21","jest":"^28.1.0","prettier":"^2.6.2","ts-jest":"^28.0.3","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.7.2"},"scripts":{"build":"rm -rf lib/ && tsc","build-yalc":"npm run build; yalc publish --push --private","test":"jest --config jestconfig.json","format":"prettier --write \"./src/**/*.ts\"","lint":"tslint -p tsconfig.json","prepublish":"npm run format; npm run lint; npm test; npm run build"},"directories":{"lib":"lib"},"dependencies":{},"gitHead":"694398282c0c04ba5f8b5ea7bb238e347991ae81","_id":"@awesome-cordova-library/compressor-image@1.0.1","_nodeVersion":"16.20.0","_npmVersion":"8.19.4","dist":{"integrity":"sha512-0cGXWhT27kpTt0kIAtIa+RkBL9S4KODAjkKPHbSIzCgnsLKQMgJkJDushg9jjdpDtrpj4pHw0RfJHaY966qM9g==","shasum":"af1b55eeb0ea847f32b843bff528208c9e01a08e","tarball":"https://registry.npmjs.org/@awesome-cordova-library/compressor-image/-/compressor-image-1.0.1.tgz","fileCount":7,"unpackedSize":23933,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCguOg/0KapIK6D8IK9268O4vVoDbw9CXzR45Hn3oycjQIgV1+AOvxIrDusrjfMiPDnfDlnuajWBYxawchjarSHJjc="}]},"_npmUser":{"name":"joazco","email":"jazoulay@joazco.com"},"maintainers":[{"name":"joazco","email":"jazoulay@joazco.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/compressor-image_1.0.1_1694361711029_0.32755708131206096"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.2":{"name":"@awesome-cordova-library/compressor-image","version":"1.0.2","description":"An efficient JavaScript library that utilizes canvas to compress images by adjusting their quality or size. Ideal for optimizing images for better performance and faster loading times.","main":"lib/index.js","types":"lib/index.d.ts","keywords":["cordova","capacitor","ionic","javascript","typescript","mobile","image","compressor"],"publishConfig":{"access":"public"},"author":{"name":"Jordan AZOULAY","email":"jazoulay@joazco.com","url":"https://github.com/joazco"},"license":"SEE LICENSE IN LICENSE","repository":{"type":"git","url":"git://github.com/joazco/awesome-cordova-library.git"},"bugs":{"url":"https://github.com/joazco/awesome-cordova-library/issues"},"homepage":"https://github.com/joazco/awesome-cordova-library","devDependencies":{"@types/jest":"^27.5.1","@types/react":"~17.0.21","jest":"^28.1.0","prettier":"^2.6.2","ts-jest":"^28.0.3","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.7.2"},"scripts":{"build":"rm -rf lib/ && tsc","build-yalc":"npm run build; yalc publish --push --private","test":"jest --config jestconfig.json","format":"prettier --write \"./src/**/*.ts\"","lint":"tslint -p tsconfig.json","prepublish":"npm run format; npm run lint; npm test; npm run build"},"directories":{"lib":"lib"},"dependencies":{},"gitHead":"2a2b9cf007a870056251632315547e6a651d26a0","_id":"@awesome-cordova-library/compressor-image@1.0.2","_nodeVersion":"16.20.0","_npmVersion":"8.19.4","dist":{"integrity":"sha512-R1rz+8UsGUG1fWRJxna5TvPW6cKYHnZjAMTzew7CLn5E8cvZj0tmQoT25EOC1FKa+NN1PqZFtaoxLYV40HyCgw==","shasum":"6a978108383dbffc5d4c6103bb83885c960becde","tarball":"https://registry.npmjs.org/@awesome-cordova-library/compressor-image/-/compressor-image-1.0.2.tgz","fileCount":7,"unpackedSize":23858,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsCbGlIaHnIMshtj04UHCJLGQtOOqENRs4/JJZU8NP6wIgJXTH0/e69v65YA0yldhV3YsKf2CrYAXfdlgv4kfNv0M="}]},"_npmUser":{"name":"joazco","email":"jazoulay@joazco.com"},"maintainers":[{"name":"joazco","email":"jazoulay@joazco.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/compressor-image_1.0.2_1694365804527_0.9093866032363049"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.3":{"name":"@awesome-cordova-library/compressor-image","version":"1.0.3","description":"An efficient JavaScript library that utilizes canvas to compress images by adjusting their quality or size. Ideal for optimizing images for better performance and faster loading times.","main":"lib/index.js","types":"lib/index.d.ts","keywords":["cordova","capacitor","ionic","javascript","typescript","mobile","image","compressor"],"publishConfig":{"access":"public"},"author":{"name":"Jordan AZOULAY","email":"jazoulay@joazco.com","url":"https://github.com/joazco"},"license":"SEE LICENSE IN LICENSE","repository":{"type":"git","url":"git://github.com/joazco/awesome-cordova-library.git"},"bugs":{"url":"https://github.com/joazco/awesome-cordova-library/issues"},"homepage":"https://github.com/joazco/awesome-cordova-library","devDependencies":{"@types/jest":"^27.5.1","@types/react":"~17.0.21","jest":"^28.1.0","prettier":"^2.6.2","ts-jest":"^28.0.3","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.7.2"},"scripts":{"build":"rm -rf lib/ && tsc","build-yalc":"npm run build; yalc publish --push --private","test":"jest --config jestconfig.json","format":"prettier --write \"./src/**/*.ts\"","lint":"tslint -p tsconfig.json","prepublish":"npm run format; npm run lint; npm test; npm run build"},"directories":{"lib":"lib"},"dependencies":{},"gitHead":"2a2b9cf007a870056251632315547e6a651d26a0","_id":"@awesome-cordova-library/compressor-image@1.0.3","_nodeVersion":"18.17.1","_npmVersion":"9.6.7","dist":{"integrity":"sha512-xzlU6RWBxqU3XOwmQL+d6STZS2JLIiGXYZMSWlN+XeXADAV7fviOdPIwL4JU3y/f4LUTHff632ylQl7tkMNUVA==","shasum":"4765fbee36496eccbaf9dca4201734fdf06cdc87","tarball":"https://registry.npmjs.org/@awesome-cordova-library/compressor-image/-/compressor-image-1.0.3.tgz","fileCount":7,"unpackedSize":23905,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEmyfsJoaj8crLHydcGp8SNTDQWKmAkSCvEHFsHOl4DkAiBf/4iKu+diaNSAymo3Dl1wccYFBE83gH2zjr7PIlauhg=="}]},"_npmUser":{"name":"joazco","email":"jazoulay@joazco.com"},"maintainers":[{"name":"joazco","email":"jazoulay@joazco.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/compressor-image_1.0.3_1694417542175_0.9766011908526957"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.4":{"name":"@awesome-cordova-library/compressor-image","version":"1.0.4","description":"An efficient JavaScript library that utilizes canvas to compress images by adjusting their quality or size. Ideal for optimizing images for better performance and faster loading times.","main":"lib/index.js","types":"lib/index.d.ts","keywords":["cordova","capacitor","ionic","javascript","typescript","mobile","image","compressor"],"publishConfig":{"access":"public"},"author":{"name":"Jordan AZOULAY","email":"jazoulay@joazco.com","url":"https://github.com/joazco"},"license":"SEE LICENSE IN LICENSE","repository":{"type":"git","url":"git://github.com/joazco/awesome-cordova-library.git"},"bugs":{"url":"https://github.com/joazco/awesome-cordova-library/issues"},"homepage":"https://github.com/joazco/awesome-cordova-library","devDependencies":{"@types/jest":"^27.5.1","@types/react":"~17.0.21","jest":"^28.1.0","prettier":"^2.6.2","ts-jest":"^28.0.3","tslint":"^6.1.3","tslint-config-prettier":"^1.18.0","typescript":"^4.7.2"},"scripts":{"build":"rm -rf lib/ && tsc","build-yalc":"npm run build; yalc publish --push --private","test":"jest --config jestconfig.json","format":"prettier --write \"./src/**/*.ts\"","lint":"tslint -p tsconfig.json","prepublish":"npm run format; npm run lint; npm test; npm run build"},"directories":{"lib":"lib"},"dependencies":{},"gitHead":"2a2b9cf007a870056251632315547e6a651d26a0","_id":"@awesome-cordova-library/compressor-image@1.0.4","_nodeVersion":"16.18.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-4YSjISQhGZhALrQTfmKihOnf6lOVD9vyi1FKojhs3EYB4wrjeZj7X745rjwI8hqBhHJcJsBTdyIaMoMd81H3KA==","shasum":"c2bf850f895fa318e85b4a884571071f0e563b5a","tarball":"https://registry.npmjs.org/@awesome-cordova-library/compressor-image/-/compressor-image-1.0.4.tgz","fileCount":7,"unpackedSize":23861,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTBIAW/SsGv1EkRXHJgOSrjLURT/NaYmlkpNr/JKyGwQIgOQgtL4SOSTy4u5Dp2fdmDgFgU01j2WMb1hAWMfLtlnM="}]},"_npmUser":{"name":"joazco","email":"jazoulay@joazco.com"},"maintainers":[{"name":"joazco","email":"jazoulay@joazco.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/compressor-image_1.0.4_1694422680356_0.2811246358745991"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."}},"time":{"created":"2023-09-09T16:18:06.340Z","1.0.0":"2023-09-09T16:18:06.681Z","modified":"2023-09-18T11:40:25.346Z","1.0.1":"2023-09-10T16:01:51.239Z","1.0.2":"2023-09-10T17:10:04.698Z","1.0.3":"2023-09-11T07:32:22.310Z","1.0.4":"2023-09-11T08:58:00.568Z"},"maintainers":[{"name":"joazco","email":"jazoulay@joazco.com"}],"description":"An efficient JavaScript library that utilizes canvas to compress images by adjusting their quality or size. Ideal for optimizing images for better performance and faster loading times.","homepage":"https://github.com/joazco/awesome-cordova-library","keywords":["cordova","capacitor","ionic","javascript","typescript","mobile","image","compressor"],"repository":{"type":"git","url":"git://github.com/joazco/awesome-cordova-library.git"},"author":{"name":"Jordan AZOULAY","email":"jazoulay@joazco.com","url":"https://github.com/joazco"},"bugs":{"url":"https://github.com/joazco/awesome-cordova-library/issues"},"license":"SEE LICENSE IN LICENSE","readme":"---\nid: compressor-image\ntitle: Compressor Image\ntags:\n  - cordova\n  - capacitor\n  - ionic\n  - javascript\n  - typescript\n  - plugin\n  - mobile\n  - image\n  - compressor\n---\n\n# Compressor Image\n\nAn efficient JavaScript library that utilizes canvas to compress images by adjusting their quality or size. Ideal for optimizing images for better performance and faster loading times.\n\n[Online documentation](https://awesomecordovalibrary.com)\n\n[Online demo](https://awesomecordovalibrary.com/compressor-image)\n\n## Instruction\n\n_This plugin is especially effective for large images that haven't been previously compressed by another software. To optimize compression further, consider resizing the image beforehand._\n\n## Installation\n\n```bash\nnpm install @awesome-cordova-library/compressor-image\n```\n\n## Vanilla\n\n### Declaration\n\n```typescript\nexport type FileExtension = 'jpg' | 'jpeg' | 'png' | 'webp' | 'gif' | 'bmp' | 'heic';\nexport type OutputFormat = 'image/jpeg' | 'image/png' | 'image/webp' | 'image/gif' | 'image/bmp' | 'image/heic';\nexport type CompressOptions = {\n  src: string;\n  targetLength: number;\n  quality?: number;\n  outputFormat?: OutputFormat;\n  minQuality?: number;\n  maxWidth?: number;\n  maxHeight?: number;\n};\nexport type CompressorImageReturn = {\n  base64: string;\n  outputFormat?: OutputFormat;\n  width: number;\n  height: number;\n  quality: number;\n  length: number;\n};\n/**\n * @author AZOULAY Jordan<jazoulay@joazco.com>\n *\n * compressor-image is a lightweight and efficient Node.js module designed to compress images using the power of the HTML Canvas API. Whether you're dealing with JPEG, PNG, or other image formats, compressor-image aims to reduce the file size while maintaining good visual quality. Ideal for web applications, content management systems, or any scenario where bandwidth and storage optimizations are crucial.\n */\nexport default class CompressorImage {\n  /**\n   * Determines the optimal image format based on a given file extension.\n   * @params extension {FileExtension}\n   */\n  static determineOutputFormat(extension: FileExtension): OutputFormat;\n  /**\n   * Converts the size of a base64 string to megabytes (Mo).\n   * @params base64 {string}\n   */\n  static sizeBase64ToMo(base64: string): number;\n  /**\n   * Compresses and optimizes an image.\n   * @params options {Pick<CompressOptions, 'src' | 'quality' | 'maxWidth' | 'maxHeight'>}\n   */\n  static compress(\n    options: Pick<CompressOptions, 'src' | 'quality' | 'maxWidth' | 'maxHeight' | 'outputFormat'>,\n  ): Promise<CompressorImageReturn>;\n  /**\n   * Compresses the image to approximate a desired file size in MB.\n   * @params options {Pick<CompressOptions, 'src' | 'minQuality' | 'targetLength' | 'maxWidth' | 'maxHeight'>}\n   */\n  static compressTargetLength(\n    options: Pick<CompressOptions, 'src' | 'minQuality' | 'targetLength' | 'maxWidth' | 'maxHeight' | 'outputFormat'>,\n  ): Promise<CompressorImageReturn>;\n}\n```\n\n## React\n\n### Declaration\n\n```typescript\ndeclare const useCompressorImage: () => {\n  compress: (\n    options: Pick<CompressOptions, 'src' | 'quality' | 'maxWidth' | 'maxHeight' | 'outputFormat'>,\n  ) => Promise<import('../').CompressorImageReturn>;\n  compressTargetLength: (\n    options: Pick<CompressOptions, 'src' | 'minQuality' | 'targetLength' | 'maxWidth' | 'maxHeight' | 'outputFormat'>,\n  ) => Promise<import('../').CompressorImageReturn>;\n  determineOutputFormat: (extension: FileExtension) => import('../').OutputFormat;\n  sizeBase64ToMo: (base64: string) => number;\n};\nexport default useCompressorImage;\n```\n\n## CompressOptions\n\n| Parameter      | Type     | Description                                                                                                |\n| :------------- | :------- | :--------------------------------------------------------------------------------------------------------- |\n| `src`          | `string` | Source of image or base 64 (need to set outputFormat value)                                                |\n| `targetLength` | `number` | Target length in MB to which the image should be approximated.                                             |\n| `quality`      | `number` | **Default: 0.8** Quality given as Number for the quality of the new image beetween 0 and 1                 |\n| `outputFormat` | `number` | **Optional** This option is useful if your src is a base64 to determine the type of file to compress.      |\n| `minQuality`   | `number` | **Default: 0.2**. Compression halts if this quality is reached while trying to approach the target length. |\n| `maxWidth`     | `number` | Resizes the image for optimal compression if image width exceeds this value.                               |\n| `maxHeight`    | `number` | Resizes the image for optimal compression if image height exceeds this value.                              |\n\n## Usage\n\n### Compress by quality\n\nI wish to compress an image with a quality of 60%.\n\n```typescript\nimport CompressorImage from \"@awesome-cordova-library/compressor-image\";\n...\n\nCompressorImage.compress({\n  src: \"https://mydomain.com/my-image.jpg\",\n  quality: 0.6,\n  maxWidth: 1920,\n  maxHeight: 1080\n}).then((result) => {\n  img.src = `data:${result.outputFormat || 'application/octet-stream'};base64,${result.base64}`;\n})\n```\n\nOR REACT\n\n```typescript\nimport React, {useState} from \"react\";\nimport useCompressorImage from \"@awesome-cordova-library/compressor-image/lib/react\";\n...\n\nfunction App(){\n  const [src, setSrc] = useState(\"\");\n  const {compress} = useCompressorImage();\n  return  (<div>\n    <img src={src} />\n    <button onClick={() => {\n      compress({\n        src: \"https://mydomain.com/my-image.jpg\",\n        quality: 0.6,\n        maxWidth: 1920,\n        maxHeight: 1080\n      }).then((base64) => {\n      setSrc(`data:${result.outputFormat || 'application/octet-stream'};base64,${result.base64}`)\n      })\n    }}>Load src compress</button>\n  </div>)\n}\n```\n\n### Compresses to the maximum desired image length\n\nI have a 5MB image and I would like it to come as close as possible to 2MB without going below 60% quality.\n\n```typescript\nimport CompressorImage from \"@awesome-cordova-library/compressor-image\";\n...\n\nCompressorImage.compressTargetLength({\n  src: \"https://mydomain.com/my-image.jpg\",\n  targetLength: 2,\n  minQuality: 0.6,\n  maxWidth: 1920,\n  maxHeight: 1080\n}).then((base64) => {\n   img.src = `data:${result.outputFormat || 'application/octet-stream'};base64,${result.base64}`;\n})\n```\n\nOR REACT\n\n```typescript\nimport React, {useState} from \"react\";\nimport useCompressorImage from \"@awesome-cordova-library/compressor-image/lib/react\";\n...\n\nfunction App(){\n  const [src, setSrc] = useState(\"\");\n  const {compressTargetLength} = useCompressorImage();\n  return  (<div>\n    <img src={src} />\n    <button onClick={() => {\n      compressTargetLength({\n        src: \"https://mydomain.com/my-image.jpg\",\n        targetLength: 2,\n        minQuality: 0.6,\n        maxWidth: 1920,\n        maxHeight: 1080\n      }).then((result) => {\n        setSrc(result.base64Formatted);\n      })\n    }}>Load src compress</button>\n  </div>)\n}\n```\n\n### Compresses a base64 value\n\n```typescript\nimport CompressorImage from \"@awesome-cordova-library/compressor-image\";\n...\n\nCompressorImage.compress({\n  src: \"/9j/4AAQSkZJRgABAQAASABIAAD/4QBMRX........\",\n  quality: 0.6,\n  outputFormat: \"image/jpeg\",\n  maxWidth: 1920,\n  maxHeight: 1080\n}).then((base64) => {\n   img.src = `data:${result.outputFormat || 'application/octet-stream'};base64,${result.base64}`;\n})\n```\n\nOR REACT\n\n```typescript\nimport React, {useState} from \"react\";\nimport useCompressorImage from \"@awesome-cordova-library/compressor-image/lib/react\";\n...\n\nfunction App(){\n  const [src, setSrc] = useState(\"\");\n  const {compress} = useCompressorImage();\n  return  (<div>\n    <img src={src} />\n    <button onClick={() => {\n      compress({\n        src: \"/9j/4AAQSkZJRgABAQAASABIAAD/4QBMRX........\",\n        quality: 0.6,\n        outputFormat: \"image/jpeg\",\n        maxWidth: 1920,\n        maxHeight: 1080\n      }).then((result) => {\n        setSrc(result.base64Formatted);\n      })\n    }}>Load src compress</button>\n  </div>)\n}\n```\n","readmeFilename":"README.md"}