{"id":21095622,"url":"https://github.com/johnsusek/framework-bridge","last_synced_at":"2026-04-18T19:32:44.710Z","repository":{"id":151862986,"uuid":"422714666","full_name":"johnsusek/framework-bridge","owner":"johnsusek","description":"Swift JSExport extensions for macOS system frameworks","archived":false,"fork":false,"pushed_at":"2021-12-13T13:27:37.000Z","size":1198,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-26T04:03:36.366Z","etag":null,"topics":["appkit","javascriptcore","jsexport","macos","swift"],"latest_commit_sha":null,"homepage":"","language":"Swift","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/johnsusek.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2021-10-29T21:15:02.000Z","updated_at":"2024-07-07T17:34:52.000Z","dependencies_parsed_at":"2023-05-12T22:45:27.800Z","dependency_job_id":null,"html_url":"https://github.com/johnsusek/framework-bridge","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/johnsusek/framework-bridge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnsusek%2Fframework-bridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnsusek%2Fframework-bridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnsusek%2Fframework-bridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnsusek%2Fframework-bridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/johnsusek","download_url":"https://codeload.github.com/johnsusek/framework-bridge/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnsusek%2Fframework-bridge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31982659,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T17:30:12.329Z","status":"ssl_error","status_checked_at":"2026-04-18T17:29:59.069Z","response_time":103,"last_error":"SSL_read: 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":["appkit","javascriptcore","jsexport","macos","swift"],"created_at":"2024-11-19T22:28:04.513Z","updated_at":"2026-04-18T19:32:44.687Z","avatar_url":"https://github.com/johnsusek.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# framework-bridge\n\nSwift [JSExport](https://developer.apple.com/documentation/javascriptcore/jsexport) [extensions](https://docs.swift.org/swift-book/LanguageGuide/Extensions.html) for macOS system frameworks.\n\n## Progress\n[Foundation](https://github.com/johnsusek/framework-bridge/tree/master/modules/Foundation)\u003cbr\u003e\n![155/259 classes](https://progress-bar.dev/155?\u0026suffix=/259%20classes\u0026scale=259\u0026width=320)\n\u003cbr\u003e\n[AppKit](https://github.com/johnsusek/framework-bridge/tree/master/modules/AppKit)\u003cbr\u003e\n![232/269 classes](https://progress-bar.dev/232?\u0026suffix=/259%20classes\u0026scale=269\u0026width=320)\n\n## Usage\n\nSwift\n```swift\nimport JavaScriptCore\nimport FrameworkBridge\nlet context = JSContext()!\ncontext.bridgeClass(\"NSSound\")\n```\n\nJavascript\n```javascript\nNSSound({ named: \"Chirp\" }).play();\n```\n\n## Tests\n\nTest compilation of JSExport classes:\n\n`./test/compilation/compilation.sh`\n\nTest runtime registration of classes:\n\n`./test/registration/registration.sh`\n\n## Dev Tools\n\n### gen-headers\n\nGenerates swift headers for AppKit classes. This data is used by ast-builder\n\n`node index.js ../../metadata/frameworks.json ../../tmp/headers`\n\n### ast-builder\n\nParses swift headers into an ast and store in json.\n\n`swift run ast-builder ../../metadata/frameworks.json ../../tmp/headers ../../tmp/ast`\n\n### attribute-list-builder\n\nParses swift headers into a list of attributes (i.e. unavailable, renamed, etc).\n\nThis data is used by macos-metadata-builder to build the swift jsexport\nclasses (specifically to hide unavailable or obsoleted decls).\n\nThis also generates aliases.json and structs.json.\n\n`node index.js ../../metadata/frameworks.json ../../tmp/ast ../../tmp/attributes`\n\n### macos-metadata-generator\n\nGenerates swift jsexport classes; uses data generated from the above tools.\n\nSee README in [macos-metadata-generator](https://github.com/johnsusek/macos-metadata-generator) repo for more details.\n\n# Dev\n\n* Edit metadata/frameworks.json if you are adding a new framework\n* Run gen-header, ast-builder and attribute-list-builder to populate tmp/ folders\n* Run macos-metadata-generator to populate tmp/swift/\n* Add classes to classesToRegister.json and registration test app\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnsusek%2Fframework-bridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohnsusek%2Fframework-bridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnsusek%2Fframework-bridge/lists"}