0.8.0
This release introduces a few enhancements and deprecations. Namely, JSValueConstructible
and JSValueConvertible
were renamed to ConstructibleFromJSValue
and ConvertibleToJSValue
respectively. The old names are deprecated, and you should move away from using the old names in your code. Additionally, JavaScriptKit now requires the most recent 5.3 and development toolchains, but thanks to this it no longer uses unsafe flags, which prevented building other libraries depending on JavaScriptKit on other platforms.
The main user-visible enhancement is that now force casts are no longer required in client code. That is, we now allow this
let document = JSObject.global.document
let foundDivs = document.getElementsByTagName("div")
in addition to the previously available explicit style with force unwrapping:
let document = JSObject.global.document.object!
let foundDivs = document.getElementsByTagName!("div").object!
Note that the code in the first example is still dynamically typed. The Swift compiler won't warn you if you misspell names of properties or cast them to a wrong type. This feature is purely additive, and is added for convenience. You can still use force unwraps in your code interfacing with JavaScriptKit. If you're interested in a statically-typed DOM API, we recommend having a look at the DOMKit library, which is currently in development.
Lastly, JSError
now conforms to the JSBridgedClass
protocol, which makes it easier to integrate with idiomatic Swift code.
Closed issues:
- Errors building example: undefined symbols (#95)
- Documentation website is broken (#93)
- Rename
JSValueConstructible
andJSValueConvertible
(#87) - Build fails with the unsafe flags error (#6)
Merged pull requests:
- Update example code in
README.md
(#100) via @MaxDesiatov - Update toolchain version, script, and
README.md
(#96) via @MaxDesiatov - [Proposal] Add unsafe convenience methods for JSValue (#98) via @kateinoigakukun
- Remove all unsafe linker flags from Package.swift (#91) via @kateinoigakukun
- Sync package.json and package-lock.json (#90) via @kateinoigakukun
- Rename JSValueConvertible/Constructible/Codable (#88) via @j-f1
- Bump @actions/core from 1.2.2 to 1.2.6 in /ci/perf-tester (#89) via @dependabot[bot]
- Make
JSError
conform toJSBridgedClass
(#86) via @MaxDesiatov