{"id":13550745,"url":"https://github.com/glimmerjs/glimmer-vm","last_synced_at":"2025-05-12T13:12:34.558Z","repository":{"id":2573339,"uuid":"42467001","full_name":"glimmerjs/glimmer-vm","owner":"glimmerjs","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-30T14:08:50.000Z","size":32123,"stargazers_count":1141,"open_issues_count":155,"forks_count":191,"subscribers_count":42,"default_branch":"main","last_synced_at":"2025-04-30T21:02:21.672Z","etag":null,"topics":["emberjs","glimmerjs","hacktoberfest","typescript"],"latest_commit_sha":null,"homepage":"","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/glimmerjs.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,"zenodo":null}},"created_at":"2015-09-14T17:59:26.000Z","updated_at":"2025-04-29T16:24:17.000Z","dependencies_parsed_at":"2023-12-28T17:30:05.007Z","dependency_job_id":"1cfe2e91-d542-4404-8115-61c7755e7ae2","html_url":"https://github.com/glimmerjs/glimmer-vm","commit_stats":{"total_commits":3649,"total_committers":155,"mean_commits":23.54193548387097,"dds":0.8775006851192108,"last_synced_commit":"f1108ef05a2a10aac6e96ced016ed7cd4e4e42d5"},"previous_names":["tildeio/glimmer"],"tags_count":584,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glimmerjs%2Fglimmer-vm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glimmerjs%2Fglimmer-vm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glimmerjs%2Fglimmer-vm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glimmerjs%2Fglimmer-vm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/glimmerjs","download_url":"https://codeload.github.com/glimmerjs/glimmer-vm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251837016,"owners_count":21651754,"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":["emberjs","glimmerjs","hacktoberfest","typescript"],"created_at":"2024-08-01T12:01:37.013Z","updated_at":"2025-05-12T13:12:31.544Z","avatar_url":"https://github.com/glimmerjs.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# Status [![Build Status](https://travis-ci.org/glimmerjs/glimmer-vm.svg?branch=main)](https://travis-ci.org/glimmerjs/glimmer-vm) [![BrowserStack Status](https://www.browserstack.com/automate/badge.svg?badge_key=cG1zSVBpNk5nTWxDcGJ0YkVkQjZsM1YrRzFvQW9GdGlhQm5WMFh1QUZXWT0tLXpXTVRWMXNMRW03MmxUZVpLUy85YkE9PQ==--b6c04579b1314f752eacc8bfff1a03574b8bdc8d%)](https://www.browserstack.com/automate/public-build/cG1zSVBpNk5nTWxDcGJ0YkVkQjZsM1YrRzFvQW9GdGlhQm5WMFh1QUZXWT0tLXpXTVRWMXNMRW03MmxUZVpLUy85YkE9PQ==--b6c04579b1314f752eacc8bfff1a03574b8bdc8d%)\n\n\nGlimmer is a flexible, low-level rendering pipeline for building a \"live\" DOM\nfrom [Handlebars][handlebars] templates that can subsequently be updated cheaply\nwhen data changes.\n\nIt is written in [TypeScript][typescript].\n\nThe project is still going through rapid changes at the moment. For the time\nbeing, please refer the [architecture overview][guides] for more information.\n\n# Building Glimmer\n\n1. Ensure that [Node.js](http://nodejs.org/) is installed.\n2. Run `npm install` or `yarn install` to ensure the required dependencies are installed.\n3. Run `npm run build` to build each Glimmer package. The builds will be placed in the `dist/` directory.\n\nGlimmer's packages are only built when running `npm run build` (or `ember build --env production`).\nIf you run `ember build` without setting the production environment, `dist/`\nwill only contain test assets.\n\nIf you want to use the built packages in other projects, you can use `npm run\nyarn:link` to execute the `yarn link` command inside each built package. (You\nmust build the packages first with `npm run build`).\n\n# How to Run Tests\n\n## Via Ember CLI\n\n1. Run: `ember test --server`\n\nEmber CLI is a CI tool, so it will run tests as you change files.\n\n## On the console with PhantomJS\n\n1. Run `npm test`.\n\n## In a browser\n\n1. Run `npm start`.\n2. Visit \u003chttp://localhost:7357/tests/\u003e.\n\n# TypeScript Notes\n\n## \"Friend\" Properties and Methods\n\nIn TypeScript, `private` and `protected` refer to the class itself\n(and its subclasses).\n\nSometimes, you want to add a property or method that shouldn't be\nconsidered part of the external API (for other packages or Ember)\nbut is expected to be used as part of an internal protocol.\n\nIn that case, it's ok to mark the property as `private` or\n`protected` and use `['property']` syntax to access the property\ninside of the same package.\n\n```js\nclass Layout {\n  private template: Template;\n}\n\nfunction compile(layout: Layout, environment: Environment): CompiledBlock {\n  return layout['template'].compile(environment);\n}\n```\n\nThe idea is that the `compile` function might as well be a private method\non the class, but because the function leaks into untyped code, we want\nto be more careful and avoid exporting it.\n\nOther use-cases might include protocols where a cluster of classes is\nintended to work together internally, but it's difficult to describe\nas a single class hierarchy.\n\nThis is a semi-blessed workflow according to the TypeScript team, and\nVisual Studio Code (and tsc) correctly type check uses of indexed\nproperties, and provide autocompletion, etc.\n\n**You should not treat use of `['foo']` syntax as license to access\nprivate properties outside of the package.**\n\n[handlebars]: http://handlebarsjs.com\n[typescript]: http://www.typescriptlang.org\n[guides]: ./guides/01-introduction.md\n\n\n---\n\nCross-browser testing provided by:\n\n\u003ca href=\"http://browserstack.com\"\u003e\u003cimg height=\"70\" src=\"https://p3.zdusercontent.com/attachment/1015988/PWfFdN71Aung2evRkIVQuKJpE?token=eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0..aUrNFb8clSXsFwgw5BUTcg.IJr5piuCen7PmSSBHSrOnqM9K5YZfxX3lvbp-5LCqoKOi4CjjgdA419iqjofs0nLtm26FMURvZ8JRTuKB4iHer6lGu5f8dXHtIkYAHjP5fXDWkl044Yg2mSdrhF6uPy62GdlBYoYxwvgkNrac8nN_In8GY-qOC7bYmlZyJT7tsTZUTYbNMQiXS86YA5LgdCEWzWreMvc3C6cvZtVXIrcVgpkroIhvsTQPm4vQA-Uq6iCbTPA4oX5cpEtMtrlg4jYBnnAE4BTw5UwU_dY83ep5g.7wpc1IKv0rSRGsvqCG_q3g\" alt=\"BrowserStack\"\u003e\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglimmerjs%2Fglimmer-vm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fglimmerjs%2Fglimmer-vm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglimmerjs%2Fglimmer-vm/lists"}