{"id":13580311,"url":"https://github.com/mooyoul/geo-pattern","last_synced_at":"2025-04-07T19:14:52.394Z","repository":{"id":37034997,"uuid":"261142829","full_name":"mooyoul/geo-pattern","owner":"mooyoul","description":"Create beautiful generative geometric background images from a string ✨ TypeScript port of jasonlong/geo_pattern. Supports both Node.js and Browser.","archived":false,"fork":false,"pushed_at":"2025-04-05T20:02:09.000Z","size":2210,"stargazers_count":37,"open_issues_count":14,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-05T21:18:23.543Z","etag":null,"topics":["background","design","image","pattern","patterns"],"latest_commit_sha":null,"homepage":"https://mooyoul.github.io/geo-pattern/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mooyoul.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-04T10:24:57.000Z","updated_at":"2024-05-28T19:06:41.000Z","dependencies_parsed_at":"2023-11-08T23:30:33.897Z","dependency_job_id":"6d86f796-13d0-4b96-8b91-f0e82ec3a6ea","html_url":"https://github.com/mooyoul/geo-pattern","commit_stats":{"total_commits":486,"total_committers":4,"mean_commits":121.5,"dds":"0.15020576131687247","last_synced_commit":"5cf9a3e1a41002e65ed81e91bfe5a33ff840be06"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mooyoul%2Fgeo-pattern","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mooyoul%2Fgeo-pattern/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mooyoul%2Fgeo-pattern/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mooyoul%2Fgeo-pattern/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mooyoul","download_url":"https://codeload.github.com/mooyoul/geo-pattern/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247713258,"owners_count":20983683,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["background","design","image","pattern","patterns"],"created_at":"2024-08-01T15:01:49.742Z","updated_at":"2025-04-07T19:14:52.341Z","avatar_url":"https://github.com/mooyoul.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# @prescott/geo-pattern\n\n[![Build Status](https://github.com/mooyoul/geo-pattern/workflows/workflow/badge.svg)](https://github.com/mooyoul/geo-pattern/actions)\n[![Github Pages Status](https://github.com/mooyoul/geo-pattern/workflows/gh-pages/badge.svg)](https://github.com/mooyoul/geo-pattern/actions)\n[![Semantic Release enabled](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)\n![npm bundle size (minified, gzipped)](https://img.shields.io/bundlephobia/minzip/@prescott/geo-pattern.svg)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovatebot.com/)\n[![MIT license](http://img.shields.io/badge/license-MIT-blue.svg)](http://mooyoul.mit-license.org/)\n\n\n![Cover Image](./assets/cover.png)\n\nCreate beautiful generative geometric background images from a string ✨\n\n`@prescott/geo-pattern` has [visual regression tests](./test) \nand [perfectly matches](https://github.com/mooyoul/geo-pattern/blob/master/integration-test/node/node.e2e.ts#L20) to [the original geo-pattern gem outputs](https://github.com/mooyoul/geo-pattern/blob/master/fixtures/generate.ts)!     \n\n## Live Demo\n\nhttps://mooyoul.github.io/geo-pattern/\n\n### E2E Test Status\n\nBrowser | Status | Build\n------- | ------ | -----\nIE 11 | [![BrowserStack Status](https://automate.browserstack.com/badge.svg?badge_key=bHdTZXlVcUlOUDNYREFHT2VXQVNNSkUyem13UmlRSjluMUxKVDhBcEp6Yz0tLVhsQ2lGWDlqZmhSR3RSakRTSmZhM3c9PQ==--b360da4849c28dff92635b2514e764b9b4e91230)](https://automate.browserstack.com/public-build/bHdTZXlVcUlOUDNYREFHT2VXQVNNSkUyem13UmlRSjluMUxKVDhBcEp6Yz0tLVhsQ2lGWDlqZmhSR3RSakRTSmZhM3c9PQ==--b360da4849c28dff92635b2514e764b9b4e91230) | ES5 Build\nEdge Latest | [![BrowserStack Status](https://automate.browserstack.com/badge.svg?badge_key=aU1ZdUFFd004Y0liQmFqWTk0cGtzR20rWmhxZ1M0WlRmdVZONWMvdTZ5ST0tLUNTMzVZQ1VHNm93L2dmL0JYcWl0c2c9PQ==--e434d87aa6b1701535bd03715d993e3047c748ce)](https://automate.browserstack.com/public-build/aU1ZdUFFd004Y0liQmFqWTk0cGtzR20rWmhxZ1M0WlRmdVZONWMvdTZ5ST0tLUNTMzVZQ1VHNm93L2dmL0JYcWl0c2c9PQ==--e434d87aa6b1701535bd03715d993e3047c748ce) | ES6 Build\nFirefox Latest | [![BrowserStack Status](https://automate.browserstack.com/badge.svg?badge_key=YUpMNzJJTHdDRHNuOUFHYmh1WXVwOTAyOHNkVXJ4VUl0ZUg2SzdsSXZPaz0tLWdSL1oxQ3JlMFdjQWtRUjh3UGZOVVE9PQ==--1e8c4336b8b07cc1a2d062e1b6d8bca5190caeb8)](https://automate.browserstack.com/public-build/YUpMNzJJTHdDRHNuOUFHYmh1WXVwOTAyOHNkVXJ4VUl0ZUg2SzdsSXZPaz0tLWdSL1oxQ3JlMFdjQWtRUjh3UGZOVVE9PQ==--1e8c4336b8b07cc1a2d062e1b6d8bca5190caeb8) | ES6 Build\nEdge 15 | [![BrowserStack Status](https://automate.browserstack.com/badge.svg?badge_key=Zjd6RlhDN3MvWEtnRHdMVmZhVWdFZU9tU0JHb1p2a20rU2JVNWt3b2g0RT0tLWRrMzlpWCs5L0M3S00yMVk3NkJKdkE9PQ==--388c162d3eee3a5bed67a6d2bf66e663cd0734ed)](https://automate.browserstack.com/public-build/Zjd6RlhDN3MvWEtnRHdMVmZhVWdFZU9tU0JHb1p2a20rU2JVNWt3b2g0RT0tLWRrMzlpWCs5L0M3S00yMVk3NkJKdkE9PQ==--388c162d3eee3a5bed67a6d2bf66e663cd0734ed) | ES6 Build\nChrome Latest | [![BrowserStack Status](https://automate.browserstack.com/badge.svg?badge_key=WThJU2JMK0NSZDRtNWp1bncvWGpPdHR6V2QzYk82R21kdHNDT3NsMGNiYz0tLUZxdnByN0NPbHJERml4Y1hBb0EzN3c9PQ==--fedf40b9edcf4cb7747c36c13593efa0352ef254)](https://automate.browserstack.com/public-build/WThJU2JMK0NSZDRtNWp1bncvWGpPdHR6V2QzYk82R21kdHNDT3NsMGNiYz0tLUZxdnByN0NPbHJERml4Y1hBb0EzN3c9PQ==--fedf40b9edcf4cb7747c36c13593efa0352ef254) | ES6 Build, Native Build\nmacOS Safari Latest | [![BrowserStack Status](https://automate.browserstack.com/badge.svg?badge_key=VjQrYWZEQlNPcVlHYXlwRzhLWkUzNkVyK2gyWU9KRHdZVWpHNlNLajNKST0tLXFSMzUvK2RVc2ZNY3VvVHRxSWVKd3c9PQ==--de8acc305e2063b45bdd9eee3a5a53c0bd2ea84a)](https://automate.browserstack.com/public-build/VjQrYWZEQlNPcVlHYXlwRzhLWkUzNkVyK2gyWU9KRHdZVWpHNlNLajNKST0tLXFSMzUvK2RVc2ZNY3VvVHRxSWVKd3c9PQ==--de8acc305e2063b45bdd9eee3a5a53c0bd2ea84a) | ES6 Build\niOS Safari Latest | [![BrowserStack Status](https://automate.browserstack.com/badge.svg?badge_key=RWhDV0ZFZXZucVN4dGM4U3BpVDlnMkxuc2tmemxNc0FIMVZyN2hGQmJjbz0tLUR1WDdpZ0lSRWRPMnVzRFI1RnBXcVE9PQ==--2574292c9f4bd5abfeb267300a6cf33899028f8b)](https://automate.browserstack.com/public-build/RWhDV0ZFZXZucVN4dGM4U3BpVDlnMkxuc2tmemxNc0FIMVZyN2hGQmJjbz0tLUR1WDdpZ0lSRWRPMnVzRFI1RnBXcVE9PQ==--2574292c9f4bd5abfeb267300a6cf33899028f8b) | ES6 Build\niPadOS Safari Latest | [![BrowserStack Status](https://automate.browserstack.com/badge.svg?badge_key=VS95WEFMTE9pM25OcUhqbThQMkhqQU5iRGV0RnpVYWMrSkFwRVd6dm5XOD0tLWdSc0xEUTRrVks0VUsyTysyQWs5MGc9PQ==--e7547dc0e5db89e237f0983978bdf7c8db383fc7)](https://automate.browserstack.com/public-build/VS95WEFMTE9pM25OcUhqbThQMkhqQU5iRGV0RnpVYWMrSkFwRVd6dm5XOD0tLWdSc0xEUTRrVks0VUsyTysyQWs5MGc9PQ==--e7547dc0e5db89e237f0983978bdf7c8db383fc7) | ES6 Build\nAndroid Tab Chrome Latest | [![BrowserStack Status](https://automate.browserstack.com/badge.svg?badge_key=SkQ2WTczNGZRM2RJVmFaT0dZcy9DY0c0YzdBOVd0MUNjc3YyUlYvd2hJND0tLXQ2ZUpSVmZlMFpsaGFOZUg4RS9mdlE9PQ==--b67307766ed8983db03597824b02a856643f8f61)](https://automate.browserstack.com/public-build/SkQ2WTczNGZRM2RJVmFaT0dZcy9DY0c0YzdBOVd0MUNjc3YyUlYvd2hJND0tLXQ2ZUpSVmZlMFpsaGFOZUg4RS9mdlE9PQ==--b67307766ed8983db03597824b02a856643f8f61) | ES6 Build\nAndroid Chrome Latest | [![BrowserStack Status](https://automate.browserstack.com/badge.svg?badge_key=dFV6b252azdFaHFLN1NvN0dsOGdNeUt3MFlCYzlDY1BxV2VsWCtuY1ZFYz0tLW5RaHZDaHgrdlpsRmVwRnRWTyttWUE9PQ==--299ae5eb82ebed36a107e494bc7b5f130f87fd48)](https://automate.browserstack.com/public-build/dFV6b252azdFaHFLN1NvN0dsOGdNeUt3MFlCYzlDY1BxV2VsWCtuY1ZFYz0tLW5RaHZDaHgrdlpsRmVwRnRWTyttWUE9PQ==--299ae5eb82ebed36a107e494bc7b5f130f87fd48) | ES6 Build\n\n## Getting Started\n\n```bash\n$ npm install @prescott/geo-pattern --save\n```\n\n## API\n\n#### `generate(params: GeneratePatternParams) =\u003e Promise\u003cPattern\u003e`\n\n```typescript\ninterface GeneratePatternParams {\n  input: string;\n  patterns?: string[];\n  color?: string;\n  baseColor?: string;\n}\n\ninterface Pattern {\n  background?: Background;\n  structure?: Structure;\n  width: number;\n  height: number;\n  toSVG(): string;\n  toDataURL(): string;\n}\n```\n\n```typescript\n\nimport { generate } from \"@prescott/geo-pattern\";\nconst pattern = await generate({ input: \"lorem ipsum\" });\nconst svg = pattern.toSVG();\nconst dataUri = pattern.toDataURL();\n```\n\n## Browser Builds\n\n`@prescott/geo-pattern` provides browser builds.\n\nAll browser builds require Promise, Map, Set, and TextEncoder. \nYou should polyfill missing features if you need to support legacy browsers.  \n\nCurrently, There are four types of Browser Build. \n\n| Type | Path | Notes |\n| ---- | ---- | ----- |\n| Default (CommonJS) | dist/browser | Use this build if you're using bundler like Webpack. | \n| ES5 (UMD) | browser/es5 | Use this build if you want to support legacy browsers (e.g. IE 11) |\n| ES6 (UMD) | browser/es6 | Use this build if you want to support modern browers only |\n| Native (UMD) | browser/native | Use this build if you want to support cutting-edge browsers only |\n\n#### About \"Native\" Build\n\nNative build uses browser built-in hash function (Crypto Subtle API)  \n\n#### Use `@prescott/geo-pattern` using unpkg\n\n```html\n\u003c!-- ES6 Target Build --\u003e\n\u003cscript type=\"text/javascript\" src=\"https://unpkg.com/@prescott/geo-pattern/browser/es6\"\u003e\u003c/script\u003e\n\n\u003c!-- Native Build --\u003e\n\u003cscript type=\"text/javascript\" src=\"https://unpkg.com/@prescott/geo-pattern/browser/native\"\u003e\u003c/script\u003e\n\n\u003c!-- ES5 Target Build (for Compat, requires Promise, Map, Set, and TextEncoder polyfill --\u003e\n\u003cscript type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/core-js/2.6.5/core.min.js\"\u003e\u003c/script\u003e\n\u003cscript type=\"text/javascript\" src=\"https://unpkg.com/@prescott/geo-pattern/browser/es5\"\u003e\u003c/script\u003e\n```\n\n## Wishlists\n\n- Smaller library size\n\n## Changelog\n\nSee [CHANGELOG](/CHANGELOG.md).\n\n\n## Testing\n\n```bash\n$ npm run test:spec # for unit test\n$ npm run test:e2e:node # for Node.js integration test\n$ npm run test:e2e:browser # for Browser integration test using locally installed chrome\n$ npm run test:e2e:browserstack # for Browser compability test using BrowserStack\n```\n\n[![BrowserStack Logo](/assets/browserstack.png)](https://www.browserstack.com/)\n\n`@prescott/geo-pattern` uses [BrowserStack](https://www.browserstack.com/) for compatibility testing.\n\n## Build\n\n```bash\n$ npm run build\n```\n\n## Related\n\nTBD\n\n## Diagram\n\n![Dependency Graph](./assets/graph.png)\n\n![Dependency Graph](./assets/graph.svg)\n\n## Credits\n\ngeo-pattern was originally wrote by [Jason Long](https://github.com/jasonlong). \nIt can't be done without his efforts.\n\nKudos for his amazing work! \u003c3 \n\n## License\n[MIT](LICENSE)\n\nSee full license on [mooyoul.mit-license.org](http://mooyoul.mit-license.org/)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmooyoul%2Fgeo-pattern","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmooyoul%2Fgeo-pattern","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmooyoul%2Fgeo-pattern/lists"}