{"id":13724374,"url":"https://github.com/breck7/scrollsdk","last_synced_at":"2026-02-24T11:33:37.782Z","repository":{"id":42325099,"uuid":"92853941","full_name":"breck7/scrollsdk","owner":"breck7","description":"The code for Particles and Parsers, which Scroll is built on.","archived":false,"fork":false,"pushed_at":"2025-04-09T12:14:18.000Z","size":27285,"stargazers_count":389,"open_issues_count":6,"forks_count":17,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-08-24T18:12:16.802Z","etag":null,"topics":["scroll"],"latest_commit_sha":null,"homepage":"https://sdk.scroll.pub","language":"JavaScript","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/breck7.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"breck7","custom":"https://breckyunits.com/lab.html"}},"created_at":"2017-05-30T16:33:06.000Z","updated_at":"2025-05-21T09:04:16.000Z","dependencies_parsed_at":"2024-06-24T18:29:26.916Z","dependency_job_id":"a7cc0d83-82ad-4883-9a52-131bdf120436","html_url":"https://github.com/breck7/scrollsdk","commit_stats":{"total_commits":1046,"total_committers":11,"mean_commits":95.0909090909091,"dds":"0.21988527724665397","last_synced_commit":"de4ccd09f3113b0a70754bcbc85f6a18cf0adf68"},"previous_names":["publicdomaincompany/jtree","breck7/treenotation","treenotation/jtree"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/breck7/scrollsdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/breck7%2Fscrollsdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/breck7%2Fscrollsdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/breck7%2Fscrollsdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/breck7%2Fscrollsdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/breck7","download_url":"https://codeload.github.com/breck7/scrollsdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/breck7%2Fscrollsdk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29780604,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T10:45:18.109Z","status":"ssl_error","status_checked_at":"2026-02-24T10:45:09.911Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["scroll"],"created_at":"2024-08-03T01:01:55.918Z","updated_at":"2026-02-24T11:33:37.765Z","avatar_url":"https://github.com/breck7.png","language":"JavaScript","readme":"header.scroll\npermalink index.html\ntitle ScrollSDK\nprintTitle\n# Particles, Parsers, and other code for building Scroll\n\ncontainer 600px\n\n- Scroll Homepage\n https://scroll.pub\n- The World Wide Scroll\n https://wws.scroll.pub\n\n# Tools\n- Parser Designer\n designer/index.html\n- Particles Sandbox\n sandbox/index.html\n\n# Docs\n- SDK Release Notes\n releaseNotes.html\n- Particles Homepage\n https://particles.scroll.pub\n- Particles FAQ\n https://faq.scroll.pub\n- WWS Subreddit\n https://www.reddit.com/r/WorldWideScroll\n\n# Tests\nhttps://github.com/breck7/scrollsdk/actions/workflows/didTheTestsPass.yaml/badge.svg\n width 153px\n https://github.com/breck7/scrollsdk/actions/workflows/didTheTestsPass.yaml\n- ScrollSDK Node Tests\n https://github.com/breck7/scrollsdk/actions/workflows/didTheTestsPass.yaml\n- ScrollSDK Browser Unit Tests\n sandbox/test.html\n- ScrollSDK Browser Perf Tests\n sandbox/perfTests.html\n\n***\n\n? What is this repo?\nThis repo contains the code for Particle Syntax and the Parsers Programming Language. These are the core layers upon which Scroll is built.\n\n? Who is this for?\nThis repo is for advanced Scroll developers.\n\n? How do I build Parsers?\nYou can try the Parsers tutorial.\n parsersTutorial.html Parsers tutorial\n\n***\n\n# Writing Parsers\nThis ScrollSDK contains two implementations of Parsers: one in TypeScript and one in Parsers.\n\nYou write Parsers to extend Scroll. By creating Parsers with the SDK you get a parser, a type checker, syntax highlighting, autocomplete, a compiler, and virtual machine for executing your version of Scroll. The ScrollSDK also includes a simple web IDE for writing Parsers called Parser Designer.\n designer/index.html Parser Designer\n\nAt this point in time, to make your Parsers do very useful things, you also need to use another language that you know. The ScrollSDK lets you create new languages using just Scroll or Scroll + Javascript. Parsers can include code from any programming language, not just Javascript. Though at the moment only Scroll + Javascript is supported.\n\n***\n\n# Using the ScrollSDK\nThe ScrollSDK currently includes a number of libraries and apps to use (scripts in the \"products\" folder).\n\n# Basic Particles library for npm projects:\ncode\n const {Particle} = require(\"scrollsdk/products/Particle.js\")\n const particle = new Particle(\"hello world\")\n console.log(particle.asString)\n\n# Basic Particles Library + Parsers for the browser:\ncode\n \u003cscript src=\"../../products/Utils.browser.js\"\u003e\u003c/script\u003e\n \u003cscript src=\"../../products/Particle.browser.js\"\u003e\u003c/script\u003e\n \u003cscript src=\"../../products/Parsers.ts.browser.js\"\u003e\u003c/script\u003e\n\n## Particles Sandbox web app for exploring base Particles\ncode\n npm install .\n npm run local\n open http://localhost:3333/\n\n## Parser Designer web app for building new Parsers\ncode\n npm install .\n npm run local\n open http://localhost:3333/designer\n\n##  Build Tools\nIf you look at the source, you will also see a set of build tools (such as Builder and TypeScriptRewriter). These are currently undocumented and not recommended for external use.\n\n## Building all tools and running tests\ncode\n npm run build\n npm test\n\n***\n\n# Monorepo\nThe ScrollSDK is a monorepo. With on average over 1 major version released each month for the past 2.5 years, it would take a lot of overhead to constantly be updating 10+ different repositories and modules every month. Once we're more confident in the theory and best practices, it might make sense to break this repo into independent modules.\nThat being said, we despise unnecessary dependencies as much as anyone. If anyone wants to create some automated submodules built from the projects in this monorepo, to allow for consuming of a smaller subset of the code and dependencies in this module, feel free to do so.\n\n***\n\n## Visualization of the code base\n https://mango-dune-07a8b7110.1.azurestaticapps.net/?repo=breck7%2Fscrollsdk Visualization\nimage images/diagram.jpg\n\n***\n\n# Development Status\nAll breaking changes are mentioned in the releaseNotes. We follow semantic versioning, so breaking changes should not happen if you stay on the same major version.\n releaseNotes.html releaseNotes\n\n***\n\n# Particles Libraries in Other Languages\nIf you build a Particles library/SDK in another language, let us know and we'll add a link.\n\nIf you are working on a Particles library in a new host language, feel free to post an issue or ask for help in the WWS subreddit.\n https://www.reddit.com/r/WorldWideScroll WWS subreddit\n\n***\n\n## How to bump versions\ncode\n npm run updateVersion NEW_NUMBER\n\n***\n\n# Former Name\nParticles was originally called Tree Notation. Parsers was originally called Grammar.\n\n***\n\n# Alternatives Considered\nThis is the first Particles and Parsers libraries in existence, so there were no alternative implementations. Note and Space were predecessors to Particles. If a better alternative low level syntax to Particles is possible, it has yet to be discovered.\n\nAll that said, the important part of this repo is not the code but the design patterns. Particles is very simple, and you can implement the patterns contained here in your own code without using this library. In fact, that is often the best way to use Particles!\n\n## Editing in Sublime Text\nIt is helpful to set `\"goto_anything_exclude_gitignore\": true` to ignore files in gitignore. Read more here.\n https://breckyunits.com/code/my-sublime-setttings.html here\n\n# ❤️ Public Domain ❤️\n\nfooter.scroll\n","funding_links":["https://github.com/sponsors/breck7","https://breckyunits.com/lab.html"],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbreck7%2Fscrollsdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbreck7%2Fscrollsdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbreck7%2Fscrollsdk/lists"}