{"id":19372541,"url":"https://github.com/sproutcore/extensions","last_synced_at":"2026-06-11T22:31:19.084Z","repository":{"id":3594959,"uuid":"4658932","full_name":"sproutcore/extensions","owner":"sproutcore","description":"High quality extensions to the SproutCore framework","archived":false,"fork":false,"pushed_at":"2012-06-14T04:37:27.000Z","size":104,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-24T14:52:48.640Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/sproutcore.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":"2012-06-14T03:30:27.000Z","updated_at":"2013-10-12T20:49:54.000Z","dependencies_parsed_at":"2022-07-21T23:02:20.845Z","dependency_job_id":null,"html_url":"https://github.com/sproutcore/extensions","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sproutcore/extensions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sproutcore%2Fextensions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sproutcore%2Fextensions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sproutcore%2Fextensions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sproutcore%2Fextensions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sproutcore","download_url":"https://codeload.github.com/sproutcore/extensions/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sproutcore%2Fextensions/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34221150,"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-06-11T02:00:06.485Z","response_time":57,"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":[],"created_at":"2024-11-10T08:23:52.983Z","updated_at":"2026-06-11T22:31:19.068Z","avatar_url":"https://github.com/sproutcore.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SproutCore Extensions\n\nThis repository contains extensions to the SproutCore framework.  To use an\nextension within your project, clone this repository into the frameworks\ndirectory and include the desired extensions in your Buildfile.\n\nFor example,\n\n    config :my_app, :required =\u003e [:sproutcore, :'extensions/multiplexed_data_source']\n\n## Multiplexed Data Source Extension\n\n* Path: 'extensions/multiplexed_data_source'\n* Requires: 'sproutcore/datastore'\n* Original Author: Tim Evans\n\nA multiplexed data source will forward data to a number of registered\nSC.DataSourceDelegates that accept the SC.Record type provided.\nThis should be used when you have a single channel that has a multitude of\nrecord types that are non-trivial to transform into data hashes suitable for\nthe store.\n\nFor example,\n\n    MyApp.dataSource = SC.MultiplexedDataSource.create({\n      delegates: 'presence chat muc roster vcard'.w(),\n\n      presence: MyApp.PresenceDataSourceDelegate,\n      chat: MyApp.MessageDataSourceDelegate.extend({ type: 'chat' }),\n      muc: MyApp.MultiUserChatSourceDelegate,\n      roster: MyApp.RosterItemDataSourceDelegate,\n      vcard: MyApp.VCardTempDataSourceDelegate\n    });\n\n    MyApp.store.set('dataSource', MyApp.dataSource);\n\nThe order of the delegates is irrelevant. Queries and CRUD actions will\nbe forwarded to the apropriated delegate(s).\n\nAlternatively, you can use a more jQuery-like API for defining your data\nsources:\n\n    MyApp.dataSource = SC.MultiplexedDataSource.create()\n      .from(MyApp.PresenceDataSourceDelegate)\n      .from(MyApp.MessageDataSourceDelegate.extend({ type: 'chat' }))\n      .from(MyApp.MultiUserChatSourceDelegate)\n      .from(MyApp.RosterItemDataSourceDelegate)\n      .from(MyApp.VCardTempDataSourceDelegate)\n\n    MyApp.store.set('dataSource', MyApp.dataSource);\n\nA similar API can be used before creation time that allows SC.DataSourceDelegates\nto be wired to their parent SC.DataSource via the `plugin` method.\n\nThe child delegates have direct access to the parent SC.MultiplexedDataSource,\nwhich acts like a hub where all common functions and properties should be\nplaced.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsproutcore%2Fextensions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsproutcore%2Fextensions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsproutcore%2Fextensions/lists"}