{"id":24287945,"url":"https://github.com/tylerben/data-spring","last_synced_at":"2026-05-27T20:31:28.068Z","repository":{"id":42701912,"uuid":"301555222","full_name":"tylerben/data-spring","owner":"tylerben","description":"Easily generate a dummy dataset based on a provided config","archived":false,"fork":false,"pushed_at":"2023-01-09T23:17:07.000Z","size":1716,"stargazers_count":1,"open_issues_count":21,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-06T23:11:22.773Z","etag":null,"topics":["data","data-spring","datagenerator","fake-data","generator","javascript","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tylerben.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-10-05T22:30:40.000Z","updated_at":"2024-03-08T23:28:25.000Z","dependencies_parsed_at":"2023-02-08T16:01:02.907Z","dependency_job_id":null,"html_url":"https://github.com/tylerben/data-spring","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/tylerben/data-spring","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tylerben%2Fdata-spring","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tylerben%2Fdata-spring/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tylerben%2Fdata-spring/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tylerben%2Fdata-spring/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tylerben","download_url":"https://codeload.github.com/tylerben/data-spring/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tylerben%2Fdata-spring/sbom","scorecard":{"id":904876,"data":{"date":"2025-08-11","repo":{"name":"github.com/tylerben/data-spring","commit":"4e0929ee97862b51679cf017d762eaa3db69f98a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.2,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/main.yml:1","Warn: no topLevel permission defined: .github/workflows/size.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/tylerben/data-spring/main.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/tylerben/data-spring/main.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/main.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/tylerben/data-spring/main.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/size.yml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/tylerben/data-spring/size.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/size.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/tylerben/data-spring/size.yml/master?enable=pin","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"69 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-3xq5-wjfh-ppjc","Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-x9w5-v3q2-3rhw","Warn: Project is vulnerable to: GHSA-w8qv-6jwh-64r5","Warn: Project is vulnerable to: GHSA-257v-vj4p-3w2h","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-phwq-j96m-2c2q","Warn: Project is vulnerable to: GHSA-ghr5-ch3p-vcr6","Warn: Project is vulnerable to: GHSA-r9p9-mrjm-926w","Warn: Project is vulnerable to: GHSA-434g-2637-qmqr","Warn: Project is vulnerable to: GHSA-49q7-c7j4-3p7m","Warn: Project is vulnerable to: GHSA-977x-g7h5-7qgw","Warn: Project is vulnerable to: GHSA-f7q4-pwc6-w24p","Warn: Project is vulnerable to: GHSA-fc9h-whq2-v747","Warn: Project is vulnerable to: GHSA-vjh7-7g9h-fjfh","Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-ww39-953v-wcq6","Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj","Warn: Project is vulnerable to: GHSA-7r28-3m3f-r2pr","Warn: Project is vulnerable to: GHSA-r8j5-h5cx-65gg","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-76p3-8jx3-jpfq","Warn: Project is vulnerable to: GHSA-3rfm-jhwj-7488","Warn: Project is vulnerable to: GHSA-hhq3-ff78-jv3g","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-qrpm-p2h7-hrv2","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-5fw9-fq32-wv5p","Warn: Project is vulnerable to: GHSA-rp65-9cf3-cjxr","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-h7cp-r72f-jxh6","Warn: Project is vulnerable to: GHSA-v62p-rq8g-8h59","Warn: Project is vulnerable to: GHSA-566m-qj78-rww5","Warn: Project is vulnerable to: GHSA-hwj9-h5mp-3pm3","Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-44c6-4v22-4mhx","Warn: Project is vulnerable to: GHSA-4x5v-gmq8-25ch","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-4rq4-32rv-6wp6","Warn: Project is vulnerable to: GHSA-64g7-mvw6-v9qj","Warn: Project is vulnerable to: GHSA-vx3p-948g-6vhq","Warn: Project is vulnerable to: GHSA-4wf5-vphf-c2xc","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-jgrx-mgxx-jf9v","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-6fc8-4gx4-v693","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-24T16:58:50.504Z","repository_id":42701912,"created_at":"2025-08-24T16:58:50.504Z","updated_at":"2025-08-24T16:58:50.504Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33583394,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["data","data-spring","datagenerator","fake-data","generator","javascript","typescript"],"created_at":"2025-01-16T09:24:32.499Z","updated_at":"2026-05-27T20:31:28.052Z","avatar_url":"https://github.com/tylerben.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Data Spring\n\n\u003e :warning: Data Spring is still very much in an experimental and beta state. As a result, features and implementation likely will change.\n\nData Spring generates fake datasets geared towards dashboards and data visualizations. Sure a lot of libraries already exist for generating fake data, but I was not able to find a solution that was well tailored for these use cases. Data Spring is designed with the use case of generating datasets for prototyping data driven dashboards and data visualizations. As a result, it is fast and easy to create things like large time series datasets using Data Spring.\n\nData Spring is available both as a JavaScript library as well as a standalone CLI. Instructions for using both are included below\n\n## data-spring Library\n\n### Getting Started\n\nInstall the package using yarn or npm.\n\n```shell\n# yarn\nyarn add data-spring\n\n#npm\nnpm install data-spring\n```\n\nAfter installing, add it to your project where you want to generate data. For instance, it can easily be plugged into an API endpoint or directly into a React component. The below snippet gives you the rough idea of usage.\n\nThe config argument is how you define the shape of your dataset (i.e. creating fields and possible values for them).\n\n```js\nimport { DataSpring } from \"data-spring\";\n\n// config object that is passed to data spring\n// aka how you want your data to look\nconst config = [\n  { id: \"rec_id\", type: \"id\" }, // auto generates a uuid\n  {\n    id: \"date\",\n    type: \"date\",\n    interval: {\n      // i.e. 'hour' | 'day' | 'month' | 'year'\n      type: \"month\",\n      // # of records to generate before stepping to next interval\n      recordsPerInterval: 2,\n    },\n    min: \"2020-01-01 00:00:00\",\n    max: \"2020-12-01 00:00:00\",\n  },\n  {\n    id: \"department\",\n    type: \"string\",\n    values: [\"Transportation\", \"Environment\", \"Health\", \"Parks\"],\n  },\n  {\n    id: \"budget\",\n    type: \"number\",\n    min: 10000,\n    max: 100000,\n  },\n];\n\nconst data = DataSpring(config);\n```\n\nThe above example will generate something that looks roughly like...\n\n```js\n[\n  {\n    id: \"6b41a4ed-6319-4c23-83c7-32eb5a655e7f\",\n    date: \"2020-01-01T01:00:00.000-08:00\",\n    department: \"Environment\",\n    budget: 45000,\n  },\n  {\n    id: \"6b41a4ed-6319-4c23-83c7-32eb5a655e7f\",\n    date: \"2020-01-01T01:00:00.000-08:00\",\n    department: \"Transportation\",\n    budget: 32000,\n  },\n  // 22 more records\n];\n```\n\n## data-spring CLI\n\n### Getting Started\n\nThe Data Spring command-line interface (CLI) can be used generate fake datasets from a provided json config file and output the results to a specified json file.\n\nInstall the package globally using yarn or npm.\n\n```shell\n# yarn\nyarn global add data-spring-cli\n\n#npm\nnpm install data-spring-cli -g\n```\n\nCreate a `config.json` file in your project that looks something like the following. **Tip:** You can run `data-spring config \u003cconfig-file\u003e` to generate a boilerplate config file.\n\nThe config file is how you define the shape of your dataset (i.e. creating fields and possible values for them).\n\n```json\nconst config = [\n  { \"id\": \"rec_id\", \"type\": \"id\" },\n  {\n    \"id\": \"date\",\n    \"type\": \"date\",\n    \"interval\": {\n      \"type\": \"month\",\n      \"recordsPerInterval\": 2,\n    },\n    \"min\": \"2020-01-01 00:00:00\",\n    \"max\": \"2020-12-01 00:00:00\",\n  },\n  {\n    \"id\": \"department\",\n    \"type\": \"string\",\n    \"values\": [\"Transportation\", \"Environment\", \"Health\", \"Parks\"],\n  },\n  {\n    \"id\": \"budget\",\n    \"type\": \"number\",\n    \"min\": 10000,\n    \"max\": 100000,\n  },\n];\n```\n\nNext, run the cli using your config file, passing the path to your config file as well as the path to where you want the data to be output.\n\n```shell\ndata-spring create \u003cconfig-file\u003e \u003coutput-file\u003e\n```\n\nThat's it! Open up the output file and you should see your generated dataset.\n\n### CLI Commands\n\n1. create\n2. config\n\n#### `create`\n\n```shell\ndata-spring create \u003cconfig-file\u003e \u003coutput-file\u003e\n```\n\n| Argument    | Description                  |\n| ----------- | ---------------------------- |\n| config-file | Path to the JSON config file |\n| output-file | Path to the JSON output file |\n\n#### `config`\n\n```shell\ndata-spring config \u003coutput-file\u003e\n```\n\n| Argument    | Description                             |\n| ----------- | --------------------------------------- |\n| output-file | Path for the generated config JSON file |\n\n#### Examples\n\n- Create a new dataset based on a config file in your current working directory. Output a the dataset in the same directory.\n\n```shell\ndata-spring create config.json output.json\n```\n\n#### `config`\n\n- Create a new config file based off of the starting template called `config.json` in the current working directory.\n\n```shell\ndata-spring config config.json\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftylerben%2Fdata-spring","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftylerben%2Fdata-spring","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftylerben%2Fdata-spring/lists"}