Compare commits

..

258 Commits

Author SHA1 Message Date
Muhammad Azeez
51a6aa313f feat: add support for manifest 2023-09-13 17:35:32 +03:00
Muhammad Azeez
c676cf1924 try to fix the crash 2023-09-12 17:39:12 +03:00
zach
de19168540 feat(ocaml): add missing flags to extism-call executable (#451)
`extism-call` is a test program using the OCaml SDK, this PR adds the
missing flags to make it a little more useful for general testing/
2023-09-11 20:12:34 -07:00
Benjamin Eckel
2bf5ac75c0 feat(ruby): Host functions and clean up FFI code (#442)
Adds support for host functions and cleans up some of the FFI code.


## API

To make a host function, you can pass a proc to `Function::new`:

```ruby
func = proc do |current_plugin, inputs, outputs, user_data|
  input = current_plugin.input_as_bytes(inputs.first)
  current_plugin.return_string(outputs.first, "#{input} #{user_data}")
end
f = Extism::Function.new('transform_string', [Extism::ValType::I64], [Extism::ValType::I64], func, 'My User Data')
plugin = Extism::Plugin.new(host_manifest, [f], true)
result = plugin.call('reflect_string', 'Hello, World!')
assert_equal result, 'Hello, World! My User Data'
```

If your function is in a module or a class, you can use
`method(name).to_proc`. Example:

```ruby
module Test
  def self.my_function(current_plugin, inputs, outputs, user_data)
    input = current_plugin.input_as_bytes(inputs.first)
    current_plugin.return_string(outputs.first, "#{input} #{user_data}")
  end
end

func = Test.method(:my_function).to_proc
f = Extism::Function.new('my_function', [Extism::ValType::I64], [Extism::ValType::I64], func, 'My User Data')
```


`current_plugin` is of the type CurrentPlugin which has some helpful
methods:

* `CurrentPlugin#memory_at_offset(int)` returns a `Memory` object given
a memory pointer
* `CurrentPlugin#free(Memory)` frees the memory
* `CurrentPlugin#alloc(int)` allocates new memory and returns a `Memory`
* `CurrentPlugin#input_as_bytes(Value)` returns the bytes for the given
input param
* `CurrentPlugin#return_bytes(Value, Array)` Sets the array of bytes to
the return for the given output value
* `CurrentPlugin#input_as_bytes(Value, String)` Sets the string to the
return for the given output value
2023-09-11 18:21:11 -05:00
dependabot[bot]
3e92b05db0 chore(deps-dev): Bump typedoc from 0.25.0 to 0.25.1 in /node (#448)
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.25.0 to
0.25.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/TypeDoc/releases">typedoc's
releases</a>.</em></p>
<blockquote>
<h2>v0.25.1</h2>
<h3>Features</h3>
<ul>
<li>Added <code>stripYamlFrontmatter</code> config option to remove YAML
frontmatter from README.md, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2381">#2381</a>.</li>
<li>Added <code>--excludeCategories</code> config option to remove
reflections present in any excluded category, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/1407">#1407</a>.</li>
<li>If no tsconfig.json file is present, TypeDoc will now attempt to
compile without setting any compiler options, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2304">#2304</a>.</li>
<li>Navigation is now written to a JS file and built dynamically, which
significantly decreases document generation time
with large projects and also provides large space benefits. Themes may
now override <code>DefaultTheme.buildNavigation</code>
to customize the displayed navigation tree, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2287">#2287</a>.
Note: This change renders <code>navigation.fullTree</code> obsolete. If
you set it, TypeDoc will warn that it is being ignored.
It will be removed in v0.26.</li>
<li>The search index is now compressed before writing, which reduces
most search index sizes by ~5-10x.</li>
<li>TypeDoc will now attempt to cache icons when
<code>DefaultThemeRenderContext.icons</code> is overwritten by a custom
theme.
Note: To perform this optimization, TypeDoc relies on
<code>DefaultThemeRenderContext.iconCache</code> being rendered within
each page. TypeDoc does it in the <code>defaultLayout</code>
template.</li>
<li>Cache URL derivation during generation, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2386">#2386</a>.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><code>@property</code> now works as expected if used to override a
method's documentation.</li>
<li>Deprecated functions/methods are now correctly rendered with a
struck-out name.</li>
<li><code>--watch</code> mode works again, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2378">#2378</a>.</li>
<li>Improved support for optional names within JSDoc types, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2384">#2384</a>.</li>
<li>Fixed duplicate rendering of reflection flags on signature
parameters, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2385">#2385</a>.</li>
<li>TypeDoc now handles the <code>intrinsic</code> keyword if TS
intrinsic types are included in documentation.</li>
<li><code>--exclude</code> is now respected when expanding globs in
entry points, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2376">#2376</a>.</li>
</ul>
<h3>Thanks!</h3>
<ul>
<li><a
href="https://github.com/ajesshope"><code>@​ajesshope</code></a></li>
<li><a
href="https://github.com/HemalPatil"><code>@​HemalPatil</code></a></li>
<li><a href="https://github.com/hrueger"><code>@​hrueger</code></a></li>
<li><a
href="https://github.com/typhonrt"><code>@​typhonrt</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md">typedoc's
changelog</a>.</em></p>
<blockquote>
<h2>v0.25.1 (2023-09-04)</h2>
<h3>Features</h3>
<ul>
<li>Added <code>stripYamlFrontmatter</code> config option to remove YAML
frontmatter from README.md, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2381">#2381</a>.</li>
<li>Added <code>--excludeCategories</code> config option to remove
reflections present in any excluded category, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/1407">#1407</a>.</li>
<li>If no tsconfig.json file is present, TypeDoc will now attempt to
compile without setting any compiler options, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2304">#2304</a>.</li>
<li>Navigation is now written to a JS file and built dynamically, which
significantly decreases document generation time
with large projects and also provides large space benefits. Themes may
now override <code>DefaultTheme.buildNavigation</code>
to customize the displayed navigation tree, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2287">#2287</a>.
Note: This change renders <code>navigation.fullTree</code> obsolete. If
you set it, TypeDoc will warn that it is being ignored.
It will be removed in v0.26.</li>
<li>The search index is now compressed before writing, which reduces
most search index sizes by ~5-10x.</li>
<li>TypeDoc will now attempt to cache icons when
<code>DefaultThemeRenderContext.icons</code> is overwritten by a custom
theme.
Note: To perform this optimization, TypeDoc relies on
<code>DefaultThemeRenderContext.iconCache</code> being rendered within
each page. TypeDoc does it in the <code>defaultLayout</code>
template.</li>
<li>Cache URL derivation during generation, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2386">#2386</a>.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><code>@property</code> now works as expected if used to override a
method's documentation.</li>
<li>Deprecated functions/methods are now correctly rendered with a
struck-out name.</li>
<li><code>--watch</code> mode works again, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2378">#2378</a>.</li>
<li>Improved support for optional names within JSDoc types, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2384">#2384</a>.</li>
<li>Fixed duplicate rendering of reflection flags on signature
parameters, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2385">#2385</a>.</li>
<li>TypeDoc now handles the <code>intrinsic</code> keyword if TS
intrinsic types are included in documentation.</li>
<li><code>--exclude</code> is now respected when expanding globs in
entry points, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2376">#2376</a>.</li>
</ul>
<h3>Thanks!</h3>
<ul>
<li><a
href="https://github.com/ajesshope"><code>@​ajesshope</code></a></li>
<li><a
href="https://github.com/HemalPatil"><code>@​HemalPatil</code></a></li>
<li><a href="https://github.com/hrueger"><code>@​hrueger</code></a></li>
<li><a
href="https://github.com/typhonrt"><code>@​typhonrt</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5e4c79dcf4"><code>5e4c79d</code></a>
Update changelog for release</li>
<li><a
href="265bf4963e"><code>265bf49</code></a>
Bump version to 0.25.1</li>
<li><a
href="0985616f55"><code>0985616</code></a>
Handle projects without tsconfig files</li>
<li><a
href="bcf3e04263"><code>bcf3e04</code></a>
Add excludeCategories option</li>
<li><a
href="653b2814f8"><code>653b281</code></a>
Respect --exclude when expanding globs in entry points</li>
<li><a
href="a6823cf288"><code>a6823cf</code></a>
Cache URL derivation during generation</li>
<li><a
href="1f88a1f87e"><code>1f88a1f</code></a>
Compress search index too</li>
<li><a
href="d68ca2ab5d"><code>d68ca2a</code></a>
Update changelog</li>
<li><a
href="dc4a16da15"><code>dc4a16d</code></a>
feat: <code>stripYamlFrontmatter</code> option (<a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2387">#2387</a>)</li>
<li><a
href="67ee6acccf"><code>67ee6ac</code></a>
Dynamically load navigation</li>
<li>Additional commits viewable in <a
href="https://github.com/TypeStrong/TypeDoc/compare/v0.25.0...v0.25.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typedoc&package-manager=npm_and_yarn&previous-version=0.25.0&new-version=0.25.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-11 13:35:29 -05:00
dependabot[bot]
4caee2de1a chore(deps-dev): Bump @types/node from 20.5.9 to 20.6.0 in /node (#449)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 20.5.9 to 20.6.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.5.9&new-version=20.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-11 13:35:18 -05:00
dependabot[bot]
5339f3ca1e chore(deps-dev): Update minitest requirement from ~> 5.19.0 to ~> 5.20.0 in /ruby (#450)
Updates the requirements on
[minitest](https://github.com/minitest/minitest) to permit the latest
version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/minitest/minitest/blob/master/History.rdoc">minitest's
changelog</a>.</em></p>
<blockquote>
<p>=== 5.20.0 / 2023-09-06</p>
<ul>
<li>
<p>1 minor enhancement:</p>
<ul>
<li>Optionally allow autorun exit hook to remain active in forked child.
(casperisfine)</li>
</ul>
</li>
</ul>
<p>=== 5.19.0 / 2023-07-26</p>
<ul>
<li>
<p>2 minor enhancements:</p>
<ul>
<li>Add metadata lazy accessor to Runnable / Result. (matteeyah)</li>
<li>Only load minitest/unit (aka ancient MiniTest compatibility layer)
if ENV[&quot;MT_COMPAT&quot;]</li>
</ul>
</li>
<li>
<p>1 bug fix:</p>
<ul>
<li>Minitest::TestTask enthusiastically added itself to default.
(ParadoxV5)</li>
</ul>
</li>
</ul>
<p>=== 5.18.1 / 2023-06-16</p>
<ul>
<li>
<p>3 bug fixes:</p>
<ul>
<li>Avoid extra string allocations when filtering tests.
(tenderlove)</li>
<li>Only mention deprecated ENV['N'] if it is an integer string.</li>
<li>Push up test_order to Minitest::Runnable to fix minitest/hell.
(koic)</li>
</ul>
</li>
</ul>
<p>=== 5.18.0 / 2023-03-04</p>
<ul>
<li>
<p>2 major enhancements:</p>
<ul>
<li>Added assert_pattern &amp; refute_pattern for pattern matching.
(flavorjones)</li>
<li>Added matching must_pattern_match &amp; wont_pattern_match to
minitest/spec.</li>
</ul>
</li>
<li>
<p>1 bug fix:</p>
<ul>
<li>Support the new message format of NameError in Ruby 3.3 (mame)</li>
</ul>
</li>
</ul>
<p>=== 5.17.0 / 2022-12-31</p>
<ul>
<li>
<p>1 minor enhancement:</p>
<ul>
<li>Refactor setup hooks into a SETUP_METHODS constant. (MSP-Greg)</li>
</ul>
</li>
<li>
<p>3 bug fixes:</p>
<ul>
<li>Fix kwargs for Mock calls to delegator. (blowmage)</li>
<li>Fix kwargs for expectations. (bobmazanec, blowmage)</li>
<li>Remove check for .b method. (tenderlove)</li>
</ul>
</li>
</ul>
<p>=== 5.16.3 / 2022-08-17</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="6719ad8d8d"><code>6719ad8</code></a>
prepped for release</li>
<li><a
href="780dc155b0"><code>780dc15</code></a>
+ Optionally allow autorun exit hook to remain active in forked child.
(caspe...</li>
<li><a
href="ed88d196bc"><code>ed88d19</code></a>
Fixed skip messages for non-forking systems. (casperisfine)</li>
<li>See full diff in <a
href="https://github.com/minitest/minitest/compare/v5.19.0...v5.20.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-11 13:35:06 -05:00
zach
26f70e3a30 feat: Add EXTISM_ENABLE_WASI_OUTPUT to inherit stdout/stderr (#446)
@mhmd-azeez pointed out that exposing an option like this can be very
useful for debugging if the program is expecting to run in a full WASI
environment.
2023-09-06 08:37:27 -07:00
Chris Dickinson
3ca661546d fix: toml manifests load the extism runtime (#447)
Just getting my feet wet with the codebase a little bit! I noticed that
TOML manifests weren't loading the extism runtime by default while doing
a walkthrough. This commit ensures the runtime is loaded and adds a
test.

Also, fix a tiny typo in a comment.
2023-09-05 16:36:16 -07:00
dependabot[bot]
d85bae6187 chore(deps-dev): Bump @types/node from 20.5.7 to 20.5.9 in /node (#444)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 20.5.7 to 20.5.9.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.5.7&new-version=20.5.9)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-04 18:08:02 -05:00
dependabot[bot]
8a19142524 chore(deps-dev): Bump prettier from 3.0.2 to 3.0.3 in /node (#445)
Bumps [prettier](https://github.com/prettier/prettier) from 3.0.2 to
3.0.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/releases">prettier's
releases</a>.</em></p>
<blockquote>
<h2>3.0.3</h2>
<p>🔗 <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md#303">Changelog</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md">prettier's
changelog</a>.</em></p>
<blockquote>
<h1>3.0.3</h1>
<p><a
href="https://github.com/prettier/prettier/compare/3.0.2...3.0.3">diff</a></p>
<h4>Add <code>preferUnplugged: true</code> to <code>package.json</code>
(<a
href="https://redirect.github.com/prettier/prettier/pull/15169">#15169</a>
by <a href="https://github.com/fisker"><code>@​fisker</code></a> and <a
href="https://github.com/so1ve"><code>@​so1ve</code></a>)</h4>
<p>Prettier v3 uses dynamic imports, user <a
href="https://redirect.github.com/yarnpkg/berry/pull/5411#issuecomment-1523502224">will
need to unplug Prettier</a> when Yarn's PnP mode is enabled, add <a
href="https://yarnpkg.com/configuration/manifest#preferUnplugged"><code>preferUnplugged:
true</code></a> to <code>package.json</code>, so Yarn will install
Prettier as unplug by default.</p>
<h4>Support shared config that forbids <code>require()</code> (<a
href="https://redirect.github.com/prettier/prettier/pull/15233">#15233</a>
by <a href="https://github.com/fisker"><code>@​fisker</code></a>)</h4>
<p>If an external shared config package is used, and the package
<code>exports</code> don't have <code>require</code> or
<code>default</code> export.</p>
<p>In Prettier 3.0.2 Prettier fails when attempt to
<code>require()</code> the package, and throws an error.</p>
<pre lang="text"><code>Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: No
&quot;exports&quot; main defined in &lt;packageName&gt;/package.json
</code></pre>
<h4>Allow argument of <code>require()</code> to break (<a
href="https://redirect.github.com/prettier/prettier/pull/15256">#15256</a>
by <a href="https://github.com/fisker"><code>@​fisker</code></a>)</h4>
<!-- raw HTML omitted -->
<pre lang="jsx"><code>// Input
const plugin = require(
  global.STANDALONE
    ? path.join(__dirname, &quot;../standalone.js&quot;)
    : path.join(__dirname, &quot;..&quot;)
);
<p>// Prettier 3.0.2
const plugin = require(global.STANDALONE
? path.join(__dirname, &quot;../standalone.js&quot;)
: path.join(__dirname, &quot;..&quot;));</p>
<p>// Prettier 3.0.3
const plugin = require(
global.STANDALONE
? path.join(__dirname, &quot;../standalone.js&quot;)
: path.join(__dirname, &quot;..&quot;)
);
</code></pre></p>
<h4>Do not print trailing commas in arrow function type parameter lists
in <code>ts</code> code blocks (<a
href="https://redirect.github.com/prettier/prettier/pull/15286">#15286</a>
by <a
href="https://github.com/sosukesuzuki"><code>@​sosukesuzuki</code></a>)</h4>
<!-- raw HTML omitted -->
<pre lang="md"><code>&lt;!-- Input --&gt;
```ts
const foo = &lt;T&gt;() =&gt; {}
```
&lt;/tr&gt;&lt;/table&gt; 
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d5f31710b2"><code>d5f3171</code></a>
Release 3.0.3</li>
<li><a
href="a35008fb0a"><code>a35008f</code></a>
Support shared config that forbids <code>require()</code> (<a
href="https://redirect.github.com/prettier/prettier/issues/15233">#15233</a>)</li>
<li><a
href="1ce97d13a3"><code>1ce97d1</code></a>
Support TypeScript 5.2 <code>using</code> / <code>await using</code>
declaration (<a
href="https://redirect.github.com/prettier/prettier/issues/15321">#15321</a>)</li>
<li><a
href="a73cfa0ec4"><code>a73cfa0</code></a>
Fix build script <code>--report</code> option (<a
href="https://redirect.github.com/prettier/prettier/issues/15323">#15323</a>)</li>
<li><a
href="941c6b3a3c"><code>941c6b3</code></a>
Minor refactor to <code>getSupportedFilesGlob</code> (<a
href="https://redirect.github.com/prettier/prettier/issues/15319">#15319</a>)</li>
<li><a
href="f6c9e9b0b8"><code>f6c9e9b</code></a>
Assert uniqueness in language properties (<a
href="https://redirect.github.com/prettier/prettier/issues/15320">#15320</a>)</li>
<li><a
href="288ea7e911"><code>288ea7e</code></a>
chore(deps): update dependency webpack to v5.88.2 (<a
href="https://redirect.github.com/prettier/prettier/issues/15147">#15147</a>)</li>
<li><a
href="6654451d9e"><code>6654451</code></a>
chore(deps): update dependency webpack to v5.88.2 (<a
href="https://redirect.github.com/prettier/prettier/issues/15148">#15148</a>)</li>
<li><a
href="d05964460d"><code>d059644</code></a>
chore(deps): update dependency fast-glob to v3.3.1 (<a
href="https://redirect.github.com/prettier/prettier/issues/15001">#15001</a>)</li>
<li><a
href="423011dcab"><code>423011d</code></a>
Minor refactor to <code>expandPatterns</code> (<a
href="https://redirect.github.com/prettier/prettier/issues/15317">#15317</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/prettier/prettier/compare/3.0.2...3.0.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=prettier&package-manager=npm_and_yarn&previous-version=3.0.2&new-version=3.0.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-04 18:07:54 -05:00
zach
ddcbeec3de refactor!: Remove context, unify extism-runtime and extism crates (#421)
- Removes the `ExtismContext` type from runtime and all SDKs
- Removed SDK functions: `extism_context_new`, `extism_context_reset`,
`extism_context_free`
  - All SDKs have been updated, but there are still some TODOs below 
- Removes `extism_plugin_update`
- Plugins can no longer be updated - a new plugin should be created
instead
- Adds `extism_plugin_id` to uniquely identify plugins
- Merges the `extism-runtime` and `extism` crates (there is no longer an
`extism-runtime` crate)
- Makes `extism::Manifest` an alias for `extism_manifest::Manifest`
instead of a distinct type
- Adds `MemoryHandle` type to SDKs to refer to blocks of Extism memory
that can be accessed in host functions
- Improves thread-safety of Plugins, adds C++ test to call a single
plugin from multiple threads.
- Expands wasmtime bounds to include 12.0
2023-08-29 13:57:17 -07:00
dependabot[bot]
aa073b8acc chore(deps-dev): Bump jest and @types/jest in /node (#436)
Bumps [jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest) and
[@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest).
These dependencies needed to be updated together.
Updates `jest` from 29.6.2 to 29.6.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jestjs/jest/releases">jest's
releases</a>.</em></p>
<blockquote>
<h2>v29.6.4</h2>
<h2>Fixes</h2>
<ul>
<li><code>[jest-core]</code> Fix typo in <code>scheduleAndRun</code>
performance marker (<a
href="https://redirect.github.com/jestjs/jest/pull/14434">#14434</a>)</li>
<li><code>[jest-environment-node]</code> Make sure <code>atob</code> and
<code>btoa</code> are writeable in Node 20 (<a
href="https://redirect.github.com/jestjs/jest/pull/14446">#14446</a>)</li>
<li><code>[jest-worker]</code> Additional error wrapper for
<code>parentPort.postMessage</code> to fix unhandled
<code>DataCloneError</code>. (<a
href="https://redirect.github.com/jestjs/jest/pull/14437">#14437</a>)</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/stanleyume"><code>@​stanleyume</code></a> made
their first contribution in <a
href="https://redirect.github.com/jestjs/jest/pull/14424">jestjs/jest#14424</a></li>
<li><a
href="https://github.com/dj-stormtrooper"><code>@​dj-stormtrooper</code></a>
made their first contribution in <a
href="https://redirect.github.com/jestjs/jest/pull/14437">jestjs/jest#14437</a></li>
<li><a href="https://github.com/thw0rted"><code>@​thw0rted</code></a>
made their first contribution in <a
href="https://redirect.github.com/jestjs/jest/pull/14444">jestjs/jest#14444</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/jestjs/jest/compare/v29.6.3...v29.6.4">https://github.com/jestjs/jest/compare/v29.6.3...v29.6.4</a></p>
<h2>v29.6.3</h2>
<h2>Fixes</h2>
<ul>
<li><code>[expect, @jest/expect-utils]</code>
<code>ObjectContaining</code> support <code>symbol</code> as key (<a
href="https://redirect.github.com/jestjs/jest/pull/14414">#14414</a>)</li>
<li><code>[expect]</code> Remove <code>@types/node</code> from
dependencies (<a
href="https://redirect.github.com/jestjs/jest/pull/14385">#14385</a>)</li>
<li><code>[jest-core]</code> Use workers in watch mode by default to
avoid crashes (<a
href="https://redirect.github.com/facebook/jest/pull/14059">#14059</a>
&amp; <a
href="https://redirect.github.com/facebook/jest/pull/14085">#14085</a>).</li>
<li><code>[jest-reporters]</code> Update
<code>istanbul-lib-instrument</code> dependency to v6. (<a
href="https://redirect.github.com/jestjs/jest/pull/14401">#14401</a>)</li>
<li><code>[jest-mock]</code> Revert <a
href="https://redirect.github.com/jestjs/jest/pull/13692">#13692</a> as
it was a breaking change (<a
href="https://redirect.github.com/jestjs/jest/pull/14429">#14429</a>)</li>
<li><code>[jest-mock]</code> Revert <a
href="https://redirect.github.com/jestjs/jest/pull/13866">#13866</a> as
it was a breaking change (<a
href="https://redirect.github.com/jestjs/jest/pull/14429">#14429</a>)</li>
<li><code>[jest-mock]</code> Revert <a
href="https://redirect.github.com/jestjs/jest/pull/13867">#13867</a> as
it was a breaking change (<a
href="https://redirect.github.com/jestjs/jest/pull/14429">#14429</a>)</li>
<li><code>[@jest/reporters]</code> Marks Reporter's hooks as optional
(<a
href="https://redirect.github.com/jestjs/jest/pull/14433">#14433</a>)</li>
<li><code>[jest-runtime]</code> Fix dynamic ESM import module bug when
loaded module through <code>jest.isolateModulesAsync</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/14397">#14397</a>)</li>
</ul>
<h2>Chore &amp; Maintenance</h2>
<ul>
<li><code>[jest-changed-files, jest-circus, jest-console, @jest/core,
@jest/runtime, @jest/transform]</code> Use <code>invariant</code> and
<code>notEmpty</code> from <code>jest-util</code> rather than own
internal (<a
href="https://redirect.github.com/jestjs/jest/pull/14366">#14366</a>)</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/karlnorling"><code>@​karlnorling</code></a>
made their first contribution in <a
href="https://redirect.github.com/jestjs/jest/pull/14401">jestjs/jest#14401</a></li>
<li><a
href="https://github.com/vinicinbgs"><code>@​vinicinbgs</code></a> made
their first contribution in <a
href="https://redirect.github.com/jestjs/jest/pull/14388">jestjs/jest#14388</a></li>
<li><a
href="https://github.com/panteleevnikita"><code>@​panteleevnikita</code></a>
made their first contribution in <a
href="https://redirect.github.com/jestjs/jest/pull/14433">jestjs/jest#14433</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/jestjs/jest/compare/v29.6.2...v29.6.3">https://github.com/jestjs/jest/compare/v29.6.2...v29.6.3</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/jestjs/jest/blob/main/CHANGELOG.md">jest's
changelog</a>.</em></p>
<blockquote>
<h2>29.6.4</h2>
<h3>Fixes</h3>
<ul>
<li><code>[jest-core]</code> Fix typo in <code>scheduleAndRun</code>
performance marker (<a
href="https://redirect.github.com/jestjs/jest/pull/14434">#14434</a>)</li>
<li><code>[jest-environment-node]</code> Make sure <code>atob</code> and
<code>btoa</code> are writeable in Node 20 (<a
href="https://redirect.github.com/jestjs/jest/pull/14446">#14446</a>)</li>
<li><code>[jest-worker]</code> Additional error wrapper for
<code>parentPort.postMessage</code> to fix unhandled
<code>DataCloneError</code>. (<a
href="https://redirect.github.com/jestjs/jest/pull/14437">#14437</a>)</li>
</ul>
<h2>29.6.3</h2>
<h3>Fixes</h3>
<ul>
<li><code>[expect, @jest/expect-utils]</code>
<code>ObjectContaining</code> support <code>sumbol</code> as key (<a
href="https://redirect.github.com/jestjs/jest/pull/14414">#14414</a>)</li>
<li><code>[expect]</code> Remove <code>@types/node</code> from
dependencies (<a
href="https://redirect.github.com/jestjs/jest/pull/14385">#14385</a>)</li>
<li><code>[jest-core]</code> Use workers in watch mode by default to
avoid crashes (<a
href="https://redirect.github.com/facebook/jest/pull/14059">#14059</a>
&amp; <a
href="https://redirect.github.com/facebook/jest/pull/14085">#14085</a>).</li>
<li><code>[jest-reporters]</code> Update
<code>istanbul-lib-instrument</code> dependency to v6. (<a
href="https://redirect.github.com/jestjs/jest/pull/14401">#14401</a>)</li>
<li><code>[jest-mock]</code> Revert <a
href="https://redirect.github.com/jestjs/jest/pull/13692">#13692</a> as
it was a breaking change (<a
href="https://redirect.github.com/jestjs/jest/pull/14429">#14429</a>)</li>
<li><code>[jest-mock]</code> Revert <a
href="https://redirect.github.com/jestjs/jest/pull/13866">#13866</a> as
it was a breaking change (<a
href="https://redirect.github.com/jestjs/jest/pull/14429">#14429</a>)</li>
<li><code>[jest-mock]</code> Revert <a
href="https://redirect.github.com/jestjs/jest/pull/13867">#13867</a> as
it was a breaking change (<a
href="https://redirect.github.com/jestjs/jest/pull/14429">#14429</a>)</li>
<li><code>[@jest/reporters]</code> Marks Reporter's hooks as optional
(<a
href="https://redirect.github.com/jestjs/jest/pull/14433">#14433</a>)</li>
<li><code>[jest-runtime]</code> Fix dynamic ESM import module bug when
loaded module through <code>jest.isolateModulesAsync</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/14397">#14397</a>)</li>
</ul>
<h3>Chore &amp; Maintenance</h3>
<ul>
<li><code>[jest-changed-files, jest-circus, jest-console, @jest/core,
@jest/runtime, @jest/transform]</code> Use <code>invariant</code> and
<code>notEmpty</code> from <code>jest-util</code> rather than own
internal (<a
href="https://redirect.github.com/jestjs/jest/pull/14366">#14366</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="55cd6a0aaf"><code>55cd6a0</code></a>
v29.6.4</li>
<li><a
href="fb7d95c8af"><code>fb7d95c</code></a>
v29.6.3</li>
<li><a
href="49bacb9620"><code>49bacb9</code></a>
chore: update jest repo organisation in urls (<a
href="https://github.com/jestjs/jest/tree/HEAD/packages/jest/issues/14413">#14413</a>)</li>
<li>See full diff in <a
href="https://github.com/jestjs/jest/commits/v29.6.4/packages/jest">compare
view</a></li>
</ul>
</details>
<br />

Updates `@types/jest` from 29.5.3 to 29.5.4
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-29 13:35:55 -07:00
dependabot[bot]
8c2125cdcd chore(deps-dev): Bump typescript from 5.1.6 to 5.2.2 in /node (#438)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.1.6
to 5.2.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Microsoft/TypeScript/releases">typescript's
releases</a>.</em></p>
<blockquote>
<h2>TypeScript 5.2</h2>
<p>For release notes, check out the <a
href="https://devblogs.microsoft.com/typescript/announcing-typescript-5-2/">release
announcement</a>.</p>
<p>For the complete list of fixed issues, check out the</p>
<ul>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.2.0%22+is%3Aclosed+">fixed
issues query for Typescript 5.2.0 (Beta)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.2.1%22+is%3Aclosed+">fixed
issues query for Typescript 5.2.1 (RC)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.2.2%22+is%3Aclosed+">fixed
issues query for Typescript 5.2.2 (Stable)</a>.</li>
</ul>
<p>Downloads are available on:</p>
<ul>
<li><a
href="https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild">NuGet
package</a></li>
</ul>
<h2>TypeScript 5.2 RC</h2>
<p>For release notes, check out the <a
href="https://devblogs.microsoft.com/typescript/announcing-typescript-5-2-rc/">release
announcement</a>.</p>
<p>For the complete list of fixed issues, check out the</p>
<ul>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.2.0%22+is%3Aclosed+">fixed
issues query for Typescript 5.2.0 (Beta)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.2.1%22+is%3Aclosed+">fixed
issues query for Typescript 5.2.1 (RC)</a>.</li>
</ul>
<p>Downloads are available on:</p>
<ul>
<li><a
href="https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild">NuGet
package</a></li>
</ul>
<h2>TypeScript 5.2 Beta</h2>
<p>For release notes, check out the <a
href="https://devblogs.microsoft.com/typescript/announcing-typescript-5-2-beta/">release
announcement</a>.</p>
<p>For the complete list of fixed issues, check out the</p>
<ul>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.2.0%22+is%3Aclosed+">fixed
issues query for Typescript v5.2.0 (Beta)</a>.</li>
</ul>
<p>Downloads are available on <a
href="https://www.npmjs.com/package/typescript">npm</a>.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9684ba6b0d"><code>9684ba6</code></a>
Cherry-pick fix for cross-file inlay hints (<a
href="https://redirect.github.com/Microsoft/TypeScript/issues/55476">#55476</a>)
to <code>release-5.2</code> and LKG ...</li>
<li><a
href="555ef99d03"><code>555ef99</code></a>
Bump version to 5.2.2 and LKG</li>
<li><a
href="6074b9d12b"><code>6074b9d</code></a>
Update LKG for 5.2.1 RC.</li>
<li><a
href="b778ed1d8f"><code>b778ed1</code></a>
Merge commit 'e936eb13d2900f21d79553c32a704307c7ad03dd' into
release-5.2</li>
<li><a
href="10b9962915"><code>10b9962</code></a>
Bump version to 5.2.1-rc and LKG</li>
<li><a
href="e936eb13d2"><code>e936eb1</code></a>
Update package-lock.json</li>
<li><a
href="e36cd5768a"><code>e36cd57</code></a>
Update package-lock.json</li>
<li><a
href="581fba1f6f"><code>581fba1</code></a>
Update package-lock.json</li>
<li><a
href="8fc8c95830"><code>8fc8c95</code></a>
Decorators normative updates (<a
href="https://redirect.github.com/Microsoft/TypeScript/issues/55276">#55276</a>)</li>
<li><a
href="b1c4dc475c"><code>b1c4dc4</code></a>
Fix class name references (<a
href="https://redirect.github.com/Microsoft/TypeScript/issues/55262">#55262</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/Microsoft/TypeScript/compare/v5.1.6...v5.2.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typescript&package-manager=npm_and_yarn&previous-version=5.1.6&new-version=5.2.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-29 13:15:55 -07:00
dependabot[bot]
3b89b51b62 chore(deps-dev): Bump typedoc from 0.24.8 to 0.25.0 in /node (#439)
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.24.8 to
0.25.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/TypeDoc/releases">typedoc's
releases</a>.</em></p>
<blockquote>
<h2>v0.25.0</h2>
<h3>Breaking Changes</h3>
<ul>
<li>Bump minimum Node version to 16.</li>
<li>Removed <code>legacy-packages</code> option for
<code>--entryPointStrategy</code>.</li>
<li>Changed default value of <code>--categorizeByGroup</code> to
<code>false</code>.</li>
<li>Specifying a link as the <code>gitRemote</code> is no longer
supported.</li>
<li>An <code>Application</code> instance must now be retrieved via
<code>Application.bootstrap</code> or
<code>Application.bootstrapWithPlugins</code>, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2268">#2268</a>.</li>
<li>Removed <code>ReflectionKind.ObjectLiteral</code> that was never
used by TypeDoc.</li>
<li>Removed deprecated members
<code>DefaultThemeRenderContext.comment</code> and
<code>DefaultThemeRenderContext.attemptExternalResolution</code>.</li>
</ul>
<h3>Features</h3>
<ul>
<li>Added support for TypeScript 5.2</li>
<li>TypeDoc config files now support options default-exported from an
ESM config file, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2268">#2268</a>.</li>
<li>TypeDoc config files may now export a promise containing
configuration, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2268">#2268</a>.</li>
<li>Added <code>--preserveLinkText</code> option (defaults to true)
which determines whether the reflection name or full link text is
included
in the output when no override is specified, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2355">#2355</a>.</li>
<li>Added a no-results placeholder when no search results are available,
<a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2347">#2347</a>.</li>
<li>Implemented several miscellaneous performance improvements to
generate docs faster, this took the time to generate TypeDoc's
site from ~5.6 seconds to ~5.4 seconds.</li>
<li>Added <code>--disableGit</code> option to prevent TypeDoc from using
Git to try to determine if sources can be linked, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2326">#2326</a>.</li>
<li>Added support for tags <code>@showGroups</code>,
<code>@hideGroups</code>, <code>@showCategories</code>,
<code>@hideCategories</code> to configure the navigation pane on a
per-reflection basis, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2329">#2329</a>.</li>
<li>With <code>--jsDocCompatibility.defaultTags</code> set,
<code>@defaultValue</code> is now implicitly a code block if the text
contains no code, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2370">#2370</a>.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Fixed link discovery if nested (<code>Foo#bar</code>) links were
used and <code>--useTsLinkResolution</code> is enabled in some cases, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2360">#2360</a>.</li>
<li>Links with invalid declaration references will no longer silently
link to the wrong page in some cases, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2360">#2360</a>.</li>
<li>Fixed duplicate definitions in type hierarchy when using packages
mode, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2327">#2327</a>.</li>
<li><code>@inheritDoc</code> was not properly resolved across packages
in packages mode, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2331">#2331</a>.</li>
<li>Added warning for attempted <code>@interface</code> use on union
types, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2352">#2352</a>.</li>
<li>Fixed misleading type annotation on <code>Theme.getUrls</code>, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2318">#2318</a>.</li>
<li>Fixed duplicate namespace in documentation if
<code>@namespace</code> is used on a variable with an associated
namespace, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2364">#2364</a>.</li>
<li>Fixed <code>@namespace</code> property discovery if merged with a
type and the type was declared first <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2364">#2364</a>.</li>
<li>Tables in markdown are now styled, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2366">#2366</a>.</li>
<li>Sidebar links no longer open in a new tab, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2353">#2353</a>.</li>
<li>Headers now include some padding before rendering text, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2316">#2316</a>.</li>
<li>Symbol locations for signatures on <code>reflection.sources</code>
now considers the node's name like non-signature location discovery
does.</li>
</ul>
<h3>Thanks!</h3>
<ul>
<li><a href="https://github.com/camc314"><code>@​camc314</code></a></li>
<li><a
href="https://github.com/cprussin"><code>@​cprussin</code></a></li>
<li><a
href="https://github.com/roggervalf"><code>@​roggervalf</code></a></li>
<li><a
href="https://github.com/Th3S4mur41"><code>@​Th3S4mur41</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md">typedoc's
changelog</a>.</em></p>
<blockquote>
<h1>v0.25.0 (2023-08-25)</h1>
<h3>Breaking Changes</h3>
<ul>
<li>Bump minimum Node version to 16.</li>
<li>Removed <code>legacy-packages</code> option for
<code>--entryPointStrategy</code>.</li>
<li>Changed default value of <code>--categorizeByGroup</code> to
<code>false</code>.</li>
<li>Specifying a link as the <code>gitRemote</code> is no longer
supported.</li>
<li>An <code>Application</code> instance must now be retrieved via
<code>Application.bootstrap</code> or
<code>Application.bootstrapWithPlugins</code>, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2268">#2268</a>.</li>
<li>Removed <code>ReflectionKind.ObjectLiteral</code> that was never
used by TypeDoc.</li>
<li>Removed deprecated members
<code>DefaultThemeRenderContext.comment</code> and
<code>DefaultThemeRenderContext.attemptExternalResolution</code>.</li>
</ul>
<h3>Features</h3>
<ul>
<li>Added support for TypeScript 5.2, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2373">#2373</a>.</li>
<li>TypeDoc config files now support options default-exported from an
ESM config file, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2268">#2268</a>.</li>
<li>TypeDoc config files may now export a promise containing
configuration, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2268">#2268</a>.</li>
<li>Added <code>--preserveLinkText</code> option (defaults to true)
which determines whether the reflection name or full link text is
included
in the output when no override is specified, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2355">#2355</a>.</li>
<li>Added a no-results placeholder when no search results are available,
<a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2347">#2347</a>.</li>
<li>Implemented several miscellaneous performance improvements to
generate docs faster, this took the time to generate TypeDoc's
site from ~5.6 seconds to ~5.4 seconds.</li>
<li>Added <code>--disableGit</code> option to prevent TypeDoc from using
Git to try to determine if sources can be linked, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2326">#2326</a>.</li>
<li>Added support for tags <code>@showGroups</code>,
<code>@hideGroups</code>, <code>@showCategories</code>,
<code>@hideCategories</code> to configure the navigation pane on a
per-reflection basis, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2329">#2329</a>.</li>
<li>With <code>--jsDocCompatibility.defaultTags</code> set,
<code>@defaultValue</code> is now implicitly a code block if the text
contains no code, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2370">#2370</a>.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Fixed link discovery if nested (<code>Foo#bar</code>) links were
used and <code>--useTsLinkResolution</code> is enabled in some cases, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2360">#2360</a>.</li>
<li>Links with invalid declaration references will no longer silently
link to the wrong page in some cases, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2360">#2360</a>.</li>
<li>Fixed duplicate definitions in type hierarchy when using packages
mode, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2327">#2327</a>.</li>
<li><code>@inheritDoc</code> was not properly resolved across packages
in packages mode, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2331">#2331</a>.</li>
<li>Added warning for attempted <code>@interface</code> use on union
types, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2352">#2352</a>.</li>
<li>Fixed misleading type annotation on <code>Theme.getUrls</code>, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2318">#2318</a>.</li>
<li>Fixed duplicate namespace in documentation if
<code>@namespace</code> is used on a variable with an associated
namespace, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2364">#2364</a>.</li>
<li>Fixed <code>@namespace</code> property discovery if merged with a
type and the type was declared first <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2364">#2364</a>.</li>
<li>Tables in markdown are now styled, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2366">#2366</a>.</li>
<li>Sidebar links no longer open in a new tab, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2353">#2353</a>.</li>
<li>Headers now include some padding before rendering text, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2316">#2316</a>.</li>
<li>Symbol locations for signatures on <code>reflection.sources</code>
now considers the node's name like non-signature location discovery
does.</li>
</ul>
<h3>Thanks!</h3>
<ul>
<li><a href="https://github.com/camc314"><code>@​camc314</code></a></li>
<li><a
href="https://github.com/cprussin"><code>@​cprussin</code></a></li>
<li><a
href="https://github.com/roggervalf"><code>@​roggervalf</code></a></li>
<li><a
href="https://github.com/Th3S4mur41"><code>@​Th3S4mur41</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8d822e9ac8"><code>8d822e9</code></a>
Update changelog for release</li>
<li><a
href="fc6f64853c"><code>fc6f648</code></a>
Bump version to 0.25.0</li>
<li><a
href="d4db57192c"><code>d4db571</code></a>
Add preserveLinkText option</li>
<li><a
href="3d8ff29664"><code>3d8ff29</code></a>
defaultValue is implicitly code only with JSDoc compat</li>
<li><a
href="028a141058"><code>028a141</code></a>
feat(default-value): treat as code block for better styling (<a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2370">#2370</a>)</li>
<li><a
href="c83f2c3f24"><code>c83f2c3</code></a>
Add support for TS 5.2</li>
<li><a
href="5c977aea2e"><code>5c977ae</code></a>
Support ESM config files</li>
<li><a
href="76c918c3c6"><code>76c918c</code></a>
Headers now include some padding before rendering text</li>
<li><a
href="0cc6e58d06"><code>0cc6e58</code></a>
Sidebar links no longer open in a new tab, closes <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2353">#2353</a>.</li>
<li><a
href="3207ae5686"><code>3207ae5</code></a>
Lint</li>
<li>Additional commits viewable in <a
href="https://github.com/TypeStrong/TypeDoc/compare/v0.24.8...v0.25.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typedoc&package-manager=npm_and_yarn&previous-version=0.24.8&new-version=0.25.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-29 13:15:40 -07:00
dependabot[bot]
92a7eecf69 chore(deps-dev): Bump @types/node from 20.5.1 to 20.5.7 in /node (#437)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 20.5.1 to 20.5.7.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.5.1&new-version=20.5.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-29 13:15:27 -07:00
dependabot[bot]
65231cada5 chore(deps-dev): Bump ex_doc from 0.30.5 to 0.30.6 in /elixir (#440)
Bumps [ex_doc](https://github.com/elixir-lang/ex_doc) from 0.30.5 to
0.30.6.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/elixir-lang/ex_doc/blob/main/CHANGELOG.md">ex_doc's
changelog</a>.</em></p>
<blockquote>
<h2>v0.30.6 (2023-08-25)</h2>
<ul>
<li>Enhancements
<ul>
<li>Extract title from Markdown file when preceeded with comments</li>
<li>Improve focus navigation in notebooks</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="48949c5638"><code>48949c5</code></a>
Release v0.30.6</li>
<li><a
href="c47807cf27"><code>c47807c</code></a>
Extract title even with comments</li>
<li><a
href="46289000e3"><code>4628900</code></a>
Update assets</li>
<li><a
href="67af3bedec"><code>67af3be</code></a>
Make checked switch button focus state visible</li>
<li><a
href="32bb4ff4f4"><code>32bb4ff</code></a>
Show function header link when focused</li>
<li><a
href="f63316e3a9"><code>f63316e</code></a>
Update assets</li>
<li><a
href="1c85e72e67"><code>1c85e72</code></a>
Remove unecessary css</li>
<li><a
href="4928aa89d6"><code>4928aa8</code></a>
Fix view links on cheatsheets</li>
<li><a
href="c4aaf36869"><code>c4aaf36</code></a>
Update assets</li>
<li><a
href="f165492cf2"><code>f165492</code></a>
Add text decoration to admonition</li>
<li>Additional commits viewable in <a
href="https://github.com/elixir-lang/ex_doc/compare/v0.30.5...v0.30.6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ex_doc&package-manager=hex&previous-version=0.30.5&new-version=0.30.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-29 13:15:13 -07:00
dependabot[bot]
d13301a346 chore(deps): Update cbindgen requirement from 0.24 to 0.25 (#434)
Updates the requirements on
[cbindgen](https://github.com/eqrion/cbindgen) to permit the latest
version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/mozilla/cbindgen/blob/master/CHANGES">cbindgen's
changelog</a>.</em></p>
<blockquote>
<h2>0.25.0</h2>
<pre><code>  * Re-release of yanked 0.24.6 as a major release
  * Update MSRV to 1.57
* Support variadic arguments (`...`)
([#805](https://github.com/eqrion/cbindgen/issues/805))
* Add --depfile option
([#820](https://github.com/eqrion/cbindgen/issues/820))
  * Breaking changes: The `Config` struct now has a private member.
</code></pre>
<h2>0.24.6 (YANKED: depfile option was breaking, see <a
href="https://redirect.github.com/eqrion/cbindgen/issues/841">#841</a>)</h2>
<pre><code>  * Update MSRV to 1.57
* Support variadic arguments (`...`)
([#805](https://github.com/eqrion/cbindgen/issues/805))
* Add --depfile option
([#820](https://github.com/eqrion/cbindgen/issues/820))
</code></pre>
<h2>0.24.5</h2>
<pre><code>  * Don't enforce tempfile version.
</code></pre>
<h2>0.24.4</h2>
<pre><code> * Move expand infinite recursion fix
([#799](https://github.com/eqrion/cbindgen/issues/799))
* Add with_cpp_compat to the builder
([#796](https://github.com/eqrion/cbindgen/issues/796))
* Handle never type in return position consistently
([#780](https://github.com/eqrion/cbindgen/issues/780))
* Fix warnings ([#816](https://github.com/eqrion/cbindgen/issues/816),
[#819](https://github.com/eqrion/cbindgen/issues/819))
* Updated documentation
([#788](https://github.com/eqrion/cbindgen/issues/788),
[#791](https://github.com/eqrion/cbindgen/issues/791),
[#792](https://github.com/eqrion/cbindgen/issues/792),
[#810](https://github.com/eqrion/cbindgen/issues/810),
[#823](https://github.com/eqrion/cbindgen/issues/823))
</code></pre>
<h2>0.24.3</h2>
<pre><code> * Make struct expressions correctly generated through
typedefs ([#768](https://github.com/eqrion/cbindgen/issues/768)).
</code></pre>
<h2>0.24.2</h2>
<pre><code>  * Make bitfield operators use explicit constructors.
</code></pre>
<h2>0.24.1</h2>
<pre><code> * Add support for unary negation
([#765](https://github.com/eqrion/cbindgen/issues/765)).
* Make more bitfield operators constexpr
([#765](https://github.com/eqrion/cbindgen/issues/765)).
</code></pre>
<h2>0.24.0</h2>
<pre><code> * Basic const generic support
([#759](https://github.com/eqrion/cbindgen/issues/759),
[#760](https://github.com/eqrion/cbindgen/issues/760)
[#762](https://github.com/eqrion/cbindgen/issues/762)).
* Suffixes on integer literals are now honored to avoid narrowing
([#764](https://github.com/eqrion/cbindgen/issues/764)).
</code></pre>
<h2>0.23.0</h2>
<pre><code> * Better support for constexpr.
([#756](https://github.com/eqrion/cbindgen/issues/756))
* constexpr is now enabled by default in C++ mode. You can use
const.allow_constexpr=false to revert to previous behavior.
([#756](https://github.com/eqrion/cbindgen/issues/756))
* Minimum syn version no longer parses old rust code.
([#754](https://github.com/eqrion/cbindgen/issues/754))
</code></pre>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="dd9a550152"><code>dd9a550</code></a>
Fix minimal Rust version in CI</li>
<li><a
href="0529d215e7"><code>0529d21</code></a>
Revert &quot;Upgrade clap 3 to clap 4&quot;</li>
<li><a
href="289a31ba45"><code>289a31b</code></a>
Fix clippy warning</li>
<li><a
href="67fea1a1a2"><code>67fea1a</code></a>
Fix CI</li>
<li><a
href="80526e72f9"><code>80526e7</code></a>
Update changelog for v0.25.0</li>
<li><a
href="1e2ffd4414"><code>1e2ffd4</code></a>
CI: Replace forbidden actions with cli code</li>
<li><a
href="f61946b979"><code>f61946b</code></a>
CI: Add semver checks to CI deploy job</li>
<li><a
href="b61aa2c330"><code>b61aa2c</code></a>
msrv 1.64</li>
<li><a
href="b734008c71"><code>b734008</code></a>
Upgrade clap 3 to clap 4</li>
<li><a
href="667de09279"><code>667de09</code></a>
Add: Add rust-toolchain.toml</li>
<li>Additional commits viewable in <a
href="https://github.com/eqrion/cbindgen/compare/v0.24.0...v0.25.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-29 13:14:54 -07:00
Benjamin Eckel
745a03ece4 release: Bump elixir nif to rust 0.5 (#431) 2023-08-24 13:37:48 -05:00
Benjamin Eckel
67eb8c1571 release: Bump the rest of the SDKs (#430) 2023-08-24 12:41:31 -05:00
zach
6a15884963 fix: remove call to bash from build.rs (#429)
I think this will fix the issue with CI hanging - this fixes the issue
when building Elixir, which seems to be the same as the CI issue
2023-08-23 19:12:51 -05:00
zach
72f62c4035 chore: bump libextism version (#428) 2023-08-23 15:49:50 -05:00
Benjamin Eckel
e86398a612 release: Bump runtime to 0.5.0 (#427)
Co-authored-by: zach <zach@dylibso.com>
2023-08-23 13:58:33 -05:00
dependabot[bot]
461ac97529 chore(deps-dev): Bump prettier from 3.0.1 to 3.0.2 in /node (#422)
Bumps [prettier](https://github.com/prettier/prettier) from 3.0.1 to
3.0.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/releases">prettier's
releases</a>.</em></p>
<blockquote>
<h2>3.0.2</h2>
<p>🔗 <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md#302">Changelog</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md">prettier's
changelog</a>.</em></p>
<blockquote>
<h1>3.0.2</h1>
<p><a
href="https://github.com/prettier/prettier/compare/3.0.1...3.0.2">diff</a></p>
<h4>Break after <code>=</code> of assignment if RHS is poorly breakable
AwaitExpression or YieldExpression (<a
href="https://redirect.github.com/prettier/prettier/pull/15204">#15204</a>
by <a href="https://github.com/seiyab"><code>@​seiyab</code></a>)</h4>
<!-- raw HTML omitted -->
<pre lang="js"><code>// Input
const { section, rubric, authors, tags } = await
utils.upsertCommonData(mainData);
<p>// Prettier 3.0.1
const { section, rubric, authors, tags } = await utils.upsertCommonData(
mainData,
);</p>
<p>// Prettier 3.0.2
const { section, rubric, authors, tags } =
await utils.upsertCommonData(mainData);
</code></pre></p>
<h4>Do not add trailing comma for grouped scss comments (<a
href="https://redirect.github.com/prettier/prettier/pull/15217">#15217</a>
by <a href="https://github.com/auvred"><code>@​auvred</code></a>)</h4>
<!-- raw HTML omitted -->
<pre lang="scss"><code>/* Input */
$foo: (
	'property': (),
	// comment 1
	// comment 2
)
<p>/* Prettier 3.0.1 */
$foo: (
&quot;property&quot;: (),
// comment 1
// comment 2,
);</p>
<p>/* Prettier 3.0.2 */
$foo: (
&quot;property&quot;: (),
// comment 1
// comment 2
);
</code></pre></p>
<h4>Print <code>declare</code> and <code>export</code> keywords for
nested namespace (<a
href="https://redirect.github.com/prettier/prettier/pull/15249">#15249</a>
by <a
href="https://github.com/sosukesuzuki"><code>@​sosukesuzuki</code></a>)</h4>
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="157e42accd"><code>157e42a</code></a>
Release 3.0.2</li>
<li><a
href="1b0c756bd6"><code>1b0c756</code></a>
Print <code>declare</code> and <code>export</code> keywords for nested
namespace (<a
href="https://redirect.github.com/prettier/prettier/issues/15249">#15249</a>)</li>
<li><a
href="b4082cb647"><code>b4082cb</code></a>
chore(deps): update babel to v7.22.10 (<a
href="https://redirect.github.com/prettier/prettier/issues/15236">#15236</a>)</li>
<li><a
href="91e850b2bd"><code>91e850b</code></a>
chore(deps): update dependency camelcase to v8 (<a
href="https://redirect.github.com/prettier/prettier/issues/15245">#15245</a>)</li>
<li><a
href="f24132eda3"><code>f24132e</code></a>
Make chalk/assert shim a Proxy (<a
href="https://redirect.github.com/prettier/prettier/issues/15234">#15234</a>)</li>
<li><a
href="e22a5516f5"><code>e22a551</code></a>
chore(deps): update dependency <code>@​babel/parser</code> to v7.22.10
(<a
href="https://redirect.github.com/prettier/prettier/issues/15237">#15237</a>)</li>
<li><a
href="fbe46aa74a"><code>fbe46aa</code></a>
chore(deps): update dependency <code>@​angular/compiler</code> to
v16.2.0 (<a
href="https://redirect.github.com/prettier/prettier/issues/15240">#15240</a>)</li>
<li><a
href="7ecdbf7bc4"><code>7ecdbf7</code></a>
chore(deps): update typescript-eslint to v6.3.0 (<a
href="https://redirect.github.com/prettier/prettier/issues/15244">#15244</a>)</li>
<li><a
href="fb55780393"><code>fb55780</code></a>
chore(deps): update dependency eslint to v8.47.0 (<a
href="https://redirect.github.com/prettier/prettier/issues/15242">#15242</a>)</li>
<li><a
href="fde937d7b4"><code>fde937d</code></a>
chore(deps): update dependency hermes-parser to v0.15.1 (<a
href="https://redirect.github.com/prettier/prettier/issues/15239">#15239</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/prettier/prettier/compare/3.0.1...3.0.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=prettier&package-manager=npm_and_yarn&previous-version=3.0.1&new-version=3.0.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-22 13:55:46 -05:00
dependabot[bot]
f312b0bcce chore(deps-dev): Bump @types/node from 20.5.0 to 20.5.1 in /node (#423)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 20.5.0 to 20.5.1.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.5.0&new-version=20.5.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-22 13:55:38 -05:00
Muhammad Azeez
6102a99d98 fix(dotnet): typo in HostFunction constructor that prevents setting Host Function namespace (#418)
The only interesting part is this:

ba1baef9fb/dotnet/src/Extism.Sdk/HostFunction.cs (L68)
2023-08-15 20:05:37 +03:00
zach
b6f2e845d9 fix(runtime): register all host function imports (#419)
Fixes #417
2023-08-15 10:02:30 -07:00
dependabot[bot]
d1137fa739 chore(deps-dev): Bump @types/node from 20.4.8 to 20.5.0 in /node (#415)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 20.4.8 to 20.5.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.4.8&new-version=20.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-15 09:01:50 -07:00
dependabot[bot]
40a42882ba chore(deps-dev): Bump ex_doc from 0.30.4 to 0.30.5 in /elixir (#416)
Bumps [ex_doc](https://github.com/elixir-lang/ex_doc) from 0.30.4 to
0.30.5.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/elixir-lang/ex_doc/blob/main/CHANGELOG.md">ex_doc's
changelog</a>.</em></p>
<blockquote>
<h2>v0.30.5 (2023-08-12)</h2>
<ul>
<li>Bug fixes
<ul>
<li>Fix style for code in headers</li>
<li>Fix search data generation for Erlang/OTP</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7aa3fd9e8e"><code>7aa3fd9</code></a>
Release v0.30.5</li>
<li><a
href="feaf41c132"><code>feaf41c</code></a>
Do not style headers as links</li>
<li><a
href="4114bbfd1d"><code>4114bbf</code></a>
Fix generating search_data.json for undocumented Erlang functions</li>
<li>See full diff in <a
href="https://github.com/elixir-lang/ex_doc/compare/v0.30.4...v0.30.5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ex_doc&package-manager=hex&previous-version=0.30.4&new-version=0.30.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-15 09:01:39 -07:00
Doğu Us
889ec39e4d refactor(zig)!: Simplify JSON stringifying (#414)
Uses `std.json.ArrayHashMap` for stringifying.

# Breaking Changes
* Plugin.setConfig's `config` parameter's type changed to
`std.json.ArrayHashMap([]const u8)`
* WasmUrl's `header` field's type changed to
`std.json.ArrayHashMap([]const u8)`
* Manifest's `config` and `allowed_path` fields' types changed to
`std.json.ArrayHashMap([]const u8)`
2023-08-11 20:10:30 -07:00
zach
fa909fd53d fix(rust): ensure InternalExt is exported (#413)
Also adds a test that uses `InternalExt` in the host function
2023-08-10 18:31:02 -07:00
dependabot[bot]
8dd4992633 chore(deps-dev): Bump @types/node from 20.4.5 to 20.4.8 in /node (#408)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 20.4.5 to 20.4.8.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.4.5&new-version=20.4.8)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-08 21:54:36 -05:00
dependabot[bot]
cfc9fb06a4 chore(deps-dev): Bump prettier from 3.0.0 to 3.0.1 in /node (#409)
Bumps [prettier](https://github.com/prettier/prettier) from 3.0.0 to
3.0.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/releases">prettier's
releases</a>.</em></p>
<blockquote>
<h2>3.0.1</h2>
<p>🔗 <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md#301">Changelog</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md">prettier's
changelog</a>.</em></p>
<blockquote>
<h1>3.0.1</h1>
<p><a
href="https://github.com/prettier/prettier/compare/3.0.0...3.0.1">diff</a></p>
<h4>Fix cursor positioning for a special case (<a
href="https://redirect.github.com/prettier/prettier/pull/14812">#14812</a>
by <a href="https://github.com/fisker"><code>@​fisker</code></a>)</h4>
<!-- raw HTML omitted -->
<pre lang="js"><code>// &lt;|&gt; is the cursor position
<p>/* Input */
// All messages are represented in JSON.
// So, the prettier.py controls a subprocess which spawns &quot;node
{this_file}&quot;.
import {&lt;|&gt;  } from &quot;fs&quot;</p>
<p>/* Prettier 3.0.0 */
// All messages are represented in JSON.
// So, the prettier.py &lt;|&gt;controls a subprocess which spawns
&quot;node {this_file}&quot;.
import {} from &quot;fs&quot;</p>
<p>/* Prettier 3.0.1 */
// All messages are represented in JSON.
// So, the prettier.py controls a subprocess which spawns &quot;node
{this_file}&quot;.
import {&lt;|&gt;} from &quot;fs&quot;
</code></pre></p>
<h4>Fix plugins/estree.d.ts to make it a module (<a
href="https://redirect.github.com/prettier/prettier/pull/15018">#15018</a>
by <a
href="https://github.com/kingyue737"><code>@​kingyue737</code></a>)</h4>
<p>Add <code>export {}</code> in <code>plugins/estree.d.ts</code> to fix
the &quot;File is not a module&quot; error</p>
<h4>Add parenthesis around leading multiline comment in return statement
(<a
href="https://redirect.github.com/prettier/prettier/pull/15037">#15037</a>
by <a href="https://github.com/auvred"><code>@​auvred</code></a>)</h4>
<!-- raw HTML omitted -->
<pre lang="jsx"><code>// Input
function fn() {
  return (
    /**
     * @type {...}
     */ expresssion
  )
}
<p>// Prettier 3.0.0
function fn() {
return /**</p>
<ul>
<li><a href="https://github.com/type"><code>@​type</code></a> {...}
*/ expresssion;
}</li>
</ul>
<p>&lt;/tr&gt;&lt;/table&gt;
</code></pre></p>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="afee0db664"><code>afee0db</code></a>
Release 3.0.1</li>
<li><a
href="c3d53dce7e"><code>c3d53dc</code></a>
Fix <code>runYarn</code> function in release script (<a
href="https://redirect.github.com/prettier/prettier/issues/15200">#15200</a>)</li>
<li><a
href="825425c57f"><code>825425c</code></a>
chore(deps): update dependency eslint-plugin-import to v2.28.0 (<a
href="https://redirect.github.com/prettier/prettier/issues/15184">#15184</a>)</li>
<li><a
href="448217df22"><code>448217d</code></a>
chore(deps): update dependency eslint to v8.46.0 (<a
href="https://redirect.github.com/prettier/prettier/issues/15182">#15182</a>)</li>
<li><a
href="f35e9e6bab"><code>f35e9e6</code></a>
chore(deps): update dependency <code>@​angular/compiler</code> to
v16.1.7 (<a
href="https://redirect.github.com/prettier/prettier/issues/15173">#15173</a>)</li>
<li><a
href="d14e893147"><code>d14e893</code></a>
chore(deps): update dependency c8 to v8.0.1 (<a
href="https://redirect.github.com/prettier/prettier/issues/15174">#15174</a>)</li>
<li><a
href="c44d4b761e"><code>c44d4b7</code></a>
chore(deps): update dependency eslint-plugin-react to v7.33.1 (<a
href="https://redirect.github.com/prettier/prettier/issues/15176">#15176</a>)</li>
<li><a
href="57e8c87506"><code>57e8c87</code></a>
chore(deps): update dependency esbuild to v0.18.17 (<a
href="https://redirect.github.com/prettier/prettier/issues/15175">#15175</a>)</li>
<li><a
href="36c3738aa9"><code>36c3738</code></a>
chore(deps): update dependency eslint-plugin-unicorn to v48.0.1 (<a
href="https://redirect.github.com/prettier/prettier/issues/15177">#15177</a>)</li>
<li><a
href="2d274dfcdd"><code>2d274df</code></a>
chore(deps): update dependency flow-parser to v0.213.1 (<a
href="https://redirect.github.com/prettier/prettier/issues/15178">#15178</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/prettier/prettier/compare/3.0.0...3.0.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=prettier&package-manager=npm_and_yarn&previous-version=3.0.0&new-version=3.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-08 21:54:22 -05:00
dependabot[bot]
0e1a8677c5 chore(deps-dev): Bump ex_doc from 0.30.3 to 0.30.4 in /elixir (#410)
Bumps [ex_doc](https://github.com/elixir-lang/ex_doc) from 0.30.3 to
0.30.4.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/elixir-lang/ex_doc/blob/main/CHANGELOG.md">ex_doc's
changelog</a>.</em></p>
<blockquote>
<h2>v0.30.4 (2023-08-03)</h2>
<ul>
<li>Bug fixes
<ul>
<li>Fix style for anchors in headers</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="a67fed176c"><code>a67fed1</code></a>
Release v0.30.4</li>
<li><a
href="eb6bbda3a2"><code>eb6bbda</code></a>
Bump word-wrap from 1.2.3 to 1.2.4 in /assets (<a
href="https://redirect.github.com/elixir-lang/ex_doc/issues/1742">#1742</a>)</li>
<li><a
href="2b5bbb3eb1"><code>2b5bbb3</code></a>
Update assets</li>
<li><a
href="be43c5a939"><code>be43c5a</code></a>
fix generation of livebook paths to handle omitted '.html' correctly (<a
href="https://redirect.github.com/elixir-lang/ex_doc/issues/1741">#1741</a>)</li>
<li><a
href="6c3afe5472"><code>6c3afe5</code></a>
Update assets</li>
<li>See full diff in <a
href="https://github.com/elixir-lang/ex_doc/compare/v0.30.3...v0.30.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ex_doc&package-manager=hex&previous-version=0.30.3&new-version=0.30.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-08 21:54:12 -05:00
zach
d80584600b refactor: Simplify runtime handling (#411)
It seems like our runtime initialization process is a little too
aggressive, this PR scales it back to initialize the runtime once if it
exists and only reinitializes when `_start` is called. This prevents
globals from being wiped out between plugin calls.

- Removes Runtime::cleanup
- Only initializes runtime once, or if `_start` is called
- Improves Haskell reactor support

See https://github.com/extism/go-sdk/pull/11 for the go-sdk PR.
2023-08-08 14:12:09 -07:00
zach
07623ef2da fix: avoid timeout errors outside of extism_plugin_call (#407)
- Delays instantiation to right before a call by using `instantiate_pre`
instead. This fixes an issue with the assemblyscript PDK.
- Makes timeouts only apply to calls
- Also bumps the wasmtime lower-bounds to 10.0, because the return type
of the epoch callback has changed
2023-08-04 13:44:24 -07:00
zach
c7c7f9d024 chore: update wasmtime bounds to include 11.0 (#405) 2023-08-01 11:12:02 -07:00
zach
3420960d7f chore(zig): use LazyPath in build.zig (#406) 2023-08-01 10:28:53 -07:00
zach
baa060d062 feat: Haskell host functions (#400) 2023-07-31 16:52:01 -07:00
dependabot[bot]
3219d79a8f chore(deps-dev): Bump @types/node from 20.4.2 to 20.4.5 in /node (#404)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 20.4.2 to 20.4.5.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.4.2&new-version=20.4.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-31 14:59:52 -05:00
dependabot[bot]
a3053a9ecc chore(deps-dev): Bump jest from 29.6.1 to 29.6.2 in /node (#403)
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest)
from 29.6.1 to 29.6.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/facebook/jest/releases">jest's
releases</a>.</em></p>
<blockquote>
<h2>v29.6.2</h2>
<h2>Fixes</h2>
<ul>
<li><code>[jest-circus]</code> Fix snapshot matchers in concurrent tests
when nr of tests exceeds <code>maxConcurrency</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/14335">#14335</a>)</li>
<li><code>[@jest/core]</code> When running global setup and teardown, do
not try to change the <code>message</code> property of the thrown error
object when the <code>message</code> property is unwritable (<a
href="https://redirect.github.com/jestjs/jest/pull/14113">#14113</a>)</li>
<li><code>[jest-snapshot]</code> Move <code>@types/prettier</code> from
<code>dependencies</code> to <code>devDependencies</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/14328">#14328</a>)</li>
<li><code>[jest-snapshot]</code> Throw an explicit error if Prettier v3
is used (<a
href="https://redirect.github.com/jestjs/jest/pull/14367">#14367</a>)</li>
<li><code>[jest-reporters]</code> Add &quot;skipped&quot; and
&quot;todo&quot; symbols to Github Actions Reporter (<a
href="https://redirect.github.com/jestjs/jest/pull/14309">#14309</a>)</li>
</ul>
<h2>Chore &amp; Maintenance</h2>
<ul>
<li><code>[@jest/core]</code> Use <code>pluralize</code> from
<code>jest-util</code> rather than own internal (<a
href="https://redirect.github.com/jestjs/jest/pull/14322">#14322</a>)</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Kloen"><code>@​Kloen</code></a> made
their first contribution in <a
href="https://redirect.github.com/jestjs/jest/pull/14328">jestjs/jest#14328</a></li>
<li><a href="https://github.com/eryue0220"><code>@​eryue0220</code></a>
made their first contribution in <a
href="https://redirect.github.com/jestjs/jest/pull/14322">jestjs/jest#14322</a></li>
<li><a
href="https://github.com/david-szabo97"><code>@​david-szabo97</code></a>
made their first contribution in <a
href="https://redirect.github.com/jestjs/jest/pull/14113">jestjs/jest#14113</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/jestjs/jest/compare/v29.6.1...v29.6.2">https://github.com/jestjs/jest/compare/v29.6.1...v29.6.2</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/jestjs/jest/blob/main/CHANGELOG.md">jest's
changelog</a>.</em></p>
<blockquote>
<h2>29.6.2</h2>
<h3>Fixes</h3>
<ul>
<li><code>[jest-circus]</code> Fix snapshot matchers in concurrent tests
when nr of tests exceeds <code>maxConcurrency</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/14335">#14335</a>)</li>
<li><code>[@jest/core]</code> When running global setup and teardown, do
not try to change the <code>message</code> property of the thrown error
object when the <code>message</code> property is unwritable (<a
href="https://redirect.github.com/jestjs/jest/pull/14113">#14113</a>)</li>
<li><code>[jest-snapshot]</code> Move <code>@types/prettier</code> from
<code>dependencies</code> to <code>devDependencies</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/14328">#14328</a>)</li>
<li><code>[jest-snapshot]</code> Throw an explicit error if Prettier v3
is used (<a
href="https://redirect.github.com/jestjs/jest/pull/14367">#14367</a>)</li>
<li><code>[jest-reporters]</code> Add &quot;skipped&quot; and
&quot;todo&quot; symbols to Github Actions Reporter (<a
href="https://redirect.github.com/jestjs/jest/pull/14309">#14309</a>)</li>
</ul>
<h3>Chore &amp; Maintenance</h3>
<ul>
<li><code>[@jest/core]</code> Use <code>pluralize</code> from
<code>jest-util</code> rather than own internal (<a
href="https://redirect.github.com/jestjs/jest/pull/14322">#14322</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0fd5b1c375"><code>0fd5b1c</code></a>
v29.6.2</li>
<li>See full diff in <a
href="https://github.com/facebook/jest/commits/v29.6.2/packages/jest">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=jest&package-manager=npm_and_yarn&previous-version=29.6.1&new-version=29.6.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-31 14:59:43 -05:00
dependabot[bot]
41450a03a9 chore(deps-dev): Update minitest requirement from ~> 5.18.0 to ~> 5.19.0 in /ruby (#402)
Updates the requirements on
[minitest](https://github.com/minitest/minitest) to permit the latest
version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/minitest/minitest/blob/master/History.rdoc">minitest's
changelog</a>.</em></p>
<blockquote>
<p>=== 5.19.0 / 2023-07-26</p>
<ul>
<li>
<p>2 minor enhancements:</p>
<ul>
<li>Add metadata lazy accessor to Runnable / Result. (matteeyah)</li>
<li>Only load minitest/unit (aka ancient MiniTest compatibility layer)
if ENV[&quot;MT_COMPAT&quot;]</li>
</ul>
</li>
<li>
<p>1 bug fix:</p>
<ul>
<li>Minitest::TestTask enthusiastically added itself to default.
(ParadoxV5)</li>
</ul>
</li>
</ul>
<p>=== 5.18.1 / 2023-06-16</p>
<ul>
<li>
<p>3 bug fixes:</p>
<ul>
<li>Avoid extra string allocations when filtering tests.
(tenderlove)</li>
<li>Only mention deprecated ENV['N'] if it is an integer string.</li>
<li>Push up test_order to Minitest::Runnable to fix minitest/hell.
(koic)</li>
</ul>
</li>
</ul>
<p>=== 5.18.0 / 2023-03-04</p>
<ul>
<li>
<p>2 major enhancements:</p>
<ul>
<li>Added assert_pattern &amp; refute_pattern for pattern matching.
(flavorjones)</li>
<li>Added matching must_pattern_match &amp; wont_pattern_match to
minitest/spec.</li>
</ul>
</li>
<li>
<p>1 bug fix:</p>
<ul>
<li>Support the new message format of NameError in Ruby 3.3 (mame)</li>
</ul>
</li>
</ul>
<p>=== 5.17.0 / 2022-12-31</p>
<ul>
<li>
<p>1 minor enhancement:</p>
<ul>
<li>Refactor setup hooks into a SETUP_METHODS constant. (MSP-Greg)</li>
</ul>
</li>
<li>
<p>3 bug fixes:</p>
<ul>
<li>Fix kwargs for Mock calls to delegator. (blowmage)</li>
<li>Fix kwargs for expectations. (bobmazanec, blowmage)</li>
<li>Remove check for .b method. (tenderlove)</li>
</ul>
</li>
</ul>
<p>=== 5.16.3 / 2022-08-17</p>
<ul>
<li>
<p>2 bug fixes:</p>
<ul>
<li>Fixed exception sanitization by removing TypeError restriction on
rescue.</li>
<li>Use A instead of deprecated TESTOPTS in rake test:slow.
(davidstosik)</li>
</ul>
</li>
</ul>
<p>=== 5.16.2 / 2022-07-03</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="96a9972916"><code>96a9972</code></a>
prepped for release</li>
<li><a
href="de802824b3"><code>de80282</code></a>
+ Add metadata lazy accessor to Runnable / Result. (matteeyah)</li>
<li><a
href="47959978df"><code>4795997</code></a>
- Minitest::TestTask enthusiastically added itself to default.
(ParadoxV5)</li>
<li><a
href="a2c6c18570"><code>a2c6c18</code></a>
+ Only load minitest/unit (aka ancient MiniTest compatibility layer) if
ENV[&quot;...</li>
<li><a
href="5f05692630"><code>5f05692</code></a>
Replace 'MiniTest' with 'Minitest' in example code. (sambostock)</li>
<li><a
href="31da3c6b8d"><code>31da3c6</code></a>
prepped for release</li>
<li><a
href="a90720a6c7"><code>a90720a</code></a>
Removed 2.6 from CI.</li>
<li><a
href="ca42951bbf"><code>ca42951</code></a>
- Avoid extra string allocations when filtering tests. (tenderlove)</li>
<li><a
href="e6f4a85e95"><code>e6f4a85</code></a>
- Only mention deprecated ENV['N'] if it is an integer string.</li>
<li><a
href="a9fa045044"><code>a9fa045</code></a>
- Push up test_order to Minitest::Runnable to fix minitest/hell.
(koic)</li>
<li>Additional commits viewable in <a
href="https://github.com/minitest/minitest/compare/v5.18.0...v5.19.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-31 14:59:19 -05:00
zach
26b34ed906 fix: Update more SDKs to store a reference to host functions in the Plugin type (#401)
Similar to https://github.com/extism/extism/pull/399
2023-07-31 11:25:47 -07:00
zach
ab4995dac2 fix(python): store reference to host functions on Plugin (#399)
This should fix the issue @neuronicnobody ran into with a segfault
depending on the scope of the host function definition
2023-07-28 15:08:10 -07:00
zach
3da526286e feat: Implement parts of the extism runtime in WebAssembly (#384)
This PR adds the `kernel` directory which contains a port of the Extism
memory allocator compiled to WebAssembly and removes
`runtime/src/memory.rs` completely.

Being able to re-use memory functions as a WASM module allows us to
begin to experiment with porting Extism to new runtimes!

This is in a draft state while I'm verifying some of these changes.
2023-07-27 11:31:23 -07:00
dependabot[bot]
618c132194 chore(deps-dev): Bump word-wrap from 1.2.3 to 1.2.4 in /browser (#394)
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3
to 1.2.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jonschlinkert/word-wrap/releases">word-wrap's
releases</a>.</em></p>
<blockquote>
<h2>1.2.4</h2>
<h2>What's Changed</h2>
<ul>
<li>Remove default indent by <a
href="https://github.com/mohd-akram"><code>@​mohd-akram</code></a> in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/24">jonschlinkert/word-wrap#24</a></li>
<li>🔒fix: CVE 2023 26115 (2) by <a
href="https://github.com/OlafConijn"><code>@​OlafConijn</code></a> in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/41">jonschlinkert/word-wrap#41</a></li>
<li>🔒 fix: CVE-2023-26115 by <a
href="https://github.com/aashutoshrathi"><code>@​aashutoshrathi</code></a>
in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/33">jonschlinkert/word-wrap#33</a></li>
<li>chore: publish workflow by <a
href="https://github.com/OlafConijn"><code>@​OlafConijn</code></a> in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/42">jonschlinkert/word-wrap#42</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/mohd-akram"><code>@​mohd-akram</code></a> made
their first contribution in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/24">jonschlinkert/word-wrap#24</a></li>
<li><a
href="https://github.com/OlafConijn"><code>@​OlafConijn</code></a> made
their first contribution in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/41">jonschlinkert/word-wrap#41</a></li>
<li><a
href="https://github.com/aashutoshrathi"><code>@​aashutoshrathi</code></a>
made their first contribution in <a
href="https://redirect.github.com/jonschlinkert/word-wrap/pull/33">jonschlinkert/word-wrap#33</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4">https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f64b188c72"><code>f64b188</code></a>
run verb to generate README</li>
<li><a
href="03ea08256b"><code>03ea082</code></a>
Merge pull request <a
href="https://redirect.github.com/jonschlinkert/word-wrap/issues/42">#42</a>
from jonschlinkert/chore/publish-workflow</li>
<li><a
href="420dce9a24"><code>420dce9</code></a>
Merge pull request <a
href="https://redirect.github.com/jonschlinkert/word-wrap/issues/41">#41</a>
from jonschlinkert/fix/CVE-2023-26115-2</li>
<li><a
href="bfa694edf5"><code>bfa694e</code></a>
Update .github/workflows/publish.yml</li>
<li><a
href="ace0b3c78f"><code>ace0b3c</code></a>
chore: bump version to 1.2.4</li>
<li><a
href="6fd7275946"><code>6fd7275</code></a>
chore: add publish workflow</li>
<li><a
href="30d6daf60f"><code>30d6daf</code></a>
chore: fix test</li>
<li><a
href="655929cabe"><code>655929c</code></a>
chore: remove package-lock</li>
<li><a
href="49e08bbc32"><code>49e08bb</code></a>
chore: added an additional testcase</li>
<li><a
href="9f626935f3"><code>9f62693</code></a>
fix: cve 2023-26115</li>
<li>Additional commits viewable in <a
href="https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=word-wrap&package-manager=npm_and_yarn&previous-version=1.2.3&new-version=1.2.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/extism/extism/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-20 08:30:36 -05:00
dependabot[bot]
f4aa139ece chore(deps-dev): Bump ex_doc from 0.30.1 to 0.30.3 in /elixir (#390)
Bumps [ex_doc](https://github.com/elixir-lang/ex_doc) from 0.30.1 to
0.30.3.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/elixir-lang/ex_doc/blob/main/CHANGELOG.md">ex_doc's
changelog</a>.</em></p>
<blockquote>
<h2>v0.30.3 (2023-07-15)</h2>
<ul>
<li>
<p>Enhancements</p>
<ul>
<li>Compress search index before storing in local storage</li>
</ul>
</li>
<li>
<p>Bug fixes</p>
<ul>
<li>Fix styling for headers on cheatsheets and small screens</li>
</ul>
</li>
</ul>
<h2>v0.30.2 (2023-07-11)</h2>
<ul>
<li>Bug fixes
<ul>
<li>Fix escaping in <code>search_data.json</code></li>
<li>Skip vega-lite code blocks in <code>search_data.json</code></li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/elixir-lang/ex_doc/commits">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ex_doc&package-manager=hex&previous-version=0.30.1&new-version=0.30.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-17 11:06:03 -05:00
dependabot[bot]
4548480c0b chore(deps-dev): Bump @types/node from 20.4.1 to 20.4.2 in /node (#391)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 20.4.1 to 20.4.2.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.4.1&new-version=20.4.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-17 11:05:53 -05:00
dependabot[bot]
7db38fd10e chore(deps-dev): Bump @types/jest from 29.5.2 to 29.5.3 in /node (#392)
Bumps
[@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest)
from 29.5.2 to 29.5.3.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jest&package-manager=npm_and_yarn&previous-version=29.5.2&new-version=29.5.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-17 11:05:44 -05:00
dependabot[bot]
58f7d5fa95 chore(deps): Bump tough-cookie from 4.1.2 to 4.1.3 in /browser (#389)
Bumps [tough-cookie](https://github.com/salesforce/tough-cookie) from
4.1.2 to 4.1.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/salesforce/tough-cookie/releases">tough-cookie's
releases</a>.</em></p>
<blockquote>
<h2>4.1.3</h2>
<p>Security fix for Prototype Pollution discovery in <a
href="https://redirect.github.com/salesforce/tough-cookie/issues/282">#282</a>.
This is a minor release, although output from the <code>inspect</code>
utility is affected by this change, we felt this change was important
enough to be pushed into the next patch.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4ff4d29f6c"><code>4ff4d29</code></a>
4.1.3 release preparation, update the package and lib/version to 4.1.3.
(<a
href="https://redirect.github.com/salesforce/tough-cookie/issues/284">#284</a>)</li>
<li><a
href="12d474791b"><code>12d4747</code></a>
Prevent prototype pollution in cookie memstore (<a
href="https://redirect.github.com/salesforce/tough-cookie/issues/283">#283</a>)</li>
<li><a
href="f06b72d1d4"><code>f06b72d</code></a>
Fix documentation for store.findCookies, missing allowSpecialUseDomain
proper...</li>
<li>See full diff in <a
href="https://github.com/salesforce/tough-cookie/compare/v4.1.2...v4.1.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tough-cookie&package-manager=npm_and_yarn&previous-version=4.1.2&new-version=4.1.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/extism/extism/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-10 10:57:38 -05:00
dependabot[bot]
f10539a431 chore(deps-dev): Bump ex_doc from 0.29.4 to 0.30.1 in /elixir (#388)
Bumps [ex_doc](https://github.com/elixir-lang/ex_doc) from 0.29.4 to
0.30.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/elixir-lang/ex_doc/blob/main/CHANGELOG.md">ex_doc's
changelog</a>.</em></p>
<blockquote>
<h2>v0.30.1 (2023-07-07)</h2>
<ul>
<li>Bug fixes
<ul>
<li>Fix styling for headers on cheatsheets and small screens</li>
</ul>
</li>
</ul>
<h2>v0.30.0 (2023-07-07)</h2>
<ul>
<li>
<p>Enhancements</p>
<ul>
<li>Support tabsets (see the README for more information)</li>
<li>Improve search results and indexing by storing more data and
metadata</li>
<li>Warn on invalid references in links</li>
<li>Strike-through deprecated items on autocompletion</li>
<li>Add source URL link to API reference page</li>
<li>Allow multiple extra files with the same name by generating unique
names in case of conflicts</li>
</ul>
</li>
<li>
<p>Bug fixes</p>
<ul>
<li>Fix rendering of large code blocks in admonition texts</li>
<li>Do not log errors on module mismatch in case-insensitive file
systems</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0d2f4dc62d"><code>0d2f4dc</code></a>
Release v0.30.1</li>
<li><a
href="0e9349ef73"><code>0e9349e</code></a>
Update assets</li>
<li><a
href="11dda904d2"><code>11dda90</code></a>
Fix bugs in headers</li>
<li><a
href="2ffaa811b0"><code>2ffaa81</code></a>
Release v0.30.0</li>
<li><a
href="964a22658c"><code>964a226</code></a>
Update assets</li>
<li><a
href="091fb70432"><code>091fb70</code></a>
Revert &quot;Make dummy assets change&quot;</li>
<li><a
href="948825d73f"><code>948825d</code></a>
Update assets</li>
<li><a
href="7e661dc589"><code>7e661dc</code></a>
Make dummy assets change</li>
<li><a
href="7d3d195acb"><code>7d3d195</code></a>
Update assets on CI (<a
href="https://redirect.github.com/elixir-lang/ex_doc/issues/1731">#1731</a>)</li>
<li><a
href="c54c5e63d9"><code>c54c5e6</code></a>
Remove padding on anchor</li>
<li>Additional commits viewable in <a
href="https://github.com/elixir-lang/ex_doc/compare/v0.29.4...v0.30.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ex_doc&package-manager=hex&previous-version=0.29.4&new-version=0.30.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-10 10:57:25 -05:00
dependabot[bot]
e26e6d2da1 chore(deps-dev): Bump @types/node from 20.3.3 to 20.4.1 in /node (#387)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 20.3.3 to 20.4.1.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.3.3&new-version=20.4.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-10 10:57:17 -05:00
dependabot[bot]
70a9a3da66 chore(deps-dev): Bump prettier from 2.8.8 to 3.0.0 in /node (#386)
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.8 to
3.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/releases">prettier's
releases</a>.</em></p>
<blockquote>
<h2>3.0.0</h2>
<p><a
href="https://github.com/prettier/prettier/compare/3.0.0-alpha.6...3.0.0">diff</a></p>
<p>🔗 <a href="https://prettier.io/blog/2023/07/05/3.0.0.html">Release
note</a></p>
<h2>3.0.0-alpha.6</h2>
<h2>What's Changed</h2>
<ul>
<li>Update <code>.d.ts</code> files of plugins to use <code>export
default ...</code> by <a
href="https://github.com/fisker"><code>@​fisker</code></a> in <a
href="https://redirect.github.com/prettier/prettier/pull/14435">prettier/prettier#14435</a></li>
</ul>
<p>Other changes since v2, see <a
href="https://github.com/prettier/prettier/releases/tag/3.0.0-alpha.1"><code>3.0.0-alpha.1</code>
release notes</a></p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/prettier/prettier/compare/3.0.0-alpha.5...3.0.0-alpha.6">https://github.com/prettier/prettier/compare/3.0.0-alpha.5...3.0.0-alpha.6</a></p>
<h2>3.0.0-alpha.5</h2>
<h2>What's Changed</h2>
<ul>
<li>Add <code>.d.ts</code> files by <a
href="https://github.com/sosukesuzuki"><code>@​sosukesuzuki</code></a>
in <a
href="https://redirect.github.com/prettier/prettier/pull/14212">prettier/prettier#14212</a></li>
<li>Support TypeScript 5 via <code>babel-ts</code> parser by <a
href="https://github.com/fisker"><code>@​fisker</code></a> in <a
href="https://redirect.github.com/prettier/prettier/pull/14391">prettier/prettier#14391</a></li>
</ul>
<p>Other changes since v2, see <a
href="https://github.com/prettier/prettier/releases/tag/3.0.0-alpha.1"><code>3.0.0-alpha.1</code>
release notes</a></p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/prettier/prettier/compare/3.0.0-alpha.4...3.0.0-alpha.5">https://github.com/prettier/prettier/compare/3.0.0-alpha.4...3.0.0-alpha.5</a></p>
<h2>3.0.0-alpha.4</h2>
<h2>What's Changed</h2>
<ul>
<li>Remove support for Flow comment types by <a
href="https://github.com/thorn0"><code>@​thorn0</code></a> in <a
href="https://redirect.github.com/prettier/prettier/pull/13687">prettier/prettier#13687</a></li>
<li>Make <code>resolveParser</code> work like v2 by <a
href="https://github.com/fisker"><code>@​fisker</code></a> in <a
href="https://redirect.github.com/prettier/prettier/pull/13732">prettier/prettier#13732</a></li>
<li>Add <code>__debug</code> apis to cjs version by <a
href="https://github.com/fisker"><code>@​fisker</code></a> in <a
href="https://redirect.github.com/prettier/prettier/pull/13731">prettier/prettier#13731</a></li>
</ul>
<p>Other changes since v2, see <a
href="https://github.com/prettier/prettier/releases/tag/3.0.0-alpha.1"><code>3.0.0-alpha.1</code>
release notes</a></p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/prettier/prettier/compare/3.0.0-alpha.3...3.0.0-alpha.4">https://github.com/prettier/prettier/compare/3.0.0-alpha.3...3.0.0-alpha.4</a></p>
<h2>3.0.0-alpha.3</h2>
<ul>
<li>Fix <code>exports</code> field in <code>package.json</code>
file</li>
</ul>
<p>Other changes since v2, see <a
href="https://github.com/prettier/prettier/releases/tag/3.0.0-alpha.1"><code>3.0.0-alpha.1</code>
release notes</a></p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/prettier/prettier/compare/3.0.0-alpha.2...3.0.0-alpha.3">https://github.com/prettier/prettier/compare/3.0.0-alpha.2...3.0.0-alpha.3</a></p>
<h2>3.0.0-alpha.2</h2>
<ul>
<li>Fix bundled <code>index.cjs</code> file</li>
</ul>
<p>Other changes since v2, see <a
href="https://github.com/prettier/prettier/releases/tag/3.0.0-alpha.1"><code>3.0.0-alpha.1</code>
release notes</a></p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/prettier/prettier/compare/3.0.0-alpha.1...3.0.0-alpha.2">https://github.com/prettier/prettier/compare/3.0.0-alpha.1...3.0.0-alpha.2</a></p>
<h2>3.0.0-alpha.1</h2>
<p><strong>If you are a plugin developer, please try this version and
send us feedback! Feel free to ping <a
href="https://github.com/fisker"><code>@​fisker</code></a> if you have
any questions about v3 migration.</strong></p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md">prettier's
changelog</a>.</em></p>
<blockquote>
<h1>3.0.0</h1>
<p><a
href="https://github.com/prettier/prettier/compare/3.0.0-alpha.6...3.0.0">diff</a></p>
<p>🔗 <a href="https://prettier.io/blog/2023/07/05/3.0.0.html">Release
Notes</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="186e0966b0"><code>186e096</code></a>
Release 3.0.0</li>
<li><a
href="44979b0a37"><code>44979b0</code></a>
Remove test step from release script (<a
href="https://redirect.github.com/prettier/prettier/issues/15011">#15011</a>)</li>
<li><a
href="e12afe89f3"><code>e12afe8</code></a>
Regenerate yarn.lock file (<a
href="https://redirect.github.com/prettier/prettier/issues/15010">#15010</a>)</li>
<li><a
href="db31fd602e"><code>db31fd6</code></a>
Regenerate yarn.lock file for website (<a
href="https://redirect.github.com/prettier/prettier/issues/15009">#15009</a>)</li>
<li><a
href="1a0d9ed800"><code>1a0d9ed</code></a>
chore(deps): update dependency cosmiconfig to v8.2.0 (<a
href="https://redirect.github.com/prettier/prettier/issues/14901">#14901</a>)</li>
<li><a
href="25fa483e35"><code>25fa483</code></a>
chore(deps): update dependency typescript to v5.1.5 (<a
href="https://redirect.github.com/prettier/prettier/issues/14896">#14896</a>)</li>
<li><a
href="d0759650b8"><code>d075965</code></a>
chore(deps): update dependency webpack to v5.88.1 (<a
href="https://redirect.github.com/prettier/prettier/issues/14994">#14994</a>)</li>
<li><a
href="d97f78db99"><code>d97f78d</code></a>
chore(deps): update dependency webpack to v5.88.1 (<a
href="https://redirect.github.com/prettier/prettier/issues/14995">#14995</a>)</li>
<li><a
href="f1ef433e98"><code>f1ef433</code></a>
chore(deps): update dependency flow-parser to v0.211.0 (<a
href="https://redirect.github.com/prettier/prettier/issues/15002">#15002</a>)</li>
<li><a
href="61804e2516"><code>61804e2</code></a>
chore(deps): update dependency espree to v9.6.0 (<a
href="https://redirect.github.com/prettier/prettier/issues/15000">#15000</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/prettier/prettier/compare/2.8.8...3.0.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=prettier&package-manager=npm_and_yarn&previous-version=2.8.8&new-version=3.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-10 10:57:09 -05:00
dependabot[bot]
b86f6267f6 chore(deps-dev): Bump jest from 29.5.0 to 29.6.1 in /node (#385)
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest)
from 29.5.0 to 29.6.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/facebook/jest/releases">jest's
releases</a>.</em></p>
<blockquote>
<h2>v29.6.1</h2>
<h2>Fixes</h2>
<ul>
<li><code>[jest-circus]</code> Revert <a
href="https://redirect.github.com/jestjs/jest/pull/14110">#14110</a> as
it was a breaking change (<a
href="https://redirect.github.com/jestjs/jest/pull/14304">#14304</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/jestjs/jest/compare/v29.6.0...v29.6.1">https://github.com/jestjs/jest/compare/v29.6.0...v29.6.1</a></p>
<h2>v29.6.0</h2>
<h2>Features</h2>
<ul>
<li><code>[jest-circus, jest-snapshot]</code> Add support for snapshot
matchers in concurrent tests (<a
href="https://redirect.github.com/jestjs/jest/pull/14139">#14139</a>)</li>
<li><code>[jest-cli]</code> Include type definitions to generated config
files (<a
href="https://redirect.github.com/facebook/jest/pull/14078">#14078</a>)</li>
<li><code>[jest-snapshot]</code> Support arrays as property matchers (<a
href="https://redirect.github.com/facebook/jest/pull/14025">#14025</a>)</li>
<li><code>[jest-core, jest-circus, jest-reporter, jest-runner]</code>
Added support for reporting about start individual test cases using
jest-circus (<a
href="https://redirect.github.com/jestjs/jest/pull/14174">#14174</a>)</li>
</ul>
<h2>Fixes</h2>
<ul>
<li><code>[jest-circus]</code> Prevent false test failures caused by
promise rejections handled asynchronously (<a
href="https://redirect.github.com/jestjs/jest/pull/14110">#14110</a>)</li>
<li><code>[jest-config]</code> Handle frozen config object (<a
href="https://redirect.github.com/facebook/jest/pull/14054">#14054</a>)</li>
<li><code>[jest-config]</code> Allow <code>coverageDirectory</code> and
<code>collectCoverageFrom</code> in project config (<a
href="https://redirect.github.com/jestjs/jest/pull/14180">#14180</a>)</li>
<li><code>[jest-core]</code> Always use workers in watch mode to avoid
crashes (<a
href="https://redirect.github.com/facebook/jest/pull/14059">#14059</a>).</li>
<li><code>[jest-environment-jsdom, jest-environment-node]</code> Fix
assignment of <code>customExportConditions</code> via
<code>testEnvironmentOptions</code> when custom env subclass defines a
default value (<a
href="https://redirect.github.com/facebook/jest/pull/13989">#13989</a>)</li>
<li><code>[jest-matcher-utils]</code> Fix copying value of inherited
getters (<a
href="https://redirect.github.com/facebook/jest/pull/14007">#14007</a>)</li>
<li><code>[jest-mock]</code> Tweak typings to allow
<code>jest.replaceProperty()</code> replace methods (<a
href="https://redirect.github.com/facebook/jest/pull/14008">#14008</a>)</li>
<li><code>[jest-mock]</code> Improve user input validation and error
messages of <code>spyOn</code> and <code>replaceProperty</code> methods
(<a
href="https://redirect.github.com/facebook/jest/pull/14087">#14087</a>)</li>
<li><code>[jest-runtime]</code> Bind
<code>jest.isolateModulesAsync</code> to <code>this</code> (<a
href="https://redirect.github.com/facebook/jest/pull/14083">#14083</a>)</li>
<li><code>[jest-runtime]</code> Forward <code>wrapperLength</code> to
the <code>Script</code> constructor as <code>columnOffset</code> for
accurate debugging (<a
href="https://redirect.github.com/facebook/jest/pull/14148">#14148</a>)</li>
<li><code>[jest-runtime]</code> Guard <code>_isMockFunction</code>
access with <code>in</code> (<a
href="https://redirect.github.com/facebook/jest/pull/14188">#14188</a>)</li>
<li><code>[jest-snapshot]</code> Fix a potential bug when not using
prettier and improve performance (<a
href="https://redirect.github.com/facebook/jest/pull/14036">#14036</a>)</li>
<li><code>[@jest/transform]</code> Do not instrument <code>.json</code>
modules (<a
href="https://redirect.github.com/facebook/jest/pull/14048">#14048</a>)</li>
<li><code>[jest-worker]</code> Restart a shut down worker before sending
it a task (<a
href="https://redirect.github.com/facebook/jest/pull/14015">#14015</a>)</li>
</ul>
<h2>Chore &amp; Maintenance</h2>
<ul>
<li><code>[*]</code> Update <code>semver</code> dependency to get
vulnerability fix (<a
href="https://redirect.github.com/jestjs/jest/pull/14262">#14262</a>)</li>
<li><code>[docs]</code> Updated documentation for the
<code>--runTestsByPath</code> CLI command (<a
href="https://redirect.github.com/facebook/jest/pull/14004">#14004</a>)</li>
<li><code>[docs]</code> Updated documentation regarding the synchronous
fallback when asynchronous code transforms are unavailable (<a
href="https://redirect.github.com/facebook/jest/pull/14056">#14056</a>)</li>
<li><code>[docs]</code> Update jest statistics of use and downloads in
website Index.</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/huntie"><code>@​huntie</code></a> made
their first contribution in <a
href="https://redirect.github.com/jestjs/jest/pull/13989">jestjs/jest#13989</a></li>
<li><a href="https://github.com/liammulh"><code>@​liammulh</code></a>
made their first contribution in <a
href="https://redirect.github.com/jestjs/jest/pull/14001">jestjs/jest#14001</a></li>
<li><a
href="https://github.com/BenceSzalai"><code>@​BenceSzalai</code></a>
made their first contribution in <a
href="https://redirect.github.com/jestjs/jest/pull/14007">jestjs/jest#14007</a></li>
<li><a href="https://github.com/Mike-Dax"><code>@​Mike-Dax</code></a>
made their first contribution in <a
href="https://redirect.github.com/jestjs/jest/pull/14056">jestjs/jest#14056</a></li>
<li><a
href="https://github.com/bakasmarius"><code>@​bakasmarius</code></a>
made their first contribution in <a
href="https://redirect.github.com/jestjs/jest/pull/14025">jestjs/jest#14025</a></li>
<li><a
href="https://github.com/PeteTheHeat"><code>@​PeteTheHeat</code></a>
made their first contribution in <a
href="https://redirect.github.com/jestjs/jest/pull/14015">jestjs/jest#14015</a></li>
<li><a
href="https://github.com/tjenkinson"><code>@​tjenkinson</code></a> made
their first contribution in <a
href="https://redirect.github.com/jestjs/jest/pull/14083">jestjs/jest#14083</a></li>
<li><a
href="https://github.com/soyjuanmacias"><code>@​soyjuanmacias</code></a>
made their first contribution in <a
href="https://redirect.github.com/jestjs/jest/pull/14101">jestjs/jest#14101</a></li>
<li><a
href="https://github.com/bharathkalyans"><code>@​bharathkalyans</code></a>
made their first contribution in <a
href="https://redirect.github.com/jestjs/jest/pull/14154">jestjs/jest#14154</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/jestjs/jest/blob/main/CHANGELOG.md">jest's
changelog</a>.</em></p>
<blockquote>
<h2>29.6.1</h2>
<h3>Fixes</h3>
<ul>
<li><code>[jest-circus]</code> Revert <a
href="https://redirect.github.com/jestjs/jest/pull/14110">#14110</a> as
it was a breaking change (<a
href="https://redirect.github.com/jestjs/jest/pull/14304">#14304</a>)</li>
</ul>
<h2>29.6.0</h2>
<h3>Features</h3>
<ul>
<li><code>[jest-circus, jest-snapshot]</code> Add support for snapshot
matchers in concurrent tests (<a
href="https://redirect.github.com/jestjs/jest/pull/14139">#14139</a>)</li>
<li><code>[jest-cli]</code> Include type definitions to generated config
files (<a
href="https://redirect.github.com/facebook/jest/pull/14078">#14078</a>)</li>
<li><code>[jest-snapshot]</code> Support arrays as property matchers (<a
href="https://redirect.github.com/facebook/jest/pull/14025">#14025</a>)</li>
<li><code>[jest-core, jest-circus, jest-reporter, jest-runner]</code>
Added support for reporting about start individual test cases using
jest-circus (<a
href="https://redirect.github.com/jestjs/jest/pull/14174">#14174</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li><code>[jest-circus]</code> Prevent false test failures caused by
promise rejections handled asynchronously (<a
href="https://redirect.github.com/jestjs/jest/pull/14110">#14110</a>)</li>
<li><code>[jest-config]</code> Handle frozen config object (<a
href="https://redirect.github.com/facebook/jest/pull/14054">#14054</a>)</li>
<li><code>[jest-config]</code> Allow <code>coverageDirectory</code> and
<code>collectCoverageFrom</code> in project config (<a
href="https://redirect.github.com/jestjs/jest/pull/14180">#14180</a>)</li>
<li><code>[jest-core]</code> Always use workers in watch mode to avoid
crashes (<a
href="https://redirect.github.com/facebook/jest/pull/14059">#14059</a>).</li>
<li><code>[jest-environment-jsdom, jest-environment-node]</code> Fix
assignment of <code>customExportConditions</code> via
<code>testEnvironmentOptions</code> when custom env subclass defines a
default value (<a
href="https://redirect.github.com/facebook/jest/pull/13989">#13989</a>)</li>
<li><code>[jest-matcher-utils]</code> Fix copying value of inherited
getters (<a
href="https://redirect.github.com/facebook/jest/pull/14007">#14007</a>)</li>
<li><code>[jest-mock]</code> Tweak typings to allow
<code>jest.replaceProperty()</code> replace methods (<a
href="https://redirect.github.com/facebook/jest/pull/14008">#14008</a>)</li>
<li><code>[jest-mock]</code> Improve user input validation and error
messages of <code>spyOn</code> and <code>replaceProperty</code> methods
(<a
href="https://redirect.github.com/facebook/jest/pull/14087">#14087</a>)</li>
<li><code>[jest-runtime]</code> Bind
<code>jest.isolateModulesAsync</code> to <code>this</code> (<a
href="https://redirect.github.com/facebook/jest/pull/14083">#14083</a>)</li>
<li><code>[jest-runtime]</code> Forward <code>wrapperLength</code> to
the <code>Script</code> constructor as <code>columnOffset</code> for
accurate debugging (<a
href="https://redirect.github.com/facebook/jest/pull/14148">#14148</a>)</li>
<li><code>[jest-runtime]</code> Guard <code>_isMockFunction</code>
access with <code>in</code> (<a
href="https://redirect.github.com/facebook/jest/pull/14188">#14188</a>)</li>
<li><code>[jest-snapshot]</code> Fix a potential bug when not using
prettier and improve performance (<a
href="https://redirect.github.com/facebook/jest/pull/14036">#14036</a>)</li>
<li><code>[@jest/transform]</code> Do not instrument <code>.json</code>
modules (<a
href="https://redirect.github.com/facebook/jest/pull/14048">#14048</a>)</li>
<li><code>[jest-worker]</code> Restart a shut down worker before sending
it a task (<a
href="https://redirect.github.com/facebook/jest/pull/14015">#14015</a>)</li>
</ul>
<h3>Chore &amp; Maintenance</h3>
<ul>
<li><code>[*]</code> Update <code>semver</code> dependency to get
vulnerability fix (<a
href="https://redirect.github.com/jestjs/jest/pull/14262">#14262</a>)</li>
<li><code>[docs]</code> Updated documentation for the
<code>--runTestsByPath</code> CLI command (<a
href="https://redirect.github.com/facebook/jest/pull/14004">#14004</a>)</li>
<li><code>[docs]</code> Updated documentation regarding the synchronous
fallback when asynchronous code transforms are unavailable (<a
href="https://redirect.github.com/facebook/jest/pull/14056">#14056</a>)</li>
<li><code>[docs]</code> Update jest statistics of use and downloads in
website Index.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1f019afdcd"><code>1f019af</code></a>
v29.6.1</li>
<li><a
href="c1e5b8a38e"><code>c1e5b8a</code></a>
v29.6.0</li>
<li><a
href="6ffa48d1cd"><code>6ffa48d</code></a>
chore: upgrade TypeScript to v5 (<a
href="https://github.com/facebook/jest/tree/HEAD/packages/jest/issues/14155">#14155</a>)</li>
<li><a
href="a95eeb6c2c"><code>a95eeb6</code></a>
chore: update tsd runner (<a
href="https://github.com/facebook/jest/tree/HEAD/packages/jest/issues/14020">#14020</a>)</li>
<li>See full diff in <a
href="https://github.com/facebook/jest/commits/v29.6.1/packages/jest">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=jest&package-manager=npm_and_yarn&previous-version=29.5.0&new-version=29.6.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-10 10:57:00 -05:00
dependabot[bot]
6a49a6ee7c chore(deps-dev): Bump typescript from 5.1.3 to 5.1.6 in /node (#380)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.1.3
to 5.1.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Microsoft/TypeScript/releases">typescript's
releases</a>.</em></p>
<blockquote>
<h2>TypeScript 5.1.5</h2>
<p>For release notes, check out the <a
href="https://devblogs.microsoft.com/typescript/announcing-typescript-5-1/">release
announcement</a>.</p>
<p>For the complete list of fixed issues, check out the</p>
<ul>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.1.0%22+is%3Aclosed+">fixed
issues query for Typescript v5.1.0 (Beta)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.1.1%22+is%3Aclosed+">fixed
issues query for Typescript v5.1.1 (RC)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.1.2%22+is%3Aclosed+">fixed
issues query for Typescript v5.1.2 (Stable)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.1.3%22+is%3Aclosed+">fixed
issues query for Typescript v5.1.3 (Stable)</a>.</li>
<li>(5.1.4 <a
href="https://redirect.github.com/microsoft/TypeScript/issues/53031#issuecomment-1610038922">intentionally
skipped</a>)</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.1.5%22+is%3Aclosed+">fixed
issues query for Typescript v5.1.5 (Stable)</a>.</li>
</ul>
<p>Downloads are available on:</p>
<ul>
<li><a href="https://www.npmjs.com/package/typescript">npm</a></li>
<li><a
href="https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild">NuGet
package</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/Microsoft/TypeScript/commits">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typescript&package-manager=npm_and_yarn&previous-version=5.1.3&new-version=5.1.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-06 16:57:01 -05:00
dependabot[bot]
3b5fea71d7 chore(deps-dev): Bump @types/node from 20.3.1 to 20.3.3 in /node (#381)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 20.3.1 to 20.3.3.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.3.1&new-version=20.3.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-06 16:56:54 -05:00
dependabot[bot]
c0ccf7558c chore(deps-dev): Bump ts-jest from 29.1.0 to 29.1.1 in /node (#382)
Bumps [ts-jest](https://github.com/kulshekhar/ts-jest) from 29.1.0 to
29.1.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/kulshekhar/ts-jest/releases">ts-jest's
releases</a>.</em></p>
<blockquote>
<h2>v29.1.1</h2>
<p>Please refer to <a
href="https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md">ts-jest's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/kulshekhar/ts-jest/compare/v29.1.0...v29.1.1">29.1.1</a>
(2023-06-23)</h2>
<h3>Security Fixes</h3>
<ul>
<li>bump <code>semver</code> to <code>7.5.3</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9670787b08"><code>9670787</code></a>
chore(release): 29.1.1 (<a
href="https://redirect.github.com/kulshekhar/ts-jest/issues/4173">#4173</a>)</li>
<li><a
href="8c51d3252c"><code>8c51d32</code></a>
build(deps): Update actions/checkout digest to c85c95e (<a
href="https://redirect.github.com/kulshekhar/ts-jest/issues/4172">#4172</a>)</li>
<li><a
href="0f82024897"><code>0f82024</code></a>
build(deps): bump semver from 7.3.7 to 7.5.2 in /examples/react-app (<a
href="https://redirect.github.com/kulshekhar/ts-jest/issues/4170">#4170</a>)</li>
<li><a
href="431dca69cd"><code>431dca6</code></a>
build(deps): bump semver from 7.5.1 to 7.5.2 (<a
href="https://redirect.github.com/kulshekhar/ts-jest/issues/4169">#4169</a>)</li>
<li><a
href="f4f7daeafd"><code>f4f7dae</code></a>
build(deps): Update <a
href="https://github.com/types"><code>@​types</code></a> packages (<a
href="https://redirect.github.com/kulshekhar/ts-jest/issues/4164">#4164</a>)</li>
<li><a
href="5e551acf30"><code>5e551ac</code></a>
build(deps): Update dependency <code>@​formatjs/ts-transformer</code> to
^3.13.3 (<a
href="https://redirect.github.com/kulshekhar/ts-jest/issues/4165">#4165</a>)</li>
<li><a
href="2925d0e0ab"><code>2925d0e</code></a>
build(deps): Update dependency <code>@​formatjs/ts-transformer</code> to
^3.13.2 (<a
href="https://redirect.github.com/kulshekhar/ts-jest/issues/4160">#4160</a>)</li>
<li><a
href="71c7786128"><code>71c7786</code></a>
build(deps): Update <a
href="https://github.com/types"><code>@​types</code></a> packages to
^5.59.9 (<a
href="https://redirect.github.com/kulshekhar/ts-jest/issues/4159">#4159</a>)</li>
<li><a
href="099102e4a6"><code>099102e</code></a>
build(deps): Update dependency typescript to ~5.1.3 (<a
href="https://redirect.github.com/kulshekhar/ts-jest/issues/4157">#4157</a>)</li>
<li><a
href="6e5a29414e"><code>6e5a294</code></a>
build(deps): Update dependency eslint to ^8.42.0 (<a
href="https://redirect.github.com/kulshekhar/ts-jest/issues/4158">#4158</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/kulshekhar/ts-jest/compare/v29.1.0...v29.1.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ts-jest&package-manager=npm_and_yarn&previous-version=29.1.0&new-version=29.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-06 16:56:46 -05:00
dependabot[bot]
35a6887e9f chore(deps): Bump rustler from 0.28.0 to 0.29.1 in /elixir (#383)
Bumps [rustler](https://github.com/rusterlium/rustler) from 0.28.0 to
0.29.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rusterlium/rustler/releases">rustler's
releases</a>.</em></p>
<blockquote>
<h2>rustler-0.29.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix NifTaggedEnum derived Encoder impl for named-field variants by
<a href="https://github.com/dylanburati"><code>@​dylanburati</code></a>
in <a
href="https://redirect.github.com/rusterlium/rustler/pull/547">rusterlium/rustler#547</a></li>
<li>Exclude directories from external resources to be compatible with
Elixir 1.15 by <a
href="https://github.com/adrienmo"><code>@​adrienmo</code></a> in <a
href="https://redirect.github.com/rusterlium/rustler/pull/548">rusterlium/rustler#548</a></li>
<li>Remove cfg! directives in build.rs causing cross-compilation to fail
by <a
href="https://github.com/fabriziosestito"><code>@​fabriziosestito</code></a>
in <a
href="https://redirect.github.com/rusterlium/rustler/pull/555">rusterlium/rustler#555</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/rusterlium/rustler/compare/rustler-0.28.0...rustler-0.29.0">https://github.com/rusterlium/rustler/compare/rustler-0.28.0...rustler-0.29.0</a></p>
<h2>rustler-0.29.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Make rustler_sys forward compatible by <a
href="https://github.com/filmor"><code>@​filmor</code></a> in <a
href="https://redirect.github.com/rusterlium/rustler/pull/536">rusterlium/rustler#536</a></li>
<li>Add OTP26 to CI and bump rustler_sys by <a
href="https://github.com/filmor"><code>@​filmor</code></a> in <a
href="https://redirect.github.com/rusterlium/rustler/pull/539">rusterlium/rustler#539</a></li>
<li>Introduce CI cache by <a
href="https://github.com/filmor"><code>@​filmor</code></a> in <a
href="https://redirect.github.com/rusterlium/rustler/pull/541">rusterlium/rustler#541</a></li>
<li>Drop OTP23 entirely from CI and use -latest for all OS versions by
<a href="https://github.com/filmor"><code>@​filmor</code></a> in <a
href="https://redirect.github.com/rusterlium/rustler/pull/542">rusterlium/rustler#542</a></li>
<li>Use features for minimal NIF version by <a
href="https://github.com/filmor"><code>@​filmor</code></a> in <a
href="https://redirect.github.com/rusterlium/rustler/pull/537">rusterlium/rustler#537</a></li>
<li>Apply current NIF version for tests and raise default by <a
href="https://github.com/filmor"><code>@​filmor</code></a> in <a
href="https://redirect.github.com/rusterlium/rustler/pull/543">rusterlium/rustler#543</a></li>
<li>rustler: add a Rust type <code>ErlOption&lt;T&gt;</code> by <a
href="https://github.com/tatsuya6502"><code>@​tatsuya6502</code></a> in
<a
href="https://redirect.github.com/rusterlium/rustler/pull/507">rusterlium/rustler#507</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/rusterlium/rustler/compare/rustler-0.28.0...rustler-0.29.0">https://github.com/rusterlium/rustler/compare/rustler-0.28.0...rustler-0.29.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rusterlium/rustler/blob/master/CHANGELOG.md">rustler's
changelog</a>.</em></p>
<blockquote>
<h2>[0.29.1] - 2023-06-30</h2>
<h3>Fixed</h3>
<ul>
<li>Exclude directories from external resources for compatibility with
Elixir 1.15
(<a
href="https://redirect.github.com/rusterlium/rustler/issues/548">#548</a>,
thanks <a
href="https://github.com/adrienmo"><code>@​adrienmo</code></a>)</li>
<li>Fix <code>NifTaggedEnum</code> derived <code>Encoder</code> impl for
named-field variants (<a
href="https://redirect.github.com/rusterlium/rustler/issues/547">#547</a>,
thanks <a
href="https://github.com/dylanburati"><code>@​dylanburati</code></a>)</li>
<li>Remove <code>cfg!</code> directives in build.rs causing
cross-compilation to fail (<a
href="https://redirect.github.com/rusterlium/rustler/issues/555">#555</a>,
thanks <a
href="https://github.com/fabriziosestito"><code>@​fabriziosestito</code></a>)</li>
</ul>
<h2>[0.29.0] - 2023-06-22</h2>
<h3>Added</h3>
<ul>
<li><code>ErlOption&lt;T&gt;</code> to provide an ergonomic option type
for Erlang (<a
href="https://redirect.github.com/rusterlium/rustler/issues/507">#507</a>,
thanks <a
href="https://github.com/tatsuya6502"><code>@​tatsuya6502</code></a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Use Cargo features to define the NIF version level (<a
href="https://redirect.github.com/rusterlium/rustler/issues/537">#537</a>),
deprecating
<code>RUSTLER_NIF_VERSION</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b817a6829a"><code>b817a68</code></a>
(release) 0.29.1</li>
<li><a
href="2e2e9248f0"><code>2e2e924</code></a>
Update changelog</li>
<li><a
href="9cfdcfc47a"><code>9cfdcfc</code></a>
use env variables instead of cfg! (<a
href="https://redirect.github.com/rusterlium/rustler/issues/555">#555</a>)</li>
<li><a
href="ea132ea08a"><code>ea132ea</code></a>
Fix NifTaggedEnum derived Encoder impl for named-field variants (<a
href="https://redirect.github.com/rusterlium/rustler/issues/547">#547</a>)</li>
<li><a
href="2cbc53ac3a"><code>2cbc53a</code></a>
Exclude directories from external resources (<a
href="https://redirect.github.com/rusterlium/rustler/issues/548">#548</a>)</li>
<li><a
href="78f7477705"><code>78f7477</code></a>
Roll changelog over</li>
<li><a
href="016e35bf8f"><code>016e35b</code></a>
Bump rustler_sys for feature-based NIF level selection</li>
<li><a
href="95d6961b29"><code>95d6961</code></a>
Make rustler depend on rustler_sys with features</li>
<li><a
href="680126bd61"><code>680126b</code></a>
(release) 0.29.0</li>
<li><a
href="d8aa66d976"><code>d8aa66d</code></a>
Merge pull request <a
href="https://redirect.github.com/rusterlium/rustler/issues/507">#507</a>
from tatsuya6502/erl-option</li>
<li>Additional commits viewable in <a
href="https://github.com/rusterlium/rustler/compare/rustler-0.28.0...rustler-0.29.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rustler&package-manager=hex&previous-version=0.28.0&new-version=0.29.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-06 16:56:37 -05:00
Doğu Us
81e51fb059 fix: update for latest Zig (#379) 2023-07-01 10:37:00 -07:00
zach
f606ab619f chore: use a range for wasmtime dependency version (#375)
Currently wasmtime `8.0.0` - `10.0.0` are compatible with
`extism-runtime`, in the interest of remaining compatible with as many
applications as possible, this PR updates the wasmtime version
requirement from a single version to a range of acceptable versions.
2023-06-20 15:34:01 -07:00
dependabot[bot]
c78104a846 chore(deps-dev): Bump @types/node from 20.3.0 to 20.3.1 in /node (#371)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 20.3.0 to 20.3.1.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.3.0&new-version=20.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-20 17:29:32 -05:00
dependabot[bot]
59101d80a6 chore(deps-dev): Bump @types/node from 20.2.5 to 20.3.0 in /node (#370)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 20.2.5 to 20.3.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.2.5&new-version=20.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-11 21:05:07 -05:00
dependabot[bot]
b3b5e67abb chore(deps-dev): Bump typescript from 5.0.4 to 5.1.3 in /node (#365)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.0.4
to 5.1.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Microsoft/TypeScript/releases">typescript's
releases</a>.</em></p>
<blockquote>
<h2>TypeScript 5.1.3</h2>
<p>For release notes, check out the <a
href="https://devblogs.microsoft.com/typescript/announcing-typescript-5-1/">release
announcement</a>.</p>
<p>For the complete list of fixed issues, check out the</p>
<ul>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.1.0%22+is%3Aclosed+">fixed
issues query for Typescript 5.1.0 (Beta)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.1.1%22+is%3Aclosed+">fixed
issues query for Typescript 5.1.1 (RC)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.1.3%22+is%3Aclosed+">fixed
issues query for Typescript 5.1.3 (Stable)</a>.</li>
</ul>
<p>Downloads are available on:</p>
<ul>
<li><a
href="https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild">NuGet
package</a></li>
</ul>
<h2>TypeScript 5.1 RC</h2>
<p>For release notes, check out the <a
href="https://devblogs.microsoft.com/typescript/announcing-typescript-5-1-rc/">release
announcement</a>.</p>
<p>For the complete list of fixed issues, check out the</p>
<ul>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.1.0%22+is%3Aclosed+">fixed
issues query for Typescript 5.1.0 (Beta)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.1.1%22+is%3Aclosed+">fixed
issues query for Typescript 5.1.1 (RC)</a>.</li>
</ul>
<p>Downloads are available on:</p>
<ul>
<li><a
href="https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild">NuGet
package</a></li>
</ul>
<h2>TypeScript 5.1 Beta</h2>
<p>For release notes, check out the <a
href="https://devblogs.microsoft.com/typescript/announcing-typescript-5-1-beta/">release
announcement</a>.</p>
<p>For the complete list of fixed issues, check out the</p>
<ul>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=is%3Aissue+milestone%3A%22TypeScript+5.1.0%22+is%3Aclosed+">fixed
issues query for Typescript 5.1.0 (Beta)</a>.</li>
</ul>
<p>Downloads are available on:</p>
<ul>
<li><a
href="https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild">NuGet
package</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7275ded359"><code>7275ded</code></a>
Bump version to 5.1.3 and update LKG.</li>
<li><a
href="1143a21f03"><code>1143a21</code></a>
🤖 Pick PR <a
href="https://redirect.github.com/Microsoft/TypeScript/issues/54454">#54454</a>
(Use <code>replaceAll</code> instead of an inco...) into release-5.1
(#...</li>
<li><a
href="b7d523ecbb"><code>b7d523e</code></a>
🤖 Pick PR <a
href="https://redirect.github.com/Microsoft/TypeScript/issues/54450">#54450</a>
(Resolve tslib re-exports before che...) into release-5.1 (#...</li>
<li><a
href="a360d9fb3a"><code>a360d9f</code></a>
🤖 Pick PR <a
href="https://redirect.github.com/Microsoft/TypeScript/issues/54315">#54315</a>
(add baseline for linked editing) into release-5.1 (<a
href="https://redirect.github.com/Microsoft/TypeScript/issues/54419">#54419</a>)</li>
<li><a
href="c8da9d59fe"><code>c8da9d5</code></a>
🤖 Pick PR <a
href="https://redirect.github.com/Microsoft/TypeScript/issues/54358">#54358</a>
(Don't use text change's `createNewF...) into release-5.1 (#...</li>
<li><a
href="cede745ab3"><code>cede745</code></a>
Cherry-picks 544d432 into release-5.1.</li>
<li><a
href="a38e4f5749"><code>a38e4f5</code></a>
🤖 Pick PR <a
href="https://redirect.github.com/Microsoft/TypeScript/issues/54169">#54169</a>
(Fix creation of composite union typ...) into release-5.1 (#...</li>
<li><a
href="898edb5381"><code>898edb5</code></a>
🤖 Pick PR <a
href="https://redirect.github.com/Microsoft/TypeScript/issues/54208">#54208</a>
(Properly handle <code>typeof this.xxx</code> i...) into release-5.1
(#...</li>
<li><a
href="42e783930e"><code>42e7839</code></a>
🤖 Pick PR <a
href="https://redirect.github.com/Microsoft/TypeScript/issues/54317">#54317</a>
(Resolve re-exports when looking for...) into release-5.1 (#...</li>
<li><a
href="ed924d0585"><code>ed924d0</code></a>
🤖 Pick PR <a
href="https://redirect.github.com/Microsoft/TypeScript/issues/54112">#54112</a>
(Fix <code>isGenericReducibleType</code> to all...) into release-5.1
(#...</li>
<li>Additional commits viewable in <a
href="https://github.com/Microsoft/TypeScript/compare/v5.0.4...v5.1.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typescript&package-manager=npm_and_yarn&previous-version=5.0.4&new-version=5.1.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-11 21:04:26 -05:00
dependabot[bot]
128b3173a8 chore(deps-dev): Bump typedoc from 0.24.7 to 0.24.8 in /node (#364)
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.24.7 to
0.24.8.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/TypeDoc/releases">typedoc's
releases</a>.</em></p>
<blockquote>
<h2>v0.24.8</h2>
<h3>Features</h3>
<ul>
<li>Added support for TypeScript 5.1, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2296">#2296</a>.</li>
<li>Added <code>navigation.fullTree</code> to control rendering the full
navigation tree on each page, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2287">#2287</a>.
This option will likely be replaced in 0.25 with dynamic loading of the
full tree.</li>
<li>TypeDoc's <code>--pretty</code> option now also controls whether
generated HTML contains line breaks, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2287">#2287</a>.</li>
<li>Optimized icon caching to reduce file size in generated HTML
documentation, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2287">#2287</a>.</li>
<li>Render property description of &quot;roughly top level&quot; object
types, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2276">#2276</a>.</li>
<li>Added <code>MarkdownEvent.INCLUDE</code> for plugins, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2284">#2284</a>.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>When rendering functions/methods, TypeDoc will now render the
comment summary above the parameters/return type,
and any other block tags in the order they are defined in the comment,
<a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2285">#2285</a>.</li>
<li>Comments are no longer removed from classes/interfaces containing
call signatures, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2290">#2290</a>.</li>
</ul>
<h3>Thanks!</h3>
<ul>
<li><a
href="https://github.com/krisztianb"><code>@​krisztianb</code></a></li>
<li><a href="https://github.com/WikiRik"><code>@​WikiRik</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md">typedoc's
changelog</a>.</em></p>
<blockquote>
<h2>v0.24.8 (2023-06-04)</h2>
<h3>Features</h3>
<ul>
<li>Added support for TypeScript 5.1, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2296">#2296</a>.</li>
<li>Added <code>navigation.fullTree</code> to control rendering the full
navigation tree on each page, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2287">#2287</a>.
This option will likely be replaced in 0.25 with dynamic loading of the
full tree.</li>
<li>TypeDoc's <code>--pretty</code> option now also controls whether
generated HTML contains line breaks, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2287">#2287</a>.</li>
<li>Optimized icon caching to reduce file size in generated HTML
documentation, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2287">#2287</a>.</li>
<li>Render property description of &quot;roughly top level&quot; object
types, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2276">#2276</a>.</li>
<li>Added <code>MarkdownEvent.INCLUDE</code> for plugins, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2284">#2284</a>.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>When rendering functions/methods, TypeDoc will now render the
comment summary above the parameters/return type,
and any other block tags in the order they are defined in the comment,
<a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2285">#2285</a>.</li>
<li>Comments are no longer removed from classes/interfaces containing
call signatures, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2290">#2290</a>.</li>
</ul>
<h3>Thanks!</h3>
<ul>
<li><a
href="https://github.com/krisztianb"><code>@​krisztianb</code></a></li>
<li><a href="https://github.com/WikiRik"><code>@​WikiRik</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c1c87c6fda"><code>c1c87c6</code></a>
Update changelog for release</li>
<li><a
href="0b2a8ea78a"><code>0b2a8ea</code></a>
Bump version to 0.24.8</li>
<li><a
href="60c4d533e5"><code>60c4d53</code></a>
Add navigation.fullTree option</li>
<li><a
href="82016b82b5"><code>82016b8</code></a>
Update changelog</li>
<li><a
href="4ad6a31776"><code>4ad6a31</code></a>
Add test for unrelated getter/setter types</li>
<li><a
href="d05a49b088"><code>d05a49b</code></a>
Added support for TypeScript 5.1 (<a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2300">#2300</a>)</li>
<li><a
href="6d92e84b8a"><code>6d92e84</code></a>
Render objects one level deep</li>
<li><a
href="c9dee384b0"><code>c9dee38</code></a>
Update comment rendering for functions</li>
<li><a
href="2624c288fa"><code>2624c28</code></a>
Fix call signature handling on classes/interfaces</li>
<li><a
href="5b9ead63d3"><code>5b9ead6</code></a>
Update changelog</li>
<li>Additional commits viewable in <a
href="https://github.com/TypeStrong/TypeDoc/compare/v0.24.7...v0.24.8">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typedoc&package-manager=npm_and_yarn&previous-version=0.24.7&new-version=0.24.8)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-11 21:04:07 -05:00
dependabot[bot]
ef0b6b46ac chore(deps-dev): Bump @types/jest from 29.5.1 to 29.5.2 in /node (#363)
Bumps
[@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest)
from 29.5.1 to 29.5.2.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jest&package-manager=npm_and_yarn&previous-version=29.5.1&new-version=29.5.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-11 21:03:47 -05:00
zach
2e5f5ef716 fix(rust): fix lifetime of data returned from Plugin::call (#369) 2023-06-09 12:07:14 -07:00
zach
360df45e1a fix: require modules to have exported, bounded memory when manifest memory.max_pages field is set (#356)
- Requires modules compiled to run with manifests that set `max_memory`
to have an exported memory with lower and upper bounds
- Includes the size of memory exported from modules when calculating
available memory for plugins

## How to compile a module with bounded memory 

You will need to pass `--max-memory=$NUM_BYTES` to wasm-ld. `$NUM_BYTES`
must be a multiple of the page size. Here are some examples for
supported PDK languages:

**C** 
Pass `-Wl,--max-memory=65536` to your C compiler

**Rust**: 
In a `.cargo/config` file:
```toml
[target.wasm32-unknown-unknown]
rustflags = ["-Clink-args=--max-memory=65536"]
 ```
**Haskell**
Add the following to the cabal file entry for your `cabal.project` file:

```
package myproject
  ghc-options:
    -optl -Wl,--max-memory=65536
```
**AssemblyScript**
Pass `--maximumMemory 65536` to the assemblyscropt compiler

**TinyGo**:
Create a `target.json` file:
```json
{
    "inherits": [ "wasm" ],
    "ldflags": [
        "--max-memory=65536",
    ]
}
```
and build using `tinygo -target ./target.json`
2023-06-01 09:37:42 -07:00
dependabot[bot]
3bdf4ef0d0 chore(deps-dev): Bump @types/node from 20.2.3 to 20.2.5 in /node (#358)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 20.2.3 to 20.2.5.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.2.3&new-version=20.2.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-31 11:59:31 -05:00
dependabot[bot]
0517aca413 chore(deps-dev): Bump @types/node from 20.1.4 to 20.2.3 in /node (#353)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 20.1.4 to 20.2.3.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.1.4&new-version=20.2.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-23 21:34:11 -05:00
zach
a6807a44c9 fix(ocaml): update dune-project file (#355)
See
https://github.com/ocaml/opam-repository/pull/23806#discussion_r1201772532
2023-05-23 09:35:32 -07:00
zach
dc6f99d924 cleanup(ocaml): add bounds on extism-manifest dependency (#354) 2023-05-23 09:31:16 -07:00
Benjamin Eckel
62267e874a chore(java): release Java SDK (#352) 2023-05-19 16:29:12 -05:00
Benjamin Eckel
ab0a7c1650 chore(elixir): Bump to 0.4.0 (#350) 2023-05-19 16:01:16 -05:00
Benjamin Eckel
12820aecff fix: ignore already published manifest (#351) 2023-05-19 15:35:35 -05:00
Benjamin Eckel
1db4528490 chore: Bump SDK versions for 0.4.0 release (#349)
Co-authored-by: zach <zach@dylibso.com>
2023-05-19 15:22:58 -05:00
Benjamin Eckel
d0f77dd886 release: Bump runtime to 0.4.0 (#340)
## Breaking Changes

* https://github.com/extism/extism/pull/315

HTTP calls will be disallowed by default now. If you want to enable HTTP
you need to specify the hosts that the plug-in is allowed to communicate
with. If you want to allow all hosts you can set it to `{allowed_hosts:
["*"]}` in the manifest. However, this isn't recommended unless you have
some trust in the plug-in or are controlling the networking by some
other means.

* https://github.com/extism/extism/pull/335

In this PR we are creating an implicit context so people don't need to
know about it if they don't care. In some languages function signatures
have changed to make context an optional argument when creating a
plug-in.
2023-05-19 13:34:35 -05:00
Benjamin Eckel
4016b86135 fix(ruby): fix implicit context (#348) 2023-05-18 15:59:50 -05:00
Benjamin Eckel
6a73b23076 feat(php): Implicit context (#347) 2023-05-18 15:59:17 -05:00
zach
0c70be285d feat: add EXTISM_PROFILE environment variable to configure profiling (#326)
This could also be extended to support other wasmtime-based profiling
methods, for now just `perf` is supported.

Co-authored-by: zach <zach@dylib.so>
2023-05-18 10:39:23 -05:00
zach
c1c84379d7 fix: use UserData::make_copy instead of UserData::new_pointer to preserve is_any field (#346)
Co-authored-by: zach <zach@dylib.so>
2023-05-17 11:41:29 -07:00
zach
0f8954c203 feat!: add ability to create plugins without an existing Context (#335)
EIP: https://github.com/extism/proposals/pull/8

This PR makes minor breaking changes to several SDKs, but not to runtime
C API. The threadsafety updates in the Rust SDK are kind of specific to
Rust, I'm not sure if it makes sense to add the locks to all the other
SDKs at this point. For the most part the `Context` and `Plugin` types
in the SDKs should be safe to use protected by a mutex but they aren't
inherently threadsafe. That kind of locking should probably be done by
the user.

- Runtime 
  - improve thread safety
  - reinstantiates less
- fixes a potential resource exhaustion bug from re-instantiating using
the same store too many times
- Rust SDK
  - adds `Send` and `Sync` implementations for `Context`
  - adds test sharing a context between threads
- adds `Plugin::call_map` to call a plugin and handle the output with
the lock held
  - adds testing sharing an `Arc<Mutex<Plugin>>` between threads
- adds `Plugin::create` and `Plugin::create_from_manifest` to create a
plugin without a `Context`
- Python
  - BREAKING
- changes `Plugin` constructor to take `context` as an optional named
argument, to update use `Plugin(data, context=context)` instead
 - Ruby
   - BREAKING
- changes `Plugin` constructor to take `context` as an optional named
argument, to update use `Plugin.new(data, context=context)` instead
 - Go
   - adds `NewPlugin` and `NewPluginFromManifest` functions
 - Node
   - BREAKING
- changes `Plugin` constructor to take `context` as an optional named
argument, to update use `new Plugin(data, wasi, config, host, context)`
instead of `new Plugin(context, data, wasi, functions, config)` (most
people are probably using `context.plugin` instead of the Plugin
constructor anyway)
 - OCaml
   - BREAKING
- changes `Plugin.create` and `Plugin.of_manifest` to take `context` as
an optional named argument, to update `Plugin.create ~context data` and
`Plugin.of_manifest ~context data` instead
- Haskell
  - adds `createPlugin` and `createPluginFromManifest` functions
 - Elixir
- adds `Plugin.new` to make a plugin without going through
`Context.new_plugin`
 - Java
   - adds new `Plugin` constructors without a `Context` argument
- C++
  - BREAKING
- Updates `Plugin` constructor to take an optional context as the last
argument, instead of requiring it to be the first argument
- Use `Plugin(wasm, wasi, functions, ctx)` instead of `Plugin(ctx, wasm,
wasi, functions)`
 - Zig
- Adds `Plugin.create` and `Plugin.createWithManifest` to create plugins
in their own context.

---------

Co-authored-by: zach <zach@dylib.so>
Co-authored-by: Benjamin Eckel <bhelx@simst.im>
2023-05-17 11:35:16 -07:00
Benjamin Eckel
deb717b0e8 fix(elixir): Fix nif package build and release as 0.3.2 (#345)
Published this fix as 0.3.2: https://github.com/extism/extism/issues/343

going to disconnect this rust project for the time being. If we want to
publish a new elixir client with the new runtime then we must wait until
the runtime hit's crates.io
2023-05-16 16:33:38 -05:00
Benjamin Eckel
bb3902e318 fix(php): $err is not implicitly cast to string (#344)
Co-authored-by: Steve Manuel <steve@dylib.so>
2023-05-15 15:54:01 -05:00
dependabot[bot]
86326117cc chore(deps-dev): Bump @types/node from 20.1.0 to 20.1.4 in /node (#342)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 20.1.0 to 20.1.4.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.1.0&new-version=20.1.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-15 08:39:43 -05:00
zach
a0ec6a3083 fix(rust): use CString for strings passed to to set_log_file (#341) 2023-05-12 09:23:31 -07:00
dependabot[bot]
3e5785e50c chore(deps-dev): Bump @types/node from 18.16.3 to 20.1.0 in /node (#337)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 18.16.3 to 20.1.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=18.16.3&new-version=20.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-08 09:56:58 -05:00
dependabot[bot]
67aa3627fc chore(deps-dev): Bump typedoc from 0.24.6 to 0.24.7 in /node (#338)
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.24.6 to
0.24.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/TypeDoc/releases">typedoc's
releases</a>.</em></p>
<blockquote>
<h2>v0.24.7</h2>
<h3>Features</h3>
<ul>
<li>TypeDoc will now allow conversion without any entry points to
support &quot;readme only&quot; packages, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2264">#2264</a>.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Category children are now sorted according to the <code>sort</code>
option, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2272">#2272</a>.</li>
<li>Inline tags no longer require a space after the tag name to be
parsed as a tag, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2273">#2273</a>.</li>
<li>Fixed module/namespace links in navigation when viewed in Safari, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2275">#2275</a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md">typedoc's
changelog</a>.</em></p>
<blockquote>
<h2>v0.24.7 (2023-05-08)</h2>
<h3>Features</h3>
<ul>
<li>TypeDoc will now allow conversion without any entry points to
support &quot;readme only&quot; packages, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2264">#2264</a>.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Category children are now sorted according to the <code>sort</code>
option, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2272">#2272</a>.</li>
<li>Inline tags no longer require a space after the tag name to be
parsed as a tag, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2273">#2273</a>.</li>
<li>Fixed module/namespace links in navigation when viewed in Safari, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2275">#2275</a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c5d1ec5c7c"><code>c5d1ec5</code></a>
Update changelog for release</li>
<li><a
href="0756981818"><code>0756981</code></a>
Bump version to 0.24.7</li>
<li><a
href="a4028d72ff"><code>a4028d7</code></a>
Update changelog</li>
<li><a
href="56abed5b92"><code>56abed5</code></a>
Fix navigation on Safari, hopefully fixes <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2275">#2275</a></li>
<li><a
href="515e8b7636"><code>515e8b7</code></a>
Fix inline tag parsing</li>
<li><a
href="26df2accb3"><code>26df2ac</code></a>
Support readme only packages</li>
<li><a
href="eb181508c2"><code>eb18150</code></a>
Fix <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2272">#2272</a>
category sort order</li>
<li><a
href="5d38df12de"><code>5d38df1</code></a>
Add a test for <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2270">#2270</a></li>
<li>See full diff in <a
href="https://github.com/TypeStrong/TypeDoc/compare/v0.24.6...v0.24.7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typedoc&package-manager=npm_and_yarn&previous-version=0.24.6&new-version=0.24.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-08 09:56:50 -05:00
Benjamin Eckel
15a74e07fb chore: fix warnings coming from dotnet compiler (#336) 2023-05-05 16:46:41 -05:00
dependabot[bot]
16950cbdda chore(deps-dev): Bump @types/node from 18.16.0 to 18.16.3 in /node (#329)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 18.16.0 to 18.16.3.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=18.16.0&new-version=18.16.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-01 11:29:54 -05:00
dependabot[bot]
ba7098b52a chore(deps): Update rustler requirement from 0.27.0 to 0.28.0 (#330)
Updates the requirements on
[rustler](https://github.com/rusterlium/rustler) to permit the latest
version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rusterlium/rustler/releases">rustler's
releases</a>.</em></p>
<blockquote>
<h2>rustler-0.28.0</h2>
<h3>Added</h3>
<ul>
<li>Support OTP 26 (<a
href="https://redirect.github.com/rusterlium/rustler/issues/526">#526</a>,
thanks <a
href="https://github.com/philss"><code>@​philss</code></a>)</li>
<li>Support tuples in NIF macro (<a
href="https://redirect.github.com/rusterlium/rustler/issues/520">#520</a>,
<a
href="https://redirect.github.com/rusterlium/rustler/issues/527">#527</a>,
thanks <a
href="https://github.com/denumerate"><code>@​denumerate</code></a> and
<a href="https://github.com/philss"><code>@​philss</code></a>)</li>
<li>Supportfor <code>load_data_fun</code> to compute
<code>load_data</code> at runtime (<a
href="https://redirect.github.com/rusterlium/rustler/issues/413">#413</a>,
thanks <a
href="https://github.com/kaaboaye"><code>@​kaaboaye</code></a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Enhanced NIF macro error messages for invalid attributes (<a
href="https://redirect.github.com/rusterlium/rustler/issues/525">#525</a>,
thanks <a
href="https://github.com/philss"><code>@​philss</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rusterlium/rustler/blob/master/CHANGELOG.md">rustler's
changelog</a>.</em></p>
<blockquote>
<h2>[0.28.0] - 2023-04-24</h2>
<h3>Added</h3>
<ul>
<li>Support OTP 26 (<a
href="https://redirect.github.com/rusterlium/rustler/issues/526">#526</a>,
thanks <a
href="https://github.com/philss"><code>@​philss</code></a>)</li>
<li>Support tuples in NIF macro (<a
href="https://redirect.github.com/rusterlium/rustler/issues/520">#520</a>,
<a
href="https://redirect.github.com/rusterlium/rustler/issues/527">#527</a>,
thanks <a
href="https://github.com/denumerate"><code>@​denumerate</code></a> and
<a href="https://github.com/philss"><code>@​philss</code></a>)</li>
<li>Supportfor <code>load_data_fun</code> to compute
<code>load_data</code> at runtime (<a
href="https://redirect.github.com/rusterlium/rustler/issues/413">#413</a>,
thanks <a
href="https://github.com/kaaboaye"><code>@​kaaboaye</code></a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Enhanced NIF macro error messages for invalid attributes (<a
href="https://redirect.github.com/rusterlium/rustler/issues/525">#525</a>,
thanks <a
href="https://github.com/philss"><code>@​philss</code></a>)</li>
</ul>
<h2>[0.27.0] - 2023-01-17</h2>
<h3>BREAKING</h3>
<ul>
<li><code>MIX_ENV</code> is no longer considered for determining the
build profile. Now, the
profile defaults to <code>:release</code>. Use the <code>:mode</code>
option to pick another
profile explicitly. (<a
href="https://redirect.github.com/rusterlium/rustler/issues/496">#496</a>)</li>
</ul>
<h3>Added</h3>
<ul>
<li><code>ResourceArc::make_binary</code> for safe use of
<code>enif_make_resource_binary</code> (<a
href="https://redirect.github.com/rusterlium/rustler/issues/487">#487</a>)</li>
<li><code>OwnedBinary</code> is now <code>Sync</code> (<a
href="https://redirect.github.com/rusterlium/rustler/issues/493">#493</a>)</li>
<li>Specified MSRV to be 1.56.1.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Documentation for <code>load</code> (<a
href="https://redirect.github.com/rusterlium/rustler/issues/501">#501</a>,
thanks <a
href="https://github.com/ishitatsuyuki"><code>@​ishitatsuyuki</code></a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Edition 2021 for the rustler mix template (<a
href="https://redirect.github.com/rusterlium/rustler/issues/512">#512</a>,
thanks <a
href="https://github.com/ayrat555"><code>@​ayrat555</code></a>)</li>
</ul>
<h2>[0.26.0] - 2022-09-02</h2>
<h3>Highlight</h3>
<h4>TaggedEnum</h4>
<p>We added <code>TaggedEnum</code>, which is a generalized enum type
(<a
href="https://redirect.github.com/rusterlium/rustler/issues/440">#440</a>,
thanks to <a
href="https://github.com/SeokminHong"><code>@​SeokminHong</code></a>!).
Example:</p>
<pre lang="rust"><code>#[derive(NifTaggedEnum)]
pub enum TaggedEnum1 {
    Named { x: i32, y: i32 },
    String1(String),
    String2(String),
    Untagged,
}
&lt;/tr&gt;&lt;/table&gt; 
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d4e0a7bd2b"><code>d4e0a7b</code></a>
(release) 0.28.0</li>
<li><a
href="7eb6728fd0"><code>7eb6728</code></a>
Merge pull request <a
href="https://redirect.github.com/rusterlium/rustler/issues/532">#532</a>
from evnu/prepare-v0.28.0</li>
<li><a
href="6492af3bc2"><code>6492af3</code></a>
Prepare release 0.28.0</li>
<li><a
href="6420093e63"><code>6420093</code></a>
Merge pull request <a
href="https://redirect.github.com/rusterlium/rustler/issues/531">#531</a>
from evnu/ensure-msrv-1.56.1</li>
<li><a
href="517878953e"><code>5178789</code></a>
Use non-captured identifier in format string</li>
<li><a
href="cb8c1e71e9"><code>cb8c1e7</code></a>
Merge pull request <a
href="https://redirect.github.com/rusterlium/rustler/issues/413">#413</a>
from surferlocal/dynamic-load_data</li>
<li><a
href="f40cfec453"><code>f40cfec</code></a>
Merge branch 'master' into dynamic-load_data</li>
<li><a
href="f1aaa3b6d8"><code>f1aaa3b</code></a>
Fix clippy issues for Rust &gt;= 1.42 (<a
href="https://redirect.github.com/rusterlium/rustler/issues/528">#528</a>)</li>
<li><a
href="51bf30ef2f"><code>51bf30e</code></a>
add windows support</li>
<li><a
href="a101c937ff"><code>a101c93</code></a>
(release) 0.27.0</li>
<li>Additional commits viewable in <a
href="https://github.com/rusterlium/rustler/compare/rustler-0.27.0...rustler-0.28.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-01 11:29:44 -05:00
dependabot[bot]
3718f21f4a chore(deps): Bump rustler from 0.27.0 to 0.28.0 in /elixir (#331)
Bumps [rustler](https://github.com/rusterlium/rustler) from 0.27.0 to
0.28.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rusterlium/rustler/releases">rustler's
releases</a>.</em></p>
<blockquote>
<h2>rustler-0.28.0</h2>
<h3>Added</h3>
<ul>
<li>Support OTP 26 (<a
href="https://redirect.github.com/rusterlium/rustler/issues/526">#526</a>,
thanks <a
href="https://github.com/philss"><code>@​philss</code></a>)</li>
<li>Support tuples in NIF macro (<a
href="https://redirect.github.com/rusterlium/rustler/issues/520">#520</a>,
<a
href="https://redirect.github.com/rusterlium/rustler/issues/527">#527</a>,
thanks <a
href="https://github.com/denumerate"><code>@​denumerate</code></a> and
<a href="https://github.com/philss"><code>@​philss</code></a>)</li>
<li>Supportfor <code>load_data_fun</code> to compute
<code>load_data</code> at runtime (<a
href="https://redirect.github.com/rusterlium/rustler/issues/413">#413</a>,
thanks <a
href="https://github.com/kaaboaye"><code>@​kaaboaye</code></a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Enhanced NIF macro error messages for invalid attributes (<a
href="https://redirect.github.com/rusterlium/rustler/issues/525">#525</a>,
thanks <a
href="https://github.com/philss"><code>@​philss</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rusterlium/rustler/blob/master/CHANGELOG.md">rustler's
changelog</a>.</em></p>
<blockquote>
<h2>[0.28.0] - 2023-04-24</h2>
<h3>Added</h3>
<ul>
<li>Support OTP 26 (<a
href="https://redirect.github.com/rusterlium/rustler/issues/526">#526</a>,
thanks <a
href="https://github.com/philss"><code>@​philss</code></a>)</li>
<li>Support tuples in NIF macro (<a
href="https://redirect.github.com/rusterlium/rustler/issues/520">#520</a>,
<a
href="https://redirect.github.com/rusterlium/rustler/issues/527">#527</a>,
thanks <a
href="https://github.com/denumerate"><code>@​denumerate</code></a> and
<a href="https://github.com/philss"><code>@​philss</code></a>)</li>
<li>Supportfor <code>load_data_fun</code> to compute
<code>load_data</code> at runtime (<a
href="https://redirect.github.com/rusterlium/rustler/issues/413">#413</a>,
thanks <a
href="https://github.com/kaaboaye"><code>@​kaaboaye</code></a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Enhanced NIF macro error messages for invalid attributes (<a
href="https://redirect.github.com/rusterlium/rustler/issues/525">#525</a>,
thanks <a
href="https://github.com/philss"><code>@​philss</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d4e0a7bd2b"><code>d4e0a7b</code></a>
(release) 0.28.0</li>
<li><a
href="7eb6728fd0"><code>7eb6728</code></a>
Merge pull request <a
href="https://redirect.github.com/rusterlium/rustler/issues/532">#532</a>
from evnu/prepare-v0.28.0</li>
<li><a
href="6492af3bc2"><code>6492af3</code></a>
Prepare release 0.28.0</li>
<li><a
href="6420093e63"><code>6420093</code></a>
Merge pull request <a
href="https://redirect.github.com/rusterlium/rustler/issues/531">#531</a>
from evnu/ensure-msrv-1.56.1</li>
<li><a
href="517878953e"><code>5178789</code></a>
Use non-captured identifier in format string</li>
<li><a
href="cb8c1e71e9"><code>cb8c1e7</code></a>
Merge pull request <a
href="https://redirect.github.com/rusterlium/rustler/issues/413">#413</a>
from surferlocal/dynamic-load_data</li>
<li><a
href="f40cfec453"><code>f40cfec</code></a>
Merge branch 'master' into dynamic-load_data</li>
<li><a
href="f1aaa3b6d8"><code>f1aaa3b</code></a>
Fix clippy issues for Rust &gt;= 1.42 (<a
href="https://redirect.github.com/rusterlium/rustler/issues/528">#528</a>)</li>
<li><a
href="51bf30ef2f"><code>51bf30e</code></a>
add windows support</li>
<li><a
href="a101c937ff"><code>a101c93</code></a>
(release) 0.27.0</li>
<li>Additional commits viewable in <a
href="https://github.com/rusterlium/rustler/compare/rustler-0.27.0...rustler-0.28.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rustler&package-manager=hex&previous-version=0.27.0&new-version=0.28.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-01 11:29:33 -05:00
Benjamin Eckel
4e5108bc69 chore: publish dotnet host 0.5.0 (#333) 2023-05-01 11:08:07 -05:00
Benjamin Eckel
9d758e7fd3 chore: publish browser host (#332)
Publishes the latest changes, including #306
2023-05-01 10:39:57 -05:00
zach
48699a0126 chore: update to wasmtime 8.0.0 (#323) 2023-04-27 11:42:14 -07:00
dependabot[bot]
32e5ab161c chore(deps-dev): Bump typedoc from 0.24.4 to 0.24.6 in /node (#324)
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.24.4 to
0.24.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/TypeDoc/releases">typedoc's
releases</a>.</em></p>
<blockquote>
<h2>v0.24.6</h2>
<h3>Features</h3>
<ul>
<li>Improved error messaging if a provided entry point could not be
converted into a documented module reflection, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2242">#2242</a>.</li>
<li>API: Added support for <code>g</code>, <code>circle</code>,
<code>ellipse</code>, <code>polygon</code>, and <code>polyline</code>
svg elements, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2259">#2259</a>.</li>
<li>Extended <code>jsDocCompatibility</code> option with
<code>inheritDocTag</code> to ignore fully lowercase
<code>inheritDoc</code> tags and
<code>ignoreUnescapedBraces</code> to disable warnings about unescaped
<code>{</code> and <code>}</code> characters in comments.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><code>--useTsLinkResolution</code> is no longer ignored within block
tags, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2260">#2260</a>.</li>
<li>The current namespace will also be expanded in the navigation on
page load, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2260">#2260</a>.</li>
<li>Fixed flicker of navigation pane when reloading a page caused by
updating expansion state after the page was loaded.</li>
<li>Fixed an infinite loop if more than one entry point was provided,
and all entry points were the same.</li>
</ul>
<h3>Thanks!</h3>
<ul>
<li><a
href="https://github.com/FlippieCoetser"><code>@​FlippieCoetser</code></a></li>
</ul>
<h2>v0.24.5</h2>
<h3>Features</h3>
<ul>
<li>Categories and groups can now be shown in the navigation, added
<code>--navigation.includeCategories</code>
and <code>--navigation.includeGroups</code> to control this behavior.
The <code>--categorizeByGroup</code> option also
effects this behavior. If <code>categorizeByGroup</code> is set (the
default) and <code>navigation.includeGroups</code> is
<em>not</em> set, the value of <code>navigation.includeCategories</code>
will be effectively ignored since categories
will be created only within groups, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/1532">#1532</a>.</li>
<li>Added support for discovering a &quot;module&quot; comment on global
files, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2165">#2165</a>.</li>
<li>Added copy code to clipboard button, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2153">#2153</a>.</li>
<li>Function <code>@returns</code> blocks will now be rendered with the
return type, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2180">#2180</a>.</li>
<li>Added <code>--groupOrder</code> option to specify the sort order of
groups, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2251">#2251</a>.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Type parameter constraints now respect the
<code>--hideParameterTypesInTitle</code> option, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2226">#2226</a>.</li>
<li>Even more contrast fixes, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2248">#2248</a>.</li>
<li>Fix semantic highlighting for predicate type's parameter references,
<a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2249">#2249</a>.</li>
<li>Fixed broken links to heading titles.</li>
<li>Fixed inconsistent styling between type parameter lists and
parameter lists.</li>
<li>TypeDoc will now warn if more than one <code>@returns</code> block
is is present in a function, and ignore the duplicate blocks as
specified by TSDoc.</li>
</ul>
<h3>Thanks!</h3>
<ul>
<li><a
href="https://github.com/FlippieCoetser"><code>@​FlippieCoetser</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md">typedoc's
changelog</a>.</em></p>
<blockquote>
<h2>v0.24.6 (2023-04-24)</h2>
<h3>Features</h3>
<ul>
<li>Improved error messaging if a provided entry point could not be
converted into a documented module reflection, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2242">#2242</a>.</li>
<li>API: Added support for <code>g</code>, <code>circle</code>,
<code>ellipse</code>, <code>polygon</code>, and <code>polyline</code>
svg elements, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2259">#2259</a>.</li>
<li>Extended <code>jsDocCompatibility</code> option with
<code>inheritDocTag</code> to ignore fully lowercase
<code>inheritDoc</code> tags and
<code>ignoreUnescapedBraces</code> to disable warnings about unescaped
<code>{</code> and <code>}</code> characters in comments.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><code>--useTsLinkResolution</code> is no longer ignored within block
tags, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2260">#2260</a>.</li>
<li>The current namespace will also be expanded in the navigation on
page load, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2260">#2260</a>.</li>
<li>Fixed flicker of navigation pane when reloading a page caused by
updating expansion state after the page was loaded.</li>
<li>Fixed an infinite loop if more than one entry point was provided,
and all entry points were the same.</li>
</ul>
<h3>Thanks!</h3>
<ul>
<li><a
href="https://github.com/FlippieCoetser"><code>@​FlippieCoetser</code></a></li>
</ul>
<h2>v0.24.5 (2023-04-22)</h2>
<h3>Features</h3>
<ul>
<li>Categories and groups can now be shown in the navigation, added
<code>--navigation.includeCategories</code>
and <code>--navigation.includeGroups</code> to control this behavior.
The <code>--categorizeByGroup</code> option also
effects this behavior. If <code>categorizeByGroup</code> is set (the
default) and <code>navigation.includeGroups</code> is
<em>not</em> set, the value of <code>navigation.includeCategories</code>
will be effectively ignored since categories
will be created only within groups, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/1532">#1532</a>.</li>
<li>Added support for discovering a &quot;module&quot; comment on global
files, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2165">#2165</a>.</li>
<li>Added copy code to clipboard button, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2153">#2153</a>.</li>
<li>Function <code>@returns</code> blocks will now be rendered with the
return type, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2180">#2180</a>.</li>
<li>Added <code>--groupOrder</code> option to specify the sort order of
groups, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2251">#2251</a>.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Type parameter constraints now respect the
<code>--hideParameterTypesInTitle</code> option, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2226">#2226</a>.</li>
<li>Even more contrast fixes, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2248">#2248</a>.</li>
<li>Fix semantic highlighting for predicate type's parameter references,
<a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2249">#2249</a>.</li>
<li>Fixed broken links to heading titles.</li>
<li>Fixed inconsistent styling between type parameter lists and
parameter lists.</li>
<li>TypeDoc will now warn if more than one <code>@returns</code> block
is is present in a function, and ignore the duplicate blocks as
specified by TSDoc.</li>
</ul>
<h3>Thanks!</h3>
<ul>
<li><a
href="https://github.com/FlippieCoetser"><code>@​FlippieCoetser</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="af63d9e4e1"><code>af63d9e</code></a>
Update changelog for release</li>
<li><a
href="50f89680be"><code>50f8968</code></a>
Bump version to 0.24.6</li>
<li><a
href="776f7a700b"><code>776f7a7</code></a>
Fix useTsLinkResolution in block tags</li>
<li><a
href="08b8348541"><code>08b8348</code></a>
Didn't mean to commit that</li>
<li><a
href="e5a647745a"><code>e5a6477</code></a>
Fix tests</li>
<li><a
href="afb61faf07"><code>afb61fa</code></a>
Extend jsDocCompatibility with inheritDoc + brace opts</li>
<li><a
href="1e96a2db0e"><code>1e96a2d</code></a>
Improve error messaging for missing entry points</li>
<li><a
href="4970a4b23c"><code>4970a4b</code></a>
Suport g, circle, ellipse, polygon, polyline svg elements (<a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2259">#2259</a>)</li>
<li><a
href="b49506c726"><code>b49506c</code></a>
Fix broken links in changelog</li>
<li><a
href="eeaaf0a5d0"><code>eeaaf0a</code></a>
Update changelog for release</li>
<li>Additional commits viewable in <a
href="https://github.com/TypeStrong/TypeDoc/compare/v0.24.4...v0.24.6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typedoc&package-manager=npm_and_yarn&previous-version=0.24.4&new-version=0.24.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-27 12:45:36 -05:00
dependabot[bot]
9e57369bbb chore(deps-dev): Bump @types/jest from 29.5.0 to 29.5.1 in /node (#317)
Bumps
[@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest)
from 29.5.0 to 29.5.1.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jest&package-manager=npm_and_yarn&previous-version=29.5.0&new-version=29.5.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-25 16:16:16 -05:00
dependabot[bot]
26424a1581 chore(deps-dev): Bump @types/node from 18.15.11 to 18.16.0 in /node (#318)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 18.15.11 to 18.16.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=18.15.11&new-version=18.16.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-25 16:16:06 -05:00
dependabot[bot]
039196b8ac chore(deps-dev): Bump prettier from 2.8.7 to 2.8.8 in /node (#319)
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.7 to
2.8.8.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/releases">prettier's
releases</a>.</em></p>
<blockquote>
<h2>2.8.8</h2>
<p>This version is a republished version of v2.8.7.
A bad version was accidentally published and <a
href="https://redirect.github.com/npm/cli/issues/1686">it can't be
unpublished</a>, apologies for the churn.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md">prettier's
changelog</a>.</em></p>
<blockquote>
<h1>2.8.8</h1>
<p>This version is a republished version of v2.8.7.
A bad version was accidentally published and <a
href="https://redirect.github.com/npm/cli/issues/1686">it can't be
unpublished</a>, apologies for the churn.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1b7fad5255"><code>1b7fad5</code></a>
Release 2.8.8</li>
<li>See full diff in <a
href="https://github.com/prettier/prettier/compare/2.8.7...2.8.8">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=prettier&package-manager=npm_and_yarn&previous-version=2.8.7&new-version=2.8.8)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-25 16:15:56 -05:00
zach
6bec3f8d45 feat: add support for host functions to browser runtime (#306)
- Adds ability to define host functions when creating ExtismPlugins in
the browser runtime
- The API is a little simpler than the Rust runtime
- Functions don't handle userdata, userdata should be captured by the
function declaration
2023-04-25 08:42:50 -07:00
zach
b2e0884442 feat: automatically call __wasm_call_ctors when available and not calling _start (#311) 2023-04-24 14:27:28 -07:00
zach
c22e97a82b fix!: disallow http requests by default (#315)
- Makes it so requests to a host that isn't specified by `allowed_hosts`
will fail
- To allow requests to any URL you can set `{allowed_hosts: ["*"]}`
2023-04-24 10:40:38 -07:00
dependabot[bot]
0c51e26820 chore(deps-dev): Bump typedoc from 0.24.1 to 0.24.4 in /node (#314) 2023-04-17 19:13:11 -06:00
dependabot[bot]
83365e72b9 chore(deps-dev): Bump ts-jest from 29.0.5 to 29.1.0 in /node (#313) 2023-04-17 19:12:42 -06:00
Doğu Us
4c06ef14c0 fix(zig-sdk): Fix build (#310)
Fixes breaking build system changes introduced in ziglang/zig#15245
2023-04-14 16:05:03 -07:00
Muhammad Azeez
670f364184 feat: Add Host Functions support for .NET SDK (#239)
- [x] Write p/invoke wrappers for new types/functions
   - [x] ExtismValType
   - [x] ExtismFunction
   - [x] ExtismCurrentPlugin
   - [x] ExtismValUnion
   - [x] ExtismVal
   - [x] ExtismFunctionType
   - [x] extism_current_plugin_memory
   - [x] extism_current_plugin_memory_alloc
   - [x] extism_current_plugin_memory_length
   - [x] extism_current_plugin_memory_free
   - [x] extism_function_new
   - [x]  extism_function_free
- [x] Write higher level code that allows user to register a function
- [x] Expand the sample code and tests to use host functions
2023-04-11 13:20:07 -05:00
dependabot[bot]
a4093e229a chore(deps-dev): Bump typescript from 4.9.5 to 5.0.4 in /node (#307)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.9.5
to 5.0.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Microsoft/TypeScript/releases">typescript's
releases</a>.</em></p>
<blockquote>
<h2>TypeScript 5.0.4</h2>
<p>For release notes, check out the <a
href="https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/">release
announcement</a>.</p>
<p>For the complete list of fixed issues, check out the</p>
<ul>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.0.0%22+is%3Aclosed+">fixed
issues query for Typescript v5.0.0 (Beta)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.0.1%22+is%3Aclosed+">fixed
issues query for Typescript v5.0.1 (RC)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.0.2%22+is%3Aclosed+">fixed
issues query for Typescript v5.0.2 (Stable)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.0.3%22+is%3Aclosed+">fixed
issues query for Typescript v5.0.3 (Stable)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.0.4%22+is%3Aclosed+">fixed
issues query for Typescript v5.0.4 (Stable)</a>.</li>
</ul>
<p>Downloads are available on:</p>
<ul>
<li><a href="https://www.npmjs.com/package/typescript">npm</a></li>
<li><a
href="https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild">NuGet
package</a></li>
</ul>
<h2>TypeScript 5.0.3</h2>
<p>For release notes, check out the <a
href="https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/">release
announcement</a>.</p>
<p>For the complete list of fixed issues, check out the</p>
<ul>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.0.0%22+is%3Aclosed+">fixed
issues query for Typescript v5.0.0 (Beta)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.0.1%22+is%3Aclosed+">fixed
issues query for Typescript v5.0.1 (RC)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.0.2%22+is%3Aclosed+">fixed
issues query for Typescript v5.0.2 (Stable)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.0.3%22+is%3Aclosed+">fixed
issues query for Typescript v5.0.3 (Stable)</a>.</li>
</ul>
<p>Downloads are available on:</p>
<ul>
<li><a href="https://www.npmjs.com/package/typescript">npm</a></li>
<li><a
href="https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild">NuGet
package</a></li>
</ul>
<h2>TypeScript 5.0</h2>
<p>For release notes, check out the <a
href="https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/">release
announcement</a>.</p>
<p>For the complete list of fixed issues, check out the</p>
<ul>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=is%3Aissue+milestone%3A%22TypeScript+5.0.0%22+is%3Aclosed+">fixed
issues query for Typescript v5.0.0 (Beta)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=is%3Aissue+milestone%3A%22TypeScript+5.0.1%22+is%3Aclosed+">fixed
issues query for Typescript v5.0.1 (RC)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=is%3Aissue+milestone%3A%22TypeScript+5.0.2%22+is%3Aclosed+">fixed
issues query for Typescript v5.0.2 (Stable)</a>.</li>
</ul>
<p>Downloads are available on:</p>
<ul>
<li><a href="https://www.npmjs.com/package/typescript">npm</a></li>
<li><a
href="https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild">NuGet
package</a></li>
</ul>
<h2>TypeScript 5.0 RC</h2>
<p>For release notes, check out the <a
href="https://devblogs.microsoft.com/typescript/announcing-typescript-5-0-rc/">release
announcement</a>.</p>
<h2>TypeScript 5.0 Beta</h2>
<p>For release notes, check out the <a
href="https://devblogs.microsoft.com/typescript/announcing-typescript-5-0-beta/">release
announcement</a>.</p>
<p>For the complete list of fixed issues, check out the</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3b45f4db12"><code>3b45f4d</code></a>
Bump version to 5.0.4 and LKG</li>
<li><a
href="dc7e5a738a"><code>dc7e5a7</code></a>
🤖 Pick PR <a
href="https://redirect.github.com/Microsoft/TypeScript/issues/53599">#53599</a>
(Ignore <code>allowImportingTsExtensions</code>...) into release-5.0
(#...</li>
<li><a
href="233b4b0540"><code>233b4b0</code></a>
🤖 Pick PR <a
href="https://redirect.github.com/Microsoft/TypeScript/issues/53611">#53611</a>
(Remove error on redundant isolatedM...) into release-5.0 (#...</li>
<li><a
href="365cb5815a"><code>365cb58</code></a>
🤖 Pick PR <a
href="https://redirect.github.com/Microsoft/TypeScript/issues/53613">#53613</a>
(Fix Go To Source Definition in `--m...) into release-5.0 (#...</li>
<li><a
href="97dac8a261"><code>97dac8a</code></a>
🤖 Pick PR <a
href="https://redirect.github.com/Microsoft/TypeScript/issues/53665">#53665</a>
(Fix crash when private id in array ...) into release-5.0 (#...</li>
<li><a
href="b2d5d9b13f"><code>b2d5d9b</code></a>
🤖 Pick PR <a
href="https://redirect.github.com/Microsoft/TypeScript/issues/53666">#53666</a>
(Disable JSX recovery hack when in u...) into release-5.0 (#...</li>
<li><a
href="0e198c2c1d"><code>0e198c2</code></a>
Bump version to 5.0.3 and LKG</li>
<li><a
href="111df34f41"><code>111df34</code></a>
🤖 Pick PR <a
href="https://redirect.github.com/Microsoft/TypeScript/issues/53207">#53207</a>
(Fixed symbol declarations for gener...) into release-5.0 (#...</li>
<li><a
href="1e70bb8dc4"><code>1e70bb8</code></a>
🤖 Pick PR <a
href="https://redirect.github.com/Microsoft/TypeScript/issues/53481">#53481</a>
(Retry string completions from the i...) into release-5.0 (#...</li>
<li><a
href="7e093f072b"><code>7e093f0</code></a>
🤖 Pick PR <a
href="https://redirect.github.com/Microsoft/TypeScript/issues/53351">#53351</a>
(Fix subtype reduction involving typ...) into release-5.0 (#...</li>
<li>Additional commits viewable in <a
href="https://github.com/Microsoft/TypeScript/compare/v4.9.5...v5.0.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typescript&package-manager=npm_and_yarn&previous-version=4.9.5&new-version=5.0.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-11 10:18:53 -05:00
dependabot[bot]
74ba0cdf0d chore(deps-dev): Bump @types/jest from 29.4.0 to 29.5.0 in /node (#288)
Bumps
[@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest)
from 29.4.0 to 29.5.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jest&package-manager=npm_and_yarn&previous-version=29.4.0&new-version=29.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-10 17:53:21 -05:00
dependabot[bot]
82fae7cf29 chore(deps-dev): Bump prettier from 2.8.4 to 2.8.7 in /node (#293)
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.4 to
2.8.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/releases">prettier's
releases</a>.</em></p>
<blockquote>
<h2>2.8.7</h2>
<ul>
<li>Allow multiple decorators on same getter/setter</li>
</ul>
<p>🔗 <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md#287">Changelog</a></p>
<h2>2.8.6</h2>
<ul>
<li>Allow decorators on private members and class expressions</li>
</ul>
<p>🔗 <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md#286">Changelog</a></p>
<h2>2.8.5</h2>
<ul>
<li>Support TypeScript 5.0</li>
</ul>
<p>🔗 <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md#285">Changelog</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md">prettier's
changelog</a>.</em></p>
<blockquote>
<h1>2.8.7</h1>
<p><a
href="https://github.com/prettier/prettier/compare/2.8.6...2.8.7">diff</a></p>
<h4>Allow multiple decorators on same getter/setter (<a
href="https://redirect.github.com/prettier/prettier/pull/14584">#14584</a>
by <a href="https://github.com/fisker"><code>@​fisker</code></a>)</h4>
<!-- raw HTML omitted -->
<pre lang="ts"><code>// Input
class A {
  @decorator()
  get foo () {}
<p><a href="https://github.com/decorator"><code>@​decorator</code></a>()
set foo (value) {}
}</p>
<p>// Prettier 2.8.6
SyntaxError: Decorators cannot be applied to multiple get/set accessors
of the same name. (5:3)
3 |   get foo () {}
4 |<br />
&gt; 5 | <a
href="https://github.com/decorator"><code>@​decorator</code></a>()
|   ^^^^^^^^^^^^
6 |   set foo (value) {}
7 | }</p>
<p>// Prettier 2.8.7
class A {
<a href="https://github.com/decorator"><code>@​decorator</code></a>()
get foo() {}</p>
<p><a href="https://github.com/decorator"><code>@​decorator</code></a>()
set foo(value) {}
}
</code></pre></p>
<h1>2.8.6</h1>
<p><a
href="https://github.com/prettier/prettier/compare/2.8.5...2.8.6">diff</a></p>
<h4>Allow decorators on private members and class expressions (<a
href="https://redirect.github.com/prettier/prettier/pull/14548">#14548</a>
by <a href="https://github.com/fisker"><code>@​fisker</code></a>)</h4>
<!-- raw HTML omitted -->
<pre lang="ts"><code>// Input
class A {
  @decorator()
  #privateMethod () {}
}
<p>&lt;/tr&gt;&lt;/table&gt;
</code></pre></p>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="543a9d71a7"><code>543a9d7</code></a>
Release 2.8.7</li>
<li><a
href="f9fae7f34c"><code>f9fae7f</code></a>
Allow multiple decorators on same getter/setter (<a
href="https://redirect.github.com/prettier/prettier/issues/14584">#14584</a>)</li>
<li><a
href="10fe1ed623"><code>10fe1ed</code></a>
Release 2.8.6</li>
<li><a
href="44aef0b1ba"><code>44aef0b</code></a>
Allow decorator on private members and class expressions (<a
href="https://redirect.github.com/prettier/prettier/issues/14548">#14548</a>)</li>
<li><a
href="ddf3b43c33"><code>ddf3b43</code></a>
Clean changelog</li>
<li><a
href="71ba29f22b"><code>71ba29f</code></a>
Git blame ignore 2.8.5</li>
<li><a
href="c1808e86a3"><code>c1808e8</code></a>
Bump Prettier dependency to 2.8.5</li>
<li><a
href="0a79535916"><code>0a79535</code></a>
Release 2.8.5</li>
<li><a
href="019ebe5207"><code>019ebe5</code></a>
Support TypeScript 5 (backport <a
href="https://redirect.github.com/prettier/prettier/issues/14391">#14391</a>
and <a
href="https://redirect.github.com/prettier/prettier/issues/13819">#13819</a>)
(<a
href="https://redirect.github.com/prettier/prettier/issues/14512">#14512</a>)</li>
<li><a
href="e7b383b570"><code>e7b383b</code></a>
Support <code>max_line_length=off</code> when parsing
<code>.editorconfig</code> (<a
href="https://redirect.github.com/prettier/prettier/issues/14516">#14516</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/prettier/prettier/compare/2.8.4...2.8.7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=prettier&package-manager=npm_and_yarn&previous-version=2.8.4&new-version=2.8.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-10 17:53:13 -05:00
dependabot[bot]
1f9c469e31 chore(deps-dev): Bump @types/node from 18.15.0 to 18.15.11 in /node (#304)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 18.15.0 to 18.15.11.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=18.15.0&new-version=18.15.11)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-10 17:53:04 -05:00
dependabot[bot]
415f423147 chore(deps-dev): Bump ex_doc from 0.29.2 to 0.29.4 in /elixir (#302)
Bumps [ex_doc](https://github.com/elixir-lang/ex_doc) from 0.29.2 to
0.29.4.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/elixir-lang/ex_doc/blob/main/CHANGELOG.md">ex_doc's
changelog</a>.</em></p>
<blockquote>
<h2>v0.29.4 (2023-03-29)</h2>
<ul>
<li>Bug fixes
<ul>
<li>Fix sidebar element with no children taking additional padding</li>
<li>Fix elements being rendered too thick on macOS</li>
<li>Fix rendering of HTML elements inside tooltips</li>
</ul>
</li>
</ul>
<h2>v0.29.3 (2023-03-17)</h2>
<ul>
<li>
<p>Enhancements</p>
<ul>
<li>Propagate <code>:since</code> metadata from modules</li>
<li>Add support for MFAs and maps in
<code>before_closing_body_tag</code> and
<code>before_closing_head_tag</code></li>
</ul>
</li>
<li>
<p>Bug fixes</p>
<ul>
<li>Improve font consistency across different OSes</li>
<li>Keep language class on livebook output code block</li>
<li>Ensure switches have higher precedence than config</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="04568aa759"><code>04568aa</code></a>
Release v0.29.4</li>
<li><a
href="8e86d630ea"><code>8e86d63</code></a>
Layout on apple-os and sidebar</li>
<li><a
href="5ec6735d70"><code>5ec6735</code></a>
Display tooltip content as html (<a
href="https://redirect.github.com/elixir-lang/ex_doc/issues/1685">#1685</a>)</li>
<li><a
href="f71fbc2710"><code>f71fbc2</code></a>
Release v0.29.3</li>
<li><a
href="2bdc7efe63"><code>2bdc7ef</code></a>
Fix settings icon position (<a
href="https://redirect.github.com/elixir-lang/ex_doc/issues/1683">#1683</a>)</li>
<li><a
href="4b5c414439"><code>4b5c414</code></a>
Keep language class on livebook output code block (<a
href="https://redirect.github.com/elixir-lang/ex_doc/issues/1682">#1682</a>)</li>
<li><a
href="e63e957327"><code>e63e957</code></a>
Propagate :since metadata from modules (<a
href="https://redirect.github.com/elixir-lang/ex_doc/issues/1680">#1680</a>)</li>
<li><a
href="a55ffa2090"><code>a55ffa2</code></a>
Fix precedence of switches vs config (<a
href="https://redirect.github.com/elixir-lang/ex_doc/issues/1679">#1679</a>)</li>
<li><a
href="8d9cf7ceac"><code>8d9cf7c</code></a>
Improve consistency of type rendering weight across OSes (<a
href="https://redirect.github.com/elixir-lang/ex_doc/issues/1677">#1677</a>)</li>
<li><a
href="a07443e733"><code>a07443e</code></a>
feat: add before_closing_body_tag map support (<a
href="https://redirect.github.com/elixir-lang/ex_doc/issues/1676">#1676</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/elixir-lang/ex_doc/compare/v0.29.2...v0.29.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ex_doc&package-manager=hex&previous-version=0.29.2&new-version=0.29.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-10 17:52:54 -05:00
dependabot[bot]
6bd1b665eb chore(deps-dev): Bump typedoc from 0.23.26 to 0.24.1 in /node (#308)
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.23.26 to
0.24.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/TypeDoc/releases">typedoc's
releases</a>.</em></p>
<blockquote>
<h2>v0.24.1</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Improve detection for legacy JSDoc <code>@example</code> tags, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2222">#2222</a>.</li>
<li>The page footer will now appear at the bottom of the page even if
the page is short, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2223">#2223</a>.</li>
</ul>
<h2>v0.24.0</h2>
<h3>Breaking Changes</h3>
<ul>
<li><code>@link</code>, <code>@linkcode</code> and
<code>@linkplain</code> tags will now be resolved with TypeScript's link
resolution by default. The <code>useTsLinkResolution</code> option
can be used to turn this behavior off, but be aware that doing so will
mean your links will be resolved differently by editor tooling and
TypeDoc.</li>
<li>TypeDoc will no longer automatically load plugins from
<code>node_modules</code>. Specify the <code>--plugin</code> option to
indicate which modules should be loaded.</li>
<li>The <code>packages</code> entry point strategy will now run TypeDoc
in each provided package directory and then merge the results together.
The previous <code>packages</code> strategy has been preserved under
<code>legacy-packages</code> and will be removed in 0.25. If the new
strategy does not work
for your use case, please open an issue.</li>
<li>Removed <code>--logger</code> option, to disable all logging, set
the <code>logLevel</code> option to <code>none</code>.</li>
<li>Dropped support for legacy <code>[[link]]</code>s, removed
deprecated <code>Reflection.findReflectionByName</code>.</li>
<li>Added <code>@overload</code> to default ignored tags.</li>
</ul>
<h3>API Breaking Changes</h3>
<ul>
<li>The <code>label</code> property on <code>Reflection</code> has moved
to <code>Comment</code>.</li>
<li>The default value of the <code>out</code> option has been changed
from <code>&quot;&quot;</code> to <code>&quot;./docs&quot;</code>, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2195">#2195</a>.</li>
<li>Renamed <code>DeclarationReflection#version</code> to
<code>DeclarationReflection#projectVersion</code> to match property on
<code>ProjectReflection</code>.</li>
<li>Removed unused <code>Reflection#originalName</code>.</li>
<li>Removed <code>Reflection#kindString</code>, use
<code>ReflectionKind.singularString(reflection.kind)</code> or
<code>ReflectionKind.pluralString(reflection.kind)</code> instead.</li>
<li>The <code>named-tuple-member</code> and
<code>template-literal</code> type kind have been replaced with
<code>namedTupleMember</code> and <code>templateLiteral</code>, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2100">#2100</a>.</li>
<li>Properties related to rendering are no longer stored on
<code>Reflection</code>, including <code>url</code>,
<code>anchor</code>, <code>hasOwnDocument</code>, and
<code>cssClasses</code>.</li>
<li><code>Application.bootstrap</code> will no longer load plugins. If
you want to load plugins, use
<code>Application.bootstrapWithPlugins</code> instead, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/1635">#1635</a>.</li>
<li>The options passed to <code>Application.bootstrap</code> will now be
applied both before <em>and</em> after reading options files, which may
cause a change in configuration
if using a custom script to run TypeDoc that includes some options, but
other options are set in config files.</li>
<li>Moved <code>sources</code> property previously declared on base
<code>Reflection</code> class to <code>DeclarationReflection</code> and
<code>SignatureReflection</code>.</li>
<li>Moved <code>relevanceBoost</code> from
<code>ContainerReflection</code> to <code>DeclarationReflection</code>
since setting it on the parent class has no effect.</li>
<li>Removed internal <code>ReferenceType.getSymbol</code>, reference
types no longer reference the <code>ts.Symbol</code> to enable
generation from serialized JSON.</li>
<li><code>OptionsReader.priority</code> has been renamed to
<code>OptionsReader.order</code> to more accurately reflect how it
works.</li>
<li><code>ReferenceType</code>s which point to type parameters will now
always be intentionally broken since they were never linked and should
not be warned about when validating exports.</li>
<li><code>ReferenceType</code>s now longer include an <code>id</code>
property for their target. They now instead include a
<code>target</code> property.</li>
<li>Removed <code>Renderer.addExternalSymbolResolver</code>, use
<code>Converter.addExternalSymbolResolver</code> instead.</li>
<li>Removed <code>CallbackLogger</code>.</li>
<li>Removed <code>SerializeEventData</code> from serialization
events.</li>
<li>A <code>PageEvent</code> is now required for
<code>getRenderContext</code>. If caching the context object,
<code>page</code> must be updated when <code>getRenderContext</code> is
called.</li>
<li><code>PageEvent</code> no longer includes the <code>template</code>
property. The <code>Theme.render</code> method is now expected to take
the template to render the page with as its second argument.</li>
<li>Removed <code>secondaryNavigation</code> member on
<code>DefaultThemeRenderContext</code>.</li>
<li>Renamed <code>navigation</code> to <code>sidebar</code> on
<code>DefaultThemeRenderContext</code> and
<code>navigation.begin</code>/<code>navigation.end</code> hooks to
<code>sidebar.begin</code>/<code>sidebar.end</code>.</li>
</ul>
<h3>Features</h3>
<ul>
<li>Added <code>--useTsLinkResolution</code> option (on by default)
which tells TypeDoc to use TypeScript's <code>@link</code>
resolution.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md">typedoc's
changelog</a>.</em></p>
<blockquote>
<h2>v0.24.1 (2023-04-09)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Improve detection for legacy JSDoc <code>@example</code> tags, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2222">#2222</a>.</li>
<li>The page footer will now appear at the bottom of the page even if
the page is short, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2223">#2223</a>.</li>
</ul>
<h1>v0.24.0 (2023-04-08)</h1>
<h3>Breaking Changes</h3>
<ul>
<li><code>@link</code>, <code>@linkcode</code> and
<code>@linkplain</code> tags will now be resolved with TypeScript's link
resolution by default. The <code>useTsLinkResolution</code> option
can be used to turn this behavior off, but be aware that doing so will
mean your links will be resolved differently by editor tooling and
TypeDoc.</li>
<li>TypeDoc will no longer automatically load plugins from
<code>node_modules</code>. Specify the <code>--plugin</code> option to
indicate which modules should be loaded.</li>
<li>The <code>packages</code> entry point strategy will now run TypeDoc
in each provided package directory and then merge the results together.
The previous <code>packages</code> strategy has been preserved under
<code>legacy-packages</code> and will be removed in 0.25. If the new
strategy does not work
for your use case, please open an issue.</li>
<li>Removed <code>--logger</code> option, to disable all logging, set
the <code>logLevel</code> option to <code>none</code>.</li>
<li>Dropped support for legacy <code>[[link]]</code>s, removed
deprecated <code>Reflection.findReflectionByName</code>.</li>
<li>Added <code>@overload</code> to default ignored tags.</li>
</ul>
<h3>API Breaking Changes</h3>
<ul>
<li>The <code>label</code> property on <code>Reflection</code> has moved
to <code>Comment</code>.</li>
<li>The default value of the <code>out</code> option has been changed
from <code>&quot;&quot;</code> to <code>&quot;./docs&quot;</code>, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2195">#2195</a>.</li>
<li>Renamed <code>DeclarationReflection#version</code> to
<code>DeclarationReflection#projectVersion</code> to match property on
<code>ProjectReflection</code>.</li>
<li>Removed unused <code>Reflection#originalName</code>.</li>
<li>Removed <code>Reflection#kindString</code>, use
<code>ReflectionKind.singularString(reflection.kind)</code> or
<code>ReflectionKind.pluralString(reflection.kind)</code> instead.</li>
<li>The <code>named-tuple-member</code> and
<code>template-literal</code> type kind have been replaced with
<code>namedTupleMember</code> and <code>templateLiteral</code>, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2100">#2100</a>.</li>
<li>Properties related to rendering are no longer stored on
<code>Reflection</code>, including <code>url</code>,
<code>anchor</code>, <code>hasOwnDocument</code>, and
<code>cssClasses</code>.</li>
<li><code>Application.bootstrap</code> will no longer load plugins. If
you want to load plugins, use
<code>Application.bootstrapWithPlugins</code> instead, <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/1635">#1635</a>.</li>
<li>The options passed to <code>Application.bootstrap</code> will now be
applied both before <em>and</em> after reading options files, which may
cause a change in configuration
if using a custom script to run TypeDoc that includes some options, but
other options are set in config files.</li>
<li>Moved <code>sources</code> property previously declared on base
<code>Reflection</code> class to <code>DeclarationReflection</code> and
<code>SignatureReflection</code>.</li>
<li>Moved <code>relevanceBoost</code> from
<code>ContainerReflection</code> to <code>DeclarationReflection</code>
since setting it on the parent class has no effect.</li>
<li>Removed internal <code>ReferenceType.getSymbol</code>, reference
types no longer reference the <code>ts.Symbol</code> to enable
generation from serialized JSON.</li>
<li><code>OptionsReader.priority</code> has been renamed to
<code>OptionsReader.order</code> to more accurately reflect how it
works.</li>
<li><code>ReferenceType</code>s which point to type parameters will now
always be intentionally broken since they were never linked and should
not be warned about when validating exports.</li>
<li><code>ReferenceType</code>s now longer include an <code>id</code>
property for their target. They now instead include a
<code>target</code> property.</li>
<li>Removed <code>Renderer.addExternalSymbolResolver</code>, use
<code>Converter.addExternalSymbolResolver</code> instead.</li>
<li>Removed <code>CallbackLogger</code>.</li>
<li>Removed <code>SerializeEventData</code> from serialization
events.</li>
<li>A <code>PageEvent</code> is now required for
<code>getRenderContext</code>. If caching the context object,
<code>page</code> must be updated when <code>getRenderContext</code> is
called.</li>
<li><code>PageEvent</code> no longer includes the <code>template</code>
property. The <code>Theme.render</code> method is now expected to take
the template to render the page with as its second argument.</li>
<li>Removed <code>secondaryNavigation</code> member on
<code>DefaultThemeRenderContext</code>.</li>
<li>Renamed <code>navigation</code> to <code>sidebar</code> on
<code>DefaultThemeRenderContext</code> and
<code>navigation.begin</code>/<code>navigation.end</code> hooks to
<code>sidebar.begin</code>/<code>sidebar.end</code>.</li>
</ul>
<h3>Features</h3>
<ul>
<li>Added <code>--useTsLinkResolution</code> option (on by default)
which tells TypeDoc to use TypeScript's <code>@link</code>
resolution.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="16cc385ae4"><code>16cc385</code></a>
Update changelog for release</li>
<li><a
href="6b32dab03d"><code>6b32dab</code></a>
Bump version to 0.24.1</li>
<li><a
href="0e3a892db3"><code>0e3a892</code></a>
Some cleanup from 0.24.0</li>
<li><a
href="a6e6544759"><code>a6e6544</code></a>
Reorder option declarations to match docs</li>
<li><a
href="7a696ae1eb"><code>7a696ae</code></a>
Update changelog for release</li>
<li><a
href="4a762ace54"><code>4a762ac</code></a>
Bump version to 0.24.0</li>
<li><a
href="29069e0a02"><code>29069e0</code></a>
Merge pull request <a
href="https://redirect.github.com/TypeStrong/TypeDoc/issues/2210">#2210</a>
from TypeStrong/beta</li>
<li><a
href="27f550f3c8"><code>27f550f</code></a>
Fix broken links in example</li>
<li><a
href="0c105ec7a0"><code>0c105ec</code></a>
One last bugfix</li>
<li><a
href="864db5780a"><code>864db57</code></a>
Add jsDocCompatibility option</li>
<li>Additional commits viewable in <a
href="https://github.com/TypeStrong/TypeDoc/compare/v0.23.26...v0.24.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typedoc&package-manager=npm_and_yarn&previous-version=0.23.26&new-version=0.24.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-10 17:52:38 -05:00
Benjamin Eckel
d4e364f883 fix(browser): Fix browser runtime, publish as 0.2.7 (#305)
This upgrades the wasi shim and publishes new version of our runtime.
Current published version is broken because it relies on a my git branch
which has since been merged into the wasi shim.
2023-04-04 09:37:25 -05:00
zach
0b7589a3eb fix: remove call to cleanup_timer at exit on windows (#301)
Fixes #299
2023-04-03 09:05:35 -07:00
zach
eda80134f0 fix: improve extism_http_request error handling (#290)
This PR prevents a panic on the host side when an HTTP request fails
2023-03-29 15:50:51 -07:00
Doğu Us
300d801d1a fix(zig-sdk): Fix build and improve tests (#291) 2023-03-28 12:13:08 -07:00
Steve Manuel
524f069a08 feat: add pycco python doc support (#284) 2023-03-17 13:00:47 -06:00
zach
8dd5c8a138 fix: separate ocaml SDK and extism versions when publishing to opam (#283) 2023-03-15 10:31:05 -07:00
Benjamin Eckel
c7f533f9c6 chore: update dotnet to 0.4.0 2023-03-15 10:39:13 -05:00
Benjamin Eckel
8d76cf0440 release: 0.3.0 (#281)
Co-authored-by: zach <zach@dylib.so>
2023-03-15 09:42:05 -05:00
zach
d950e9149b chore: update haskell base upper bound (#282) 2023-03-13 20:15:16 -07:00
dependabot[bot]
3e65e067e2 chore(deps-dev): Bump @types/node from 18.14.6 to 18.15.0 in /node (#279)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 18.14.6 to 18.15.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=18.14.6&new-version=18.15.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-13 11:23:22 -05:00
dependabot[bot]
88a612ab8c chore(deps-dev): Bump jest from 29.4.3 to 29.5.0 in /node (#280)
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest)
from 29.4.3 to 29.5.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/facebook/jest/releases">jest's
releases</a>.</em></p>
<blockquote>
<h2>v29.5.0</h2>
<h2>Features</h2>
<ul>
<li><code>[jest-changed-files]</code> Support Sapling (<a
href="https://redirect.github.com/facebook/jest/pull/13941">#13941</a>)</li>
<li><code>[jest-circus, @jest/cli, jest-config]</code> Add feature to
randomize order of tests via CLI flag or through the config file(<a
href="https://redirect.github.com/facebook/jest/pull/12922">#12922</a>)</li>
<li><code>[jest-cli, jest-config, @jest/core, jest-haste-map,
@jest/reporters, jest-runner, jest-runtime, @jest/types]</code> Add
<code>workerThreads</code> configuration option to allow using <a
href="https://nodejs.org/dist/latest/docs/api/worker_threads.html">worker
threads</a> for parallelization (<a
href="https://redirect.github.com/facebook/jest/pull/13939">#13939</a>)</li>
<li><code>[jest-cli]</code> Export <code>yargsOptions</code> (<a
href="https://redirect.github.com/facebook/jest/pull/13970">#13970</a>)</li>
<li><code>[jest-config]</code> Add <code>openHandlesTimeout</code>
option to configure possible open handles warning. (<a
href="https://redirect.github.com/facebook/jest/pull/13875">#13875</a>)</li>
<li><code>[@jest/create-cache-key-function]</code> Allow passing
<code>length</code> argument to <code>createCacheKey()</code> function
and set its default value to <code>16</code> on Windows (<a
href="https://redirect.github.com/facebook/jest/pull/13827">#13827</a>)</li>
<li><code>[jest-message-util]</code> Add support for <a
href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError">AggregateError</a>
(<a
href="https://redirect.github.com/facebook/jest/pull/13946">#13946</a>
&amp; <a
href="https://redirect.github.com/facebook/jest/pull/13947">#13947</a>)</li>
<li><code>[jest-message-util]</code> Add support for <a
href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause">Error
causes</a> in <code>test</code> and <code>it</code> (<a
href="https://redirect.github.com/facebook/jest/pull/13935">#13935</a>
&amp; <a
href="https://redirect.github.com/facebook/jest/pull/13966">#13966</a>)</li>
<li><code>[jest-reporters]</code> Add <code>summaryThreshold</code>
option to summary reporter to allow overriding the internal threshold
that is used to print the summary of all failed tests when the number of
test suites surpasses it (<a
href="https://redirect.github.com/facebook/jest/pull/13895">#13895</a>)</li>
<li><code>[jest-runtime]</code> Expose <code>@sinonjs/fake-timers</code>
async APIs functions <code>advanceTimersByTimeAsync(msToRun)</code>
(<code>tickAsync(msToRun)</code>),
<code>advanceTimersToNextTimerAsync(steps)</code>
(<code>nextAsync</code>), <code>runAllTimersAsync</code>
(<code>runAllAsync</code>), and <code>runOnlyPendingTimersAsync</code>
(<code>runToLastAsync</code>) (<a
href="https://redirect.github.com/facebook/jest/pull/13981">#13981</a>)</li>
<li><code>[jest-runtime, @jest/transform]</code> Allow V8 coverage
provider to collect coverage from files which were not loaded explicitly
(<a
href="https://redirect.github.com/facebook/jest/pull/13974">#13974</a>)</li>
<li><code>[jest-snapshot]</code> Add support to <code>cts</code> and
<code>mts</code> TypeScript files to inline snapshots (<a
href="https://redirect.github.com/facebook/jest/pull/13975">#13975</a>)</li>
<li><code>[jest-worker]</code> Add <code>start</code> method to worker
farms (<a
href="https://redirect.github.com/facebook/jest/pull/13937">#13937</a>)</li>
<li><code>[jest-worker]</code> Support passing a URL as path to worker
(<a
href="https://redirect.github.com/facebook/jest/pull/13982">#13982</a>)</li>
</ul>
<h2>Fixes</h2>
<ul>
<li><code>[babel-plugin-jest-hoist]</code> Fix unwanted hoisting of
nested <code>jest</code> usages (<a
href="https://redirect.github.com/facebook/jest/pull/13952">#13952</a>)</li>
<li><code>[jest-circus]</code> Send test case results for
<code>todo</code> tests (<a
href="https://redirect.github.com/facebook/jest/pull/13915">#13915</a>)</li>
<li><code>[jest-circus]</code> Update message printed on test timeout
(<a
href="https://redirect.github.com/facebook/jest/pull/13830">#13830</a>)</li>
<li><code>[jest-circus]</code> Avoid creating the word
&quot;testfalse&quot; when <code>takesDoneCallback</code> is
<code>false</code> in the message printed on test timeout AND updated
timeouts test (<a
href="https://redirect.github.com/facebook/jest/pull/13954">#13954</a>)</li>
<li><code>[jest-environment-jsdom]</code> Stop setting
<code>document</code> to <code>null</code> on teardown (<a
href="https://redirect.github.com/facebook/jest/pull/13972">#13972</a>)</li>
<li><code>[@jest/expect-utils]</code> Update
<code>toStrictEqual()</code> to be able to check
<code>jest.fn().mock.calls</code> (<a
href="https://redirect.github.com/facebook/jest/pull/13960">#13960</a>)</li>
<li><code>[@jest/test-result]</code> Allow
<code>TestResultsProcessor</code> type to return a Promise (<a
href="https://redirect.github.com/facebook/jest/pull/13950">#13950</a>)</li>
</ul>
<h2>Chore &amp; Maintenance</h2>
<ul>
<li><code>[jest-snapshot]</code> Remove dependency on
<code>jest-haste-map</code> (<a
href="https://redirect.github.com/facebook/jest/pull/13977">#13977</a>)</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/frosas"><code>@​frosas</code></a> made
their first contribution in <a
href="https://redirect.github.com/facebook/jest/pull/13932">facebook/jest#13932</a></li>
<li><a
href="https://github.com/akshitsinha"><code>@​akshitsinha</code></a>
made their first contribution in <a
href="https://redirect.github.com/facebook/jest/pull/13915">facebook/jest#13915</a></li>
<li><a href="https://github.com/trajano"><code>@​trajano</code></a> made
their first contribution in <a
href="https://redirect.github.com/facebook/jest/pull/13827">facebook/jest#13827</a></li>
<li><a
href="https://github.com/DercilioFontes"><code>@​DercilioFontes</code></a>
made their first contribution in <a
href="https://redirect.github.com/facebook/jest/pull/13954">facebook/jest#13954</a></li>
<li><a href="https://github.com/jsnajdr"><code>@​jsnajdr</code></a> made
their first contribution in <a
href="https://redirect.github.com/facebook/jest/pull/13952">facebook/jest#13952</a></li>
<li><a
href="https://github.com/SteveFlames"><code>@​SteveFlames</code></a>
made their first contribution in <a
href="https://redirect.github.com/facebook/jest/pull/13895">facebook/jest#13895</a></li>
<li><a href="https://github.com/willc001"><code>@​willc001</code></a>
made their first contribution in <a
href="https://redirect.github.com/facebook/jest/pull/13970">facebook/jest#13970</a></li>
<li><a
href="https://github.com/benjaminhobbs"><code>@​benjaminhobbs</code></a>
made their first contribution in <a
href="https://redirect.github.com/facebook/jest/pull/13901">facebook/jest#13901</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/facebook/jest/compare/v29.4.3...v29.5.0">https://github.com/facebook/jest/compare/v29.4.3...v29.5.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/facebook/jest/blob/main/CHANGELOG.md">jest's
changelog</a>.</em></p>
<blockquote>
<h2>29.5.0</h2>
<h3>Features</h3>
<ul>
<li><code>[jest-changed-files]</code> Support Sapling (<a
href="https://redirect.github.com/facebook/jest/pull/13941">#13941</a>)</li>
<li><code>[jest-circus, @jest/cli, jest-config]</code> Add feature to
randomize order of tests via CLI flag or through the config file(<a
href="https://redirect.github.com/facebook/jest/pull/12922">#12922</a>)</li>
<li><code>[jest-cli, jest-config, @jest/core, jest-haste-map,
@jest/reporters, jest-runner, jest-runtime, @jest/types]</code> Add
<code>workerThreads</code> configuration option to allow using <a
href="https://nodejs.org/dist/latest/docs/api/worker_threads.html">worker
threads</a> for parallelization (<a
href="https://redirect.github.com/facebook/jest/pull/13939">#13939</a>)</li>
<li><code>[jest-cli]</code> Export <code>yargsOptions</code> (<a
href="https://redirect.github.com/facebook/jest/pull/13970">#13970</a>)</li>
<li><code>[jest-config]</code> Add <code>openHandlesTimeout</code>
option to configure possible open handles warning. (<a
href="https://redirect.github.com/facebook/jest/pull/13875">#13875</a>)</li>
<li><code>[@jest/create-cache-key-function]</code> Allow passing
<code>length</code> argument to <code>createCacheKey()</code> function
and set its default value to <code>16</code> on Windows (<a
href="https://redirect.github.com/facebook/jest/pull/13827">#13827</a>)</li>
<li><code>[jest-message-util]</code> Add support for <a
href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError">AggregateError</a>
(<a
href="https://redirect.github.com/facebook/jest/pull/13946">#13946</a>
&amp; <a
href="https://redirect.github.com/facebook/jest/pull/13947">#13947</a>)</li>
<li><code>[jest-message-util]</code> Add support for <a
href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause">Error
causes</a> in <code>test</code> and <code>it</code> (<a
href="https://redirect.github.com/facebook/jest/pull/13935">#13935</a>
&amp; <a
href="https://redirect.github.com/facebook/jest/pull/13966">#13966</a>)</li>
<li><code>[jest-reporters]</code> Add <code>summaryThreshold</code>
option to summary reporter to allow overriding the internal threshold
that is used to print the summary of all failed tests when the number of
test suites surpasses it (<a
href="https://redirect.github.com/facebook/jest/pull/13895">#13895</a>)</li>
<li><code>[jest-runtime]</code> Expose <code>@sinonjs/fake-timers</code>
async APIs functions <code>advanceTimersByTimeAsync(msToRun)</code>
(<code>tickAsync(msToRun)</code>),
<code>advanceTimersToNextTimerAsync(steps)</code>
(<code>nextAsync</code>), <code>runAllTimersAsync</code>
(<code>runAllAsync</code>), and <code>runOnlyPendingTimersAsync</code>
(<code>runToLastAsync</code>) (<a
href="https://redirect.github.com/facebook/jest/pull/13981">#13981</a>)</li>
<li><code>[jest-runtime, @jest/transform]</code> Allow V8 coverage
provider to collect coverage from files which were not loaded explicitly
(<a
href="https://redirect.github.com/facebook/jest/pull/13974">#13974</a>)</li>
<li><code>[jest-snapshot]</code> Add support to <code>cts</code> and
<code>mts</code> TypeScript files to inline snapshots (<a
href="https://redirect.github.com/facebook/jest/pull/13975">#13975</a>)</li>
<li><code>[jest-worker]</code> Add <code>start</code> method to worker
farms (<a
href="https://redirect.github.com/facebook/jest/pull/13937">#13937</a>)</li>
<li><code>[jest-worker]</code> Support passing a URL as path to worker
(<a
href="https://redirect.github.com/facebook/jest/pull/13982">#13982</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li><code>[babel-plugin-jest-hoist]</code> Fix unwanted hoisting of
nested <code>jest</code> usages (<a
href="https://redirect.github.com/facebook/jest/pull/13952">#13952</a>)</li>
<li><code>[jest-circus]</code> Send test case results for
<code>todo</code> tests (<a
href="https://redirect.github.com/facebook/jest/pull/13915">#13915</a>)</li>
<li><code>[jest-circus]</code> Update message printed on test timeout
(<a
href="https://redirect.github.com/facebook/jest/pull/13830">#13830</a>)</li>
<li><code>[jest-circus]</code> Avoid creating the word
&quot;testfalse&quot; when <code>takesDoneCallback</code> is
<code>false</code> in the message printed on test timeout AND updated
timeouts test (<a
href="https://redirect.github.com/facebook/jest/pull/13954">#13954</a>)</li>
<li><code>[jest-environment-jsdom]</code> Stop setting
<code>document</code> to <code>null</code> on teardown (<a
href="https://redirect.github.com/facebook/jest/pull/13972">#13972</a>)</li>
<li><code>[@jest/expect-utils]</code> Update
<code>toStrictEqual()</code> to be able to check
<code>jest.fn().mock.calls</code> (<a
href="https://redirect.github.com/facebook/jest/pull/13960">#13960</a>)</li>
<li><code>[@jest/test-result]</code> Allow
<code>TestResultsProcessor</code> type to return a Promise (<a
href="https://redirect.github.com/facebook/jest/pull/13950">#13950</a>)</li>
</ul>
<h3>Chore &amp; Maintenance</h3>
<ul>
<li><code>[jest-snapshot]</code> Remove dependency on
<code>jest-haste-map</code> (<a
href="https://redirect.github.com/facebook/jest/pull/13977">#13977</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="39f3beda6b"><code>39f3bed</code></a>
v29.5.0</li>
<li>See full diff in <a
href="https://github.com/facebook/jest/commits/v29.5.0/packages/jest">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=jest&package-manager=npm_and_yarn&previous-version=29.4.3&new-version=29.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-13 11:23:10 -05:00
Mathieu ANCELIN
3fc51ac373 feat: Support allowed_paths in the Java SDK (#277) 2023-03-11 11:30:26 -07:00
zach
12373ca34a chore: update to wasmtime 6.0.1 (#276) 2023-03-08 17:44:57 -08:00
zach
94d5bd98c8 feat: Add plugin cancellation (#270)
This PR adds the ability to cancel running plugins from another thread
in the host.

- All SDKs have been updated except  .NET
- Adds a new SDK type: `ExtismCancelHandle`
- Adds 2 new SDK functions: `extism_plugin_cancel_handle` and
`extism_plugin_cancel`
- `extism_plugin_cancel_handle` returns a pointer to
`ExtismCancelHandle`, which can be passed to `extism_plugin_cancel` to
stop plugin execution.
- One thing that's worth noting is when plugin is executing a host
function it cannot be cancelled until after the host function returns.

---------

Co-authored-by: Etienne ANNE <etienne.anne@icloud.com>
2023-03-08 17:44:40 -08:00
Etienne ANNE
2922f4aad3 feat: add ability to set host function namespace for Java SDK (#275) 2023-03-08 17:13:43 -08:00
dependabot[bot]
a39381f552 chore(deps-dev): Update minitest requirement from ~> 5.17.0 to ~> 5.18.0 in /ruby (#271)
Updates the requirements on
[minitest](https://github.com/seattlerb/minitest) to permit the latest
version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/minitest/minitest/blob/master/History.rdoc">minitest's
changelog</a>.</em></p>
<blockquote>
<p>=== 5.18.0 / 2023-03-04</p>
<ul>
<li>
<p>2 major enhancements:</p>
<ul>
<li>Added assert_pattern &amp; refute_pattern for pattern matching.
(flavorjones)</li>
<li>Added matching must_pattern_match &amp; wont_pattern_match to
minitest/spec.</li>
</ul>
</li>
<li>
<p>1 bug fix:</p>
<ul>
<li>Support the new message format of NameError in Ruby 3.3 (mame)</li>
</ul>
</li>
</ul>
<p>=== 5.17.0 / 2022-12-31</p>
<ul>
<li>
<p>1 minor enhancement:</p>
<ul>
<li>Refactor setup hooks into a SETUP_METHODS constant. (MSP-Greg)</li>
</ul>
</li>
<li>
<p>3 bug fixes:</p>
<ul>
<li>Fix kwargs for Mock calls to delegator. (blowmage)</li>
<li>Fix kwargs for expectations. (bobmazanec, blowmage)</li>
<li>Remove check for .b method. (tenderlove)</li>
</ul>
</li>
</ul>
<p>=== 5.16.3 / 2022-08-17</p>
<ul>
<li>
<p>2 bug fixes:</p>
<ul>
<li>Fixed exception sanitization by removing TypeError restriction on
rescue.</li>
<li>Use A instead of deprecated TESTOPTS in rake test:slow.
(davidstosik)</li>
</ul>
</li>
</ul>
<p>=== 5.16.2 / 2022-07-03</p>
<ul>
<li>
<p>4 bug fixes:</p>
<ul>
<li>Added MT_KWARGS_HACK kludge for stub to deal with ruby 2.7 kwargs
nastiness. (tsugimoto)</li>
<li>In #expect, pop Hash class from args if $MT_KWARGS_HACK.
(casperisfine)</li>
<li>In above scenario, set expected kwargs (as Objects) based on actual
kwargs.</li>
<li>Nuke ivars if exception fails to marshal twice (eg better_errors).
(irphilli)</li>
</ul>
</li>
</ul>
<p>=== 5.16.1 / 2022-06-20</p>
<ul>
<li>
<p>2 bug fixes:</p>
<ul>
<li>Apparently adding real kwarg support to mocks/stubs broke some code.
Fixed.
<ul>
<li>Use <code>MT_KWARGS_HACK=1</code> to activate the kludgy kwargs
support w/ caveats.</li>
</ul>
</li>
<li>Clarified some doco wrt the block on #stub.</li>
</ul>
</li>
</ul>
<p>=== 5.16.0 / 2022-06-14</p>
<ul>
<li>2 major enhancements:</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="506ce83b45"><code>506ce83</code></a>
prepped for release</li>
<li><a
href="0c44f4ea32"><code>0c44f4e</code></a>
! Added assert_pattern &amp; refute_pattern for pattern matching.
(flavorjones)</li>
<li><a
href="899b420aa0"><code>899b420</code></a>
Fixed typo in doco. (ahangarha)</li>
<li><a
href="ebd8a673a1"><code>ebd8a67</code></a>
- Support the new message format of NameError in Ruby 3.3 (mame)</li>
<li><a
href="0984e29995"><code>0984e29</code></a>
Add 2.6 to matrix... stays until some rails versions expire, sadly.</li>
<li><a
href="d5e68e6ef4"><code>d5e68e6</code></a>
Adds Ruby 3.2 to the CI matrix. Also updates checkout action version.
(peterg...</li>
<li><a
href="69bc4b0f5b"><code>69bc4b0</code></a>
Minor tweak to Rakefile to fix CI on older rubies</li>
<li>See full diff in <a
href="https://github.com/seattlerb/minitest/compare/v5.17.0...v5.18.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-05 22:33:24 -06:00
dependabot[bot]
71cbbb02bb chore(deps-dev): Bump @types/node from 18.14.2 to 18.14.6 in /node (#272)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 18.14.2 to 18.14.6.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=18.14.2&new-version=18.14.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-05 22:33:14 -06:00
dependabot[bot]
bb1a92d3f9 chore(deps-dev): Bump ex_doc from 0.29.1 to 0.29.2 in /elixir (#273)
Bumps [ex_doc](https://github.com/elixir-lang/ex_doc) from 0.29.1 to
0.29.2.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/elixir-lang/ex_doc/blob/main/CHANGELOG.md">ex_doc's
changelog</a>.</em></p>
<blockquote>
<h2>v0.29.2 (2023-03-02)</h2>
<ul>
<li>
<p>Enhancements</p>
<ul>
<li>Improvements to cheatsheets spacing</li>
<li>Improvements to cheatsheets print</li>
<li>Include sections of modules and extras in search suggestions</li>
<li>Make sidebar links full-width and add hover states</li>
<li>Improve clickable area of sidebar tabs</li>
<li>Improve contrast on sidebar</li>
</ul>
</li>
<li>
<p>Bug fix</p>
<ul>
<li>Add media type for .license files for epub</li>
<li>Fix overscroll on the sidebar</li>
<li>Focus search input immediately after keyboard shortcut</li>
<li>Don't attempt parsing code blocks that don't look like modules</li>
<li>Fix visited link color in admonition blocks</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0e2d7686ee"><code>0e2d768</code></a>
Release v0.29.2</li>
<li><a
href="adcea58ca0"><code>adcea58</code></a>
Increase contrast on sidebar</li>
<li><a
href="fa5dff69e3"><code>fa5dff6</code></a>
Fix visited link color in admonition blocks (<a
href="https://github-redirect.dependabot.com/elixir-lang/ex_doc/issues/1666">#1666</a>)</li>
<li><a
href="1a11987ce6"><code>1a11987</code></a>
Update Cheatsheet print styles (<a
href="https://github-redirect.dependabot.com/elixir-lang/ex_doc/issues/1665">#1665</a>)</li>
<li><a
href="d00110fc45"><code>d00110f</code></a>
Don't attempt parsing code blocks that don't look like modules (<a
href="https://github-redirect.dependabot.com/elixir-lang/ex_doc/issues/1662">#1662</a>)</li>
<li><a
href="486dce49c4"><code>486dce4</code></a>
Do not use tests that modify app env concurrently</li>
<li><a
href="400f088d08"><code>400f088</code></a>
Remove superfluous import of common custom properties from Erlang CSS
(<a
href="https://github-redirect.dependabot.com/elixir-lang/ex_doc/issues/1660">#1660</a>)</li>
<li><a
href="5350bc5cdb"><code>5350bc5</code></a>
Fix extra spacing on pages with no sections</li>
<li><a
href="5331a4ba48"><code>5331a4b</code></a>
Tweak cheatsheet CSS (<a
href="https://github-redirect.dependabot.com/elixir-lang/ex_doc/issues/1658">#1658</a>)</li>
<li><a
href="2d14453b23"><code>2d14453</code></a>
Update print page break-related declarations (<a
href="https://github-redirect.dependabot.com/elixir-lang/ex_doc/issues/1657">#1657</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/elixir-lang/ex_doc/compare/v0.29.1...v0.29.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ex_doc&package-manager=hex&previous-version=0.29.1&new-version=0.29.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-05 22:33:03 -06:00
dependabot[bot]
5d91870db6 chore(deps-dev): Bump typedoc from 0.23.25 to 0.23.26 in /node (#265)
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.23.25 to
0.23.26.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/TypeDoc/releases">typedoc's
releases</a>.</em></p>
<blockquote>
<h2>v0.23.26</h2>
<h3>Features</h3>
<ul>
<li>Added <code>Application.EVENT_VALIDATE_PROJECT</code> event for
plugins which implement custom validation, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2183">#2183</a>.</li>
<li>Plugins may now return an object from external symbol resolvers, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2066">#2066</a>.</li>
<li>Expose <code>Comment.displayPartsToMarkdown</code> on for themes
overwriting the <code>comment</code> helper, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2115">#2115</a>.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Fix crash when converting <code>export default undefined</code>, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2175">#2175</a>.</li>
<li>Fix error in console when clicking on headings in the readme, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2170">#2170</a>.</li>
<li>TypeDoc will now ignore parameters of callback parameters when
validating that all parameters have documentation, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2154">#2154</a>.</li>
</ul>
<h3>Thanks!</h3>
<ul>
<li><a
href="https://github.com/captain-torch"><code>@​captain-torch</code></a></li>
<li><a
href="https://github.com/loopingz"><code>@​loopingz</code></a></li>
<li><a
href="https://github.com/RebeccaStevens"><code>@​RebeccaStevens</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md">typedoc's
changelog</a>.</em></p>
<blockquote>
<h2>v0.23.26 (2023-02-26)</h2>
<h3>Features</h3>
<ul>
<li>Added <code>Application.EVENT_VALIDATE_PROJECT</code> event for
plugins which implement custom validation, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2183">#2183</a>.</li>
<li>Plugins may now return an object from external symbol resolvers, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2066">#2066</a>.</li>
<li>Expose <code>Comment.displayPartsToMarkdown</code> on for themes
overwriting the <code>comment</code> helper, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2115">#2115</a>.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Fix crash when converting <code>export default undefined</code>, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2175">#2175</a>.</li>
<li>Fix error in console when clicking on headings in the readme, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2170">#2170</a>.</li>
<li>TypeDoc will now ignore parameters of callback parameters when
validating that all parameters have documentation, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2154">#2154</a>.</li>
</ul>
<h3>Thanks!</h3>
<ul>
<li><a
href="https://github.com/captain-torch"><code>@​captain-torch</code></a></li>
<li><a
href="https://github.com/loopingz"><code>@​loopingz</code></a></li>
<li><a
href="https://github.com/RebeccaStevens"><code>@​RebeccaStevens</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c75f44f115"><code>c75f44f</code></a>
Update changelog for release</li>
<li><a
href="67355f273b"><code>67355f2</code></a>
Bump version to 0.23.26</li>
<li><a
href="86da0f3448"><code>86da0f3</code></a>
Fix lint</li>
<li><a
href="54c86d8fd9"><code>54c86d8</code></a>
Expose displayPartsToMarkdown</li>
<li><a
href="37fe88302e"><code>37fe883</code></a>
Ignore parameters of parameters</li>
<li><a
href="0a52e7452c"><code>0a52e74</code></a>
Fix <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2170">#2170</a></li>
<li><a
href="7a48a172ff"><code>7a48a17</code></a>
Document additional changes</li>
<li><a
href="3343cc44d2"><code>3343cc4</code></a>
Fix crash when converting undefined default export</li>
<li><a
href="6ee136acbf"><code>6ee136a</code></a>
feat: add validator run event to allow plugins to perform custom
validation (...</li>
<li><a
href="1d4922ca0b"><code>1d4922c</code></a>
Update minimatch to avoid type hackery</li>
<li>Additional commits viewable in <a
href="https://github.com/TypeStrong/TypeDoc/compare/v0.23.25...v0.23.26">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typedoc&package-manager=npm_and_yarn&previous-version=0.23.25&new-version=0.23.26)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-03 14:05:35 -06:00
dependabot[bot]
9d6e36b8cb chore(deps-dev): Bump @types/node from 18.14.0 to 18.14.2 in /node (#266)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 18.14.0 to 18.14.2.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=18.14.0&new-version=18.14.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-03 14:05:27 -06:00
zach
4b2f7d2bff fix(zig): use new for loop syntax (#269) 2023-03-03 11:15:36 -08:00
Etienne ANNE
3e69ceeede feat: Add Host Functions support for Java SDK (#248) 2023-03-02 15:46:13 -06:00
Steve Manuel
581e9cea99 chore: update wasmtime to 6.0, bump extism versions (#247)
Unsure if now is the best time to do the `extism` crate version bumps,
but I figured they'd need to happen at some point in the near future
anyways. Happy to revert if there is any opposition. Also, I added back
the local `path` property to the Elixir NIF crate manifest. I want to
see if this breaks again in CI, or if we can leave it.

---------

Co-authored-by: zach <zach@dylib.so>
2023-03-01 15:24:37 -08:00
zach
48979b9f6d fix(python): export CurrentPlugin (#263) 2023-02-22 14:46:56 -08:00
dependabot[bot]
6ead4d9cd2 chore(deps-dev): Bump jest from 29.4.2 to 29.4.3 in /node (#261)
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest)
from 29.4.2 to 29.4.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/facebook/jest/releases">jest's
releases</a>.</em></p>
<blockquote>
<h2>v29.4.3</h2>
<h2>Features</h2>
<ul>
<li><code>[expect]</code> Update <code>toThrow()</code> to be able to
use error <code>cause</code>s (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13606">#13606</a>)</li>
<li><code>[jest-core]</code> allow to use
<code>workerIdleMemoryLimit</code> with only 1 worker or
<code>runInBand</code> option (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13846">#13846</a>)</li>
<li><code>[jest-message-util]</code> Add support for <a
href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause">error
<code>cause</code>s</a> (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13868">#13868</a>
&amp; <a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13912">#13912</a>)</li>
<li><code>[jest-runtime]</code> Revert <code>import assertions</code>
for JSON modules as it's been relegated to Stage 2 (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13911">#13911</a>)</li>
</ul>
<h2>Fixes</h2>
<ul>
<li><code>[@jest/expect-utils]</code> <code>subsetEquality</code> should
consider also an object's inherited string keys (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13824">#13824</a>)</li>
<li><code>[jest-mock]</code> Clear mock state when
<code>jest.restoreAllMocks()</code> is called (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13867">#13867</a>)</li>
<li><code>[jest-mock]</code> Prevent <code>mockImplementationOnce</code>
and <code>mockReturnValueOnce</code> bleeding into
<code>withImplementation</code> (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13888">#13888</a>)</li>
<li><code>[jest-mock]</code> Do not restore mocks when
<code>jest.resetAllMocks()</code> is called (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13866">#13866</a>)</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/brodo"><code>@​brodo</code></a> made
their first contribution in <a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13868">facebook/jest#13868</a></li>
<li><a
href="https://github.com/DannyNemer"><code>@​DannyNemer</code></a> made
their first contribution in <a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13878">facebook/jest#13878</a></li>
<li><a href="https://github.com/ghusse"><code>@​ghusse</code></a> made
their first contribution in <a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13846">facebook/jest#13846</a></li>
<li><a href="https://github.com/broofa"><code>@​broofa</code></a> made
their first contribution in <a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13911">facebook/jest#13911</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/facebook/jest/compare/v29.4.2...v29.4.3">https://github.com/facebook/jest/compare/v29.4.2...v29.4.3</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/facebook/jest/blob/main/CHANGELOG.md">jest's
changelog</a>.</em></p>
<blockquote>
<h2>29.4.3</h2>
<h3>Features</h3>
<ul>
<li><code>[expect]</code> Update <code>toThrow()</code> to be able to
use error <code>cause</code>s (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13606">#13606</a>)</li>
<li><code>[jest-core]</code> allow to use
<code>workerIdleMemoryLimit</code> with only 1 worker or
<code>runInBand</code> option (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13846">#13846</a>)</li>
<li><code>[jest-message-util]</code> Add support for <a
href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause">error
<code>cause</code>s</a> (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13868">#13868</a>
&amp; <a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13912">#13912</a>)</li>
<li><code>[jest-runtime]</code> Revert <code>import assertions</code>
for JSON modules as it's been relegated to Stage 2 (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13911">#13911</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li><code>[@jest/expect-utils]</code> <code>subsetEquality</code> should
consider also an object's inherited string keys (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13824">#13824</a>)</li>
<li><code>[jest-mock]</code> Clear mock state when
<code>jest.restoreAllMocks()</code> is called (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13867">#13867</a>)</li>
<li><code>[jest-mock]</code> Prevent <code>mockImplementationOnce</code>
and <code>mockReturnValueOnce</code> bleeding into
<code>withImplementation</code> (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13888">#13888</a>)</li>
<li><code>[jest-mock]</code> Do not restore mocks when
<code>jest.resetAllMocks()</code> is called (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13866">#13866</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="a49c88610e"><code>a49c886</code></a>
v29.4.3</li>
<li><a
href="6d2632adae"><code>6d2632a</code></a>
Update copyrights with Meta Platforms, restore original license in
Jasmine fo...</li>
<li>See full diff in <a
href="https://github.com/facebook/jest/commits/v29.4.3/packages/jest">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=jest&package-manager=npm_and_yarn&previous-version=29.4.2&new-version=29.4.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-22 15:11:02 -06:00
dependabot[bot]
08e708bac5 chore(deps-dev): Bump @types/node from 18.13.0 to 18.14.0 in /node (#262)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 18.13.0 to 18.14.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=18.13.0&new-version=18.14.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-22 15:10:53 -06:00
Doğu Us
602ca04f11 fix(zig-sdk): Fix Example And Test (#260) 2023-02-17 09:27:42 -07:00
dependabot[bot]
8135952842 chore(deps-dev): Bump prettier from 2.8.3 to 2.8.4 in /node (#259)
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.3 to
2.8.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/releases">prettier's
releases</a>.</em></p>
<blockquote>
<h2>2.8.4</h2>
<p>🔗 <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md#284">Changelog</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md">prettier's
changelog</a>.</em></p>
<blockquote>
<h1>2.8.4</h1>
<p><a
href="https://github.com/prettier/prettier/compare/2.8.3...2.8.4">diff</a></p>
<h4>Fix leading comments in mapped types with <code>readonly</code> (<a
href="https://github-redirect.dependabot.com/prettier/prettier/pull/13427">#13427</a>
by <a href="https://github.com/thorn0"><code>@​thorn0</code></a>, <a
href="https://github.com/sosukesuzuki"><code>@​sosukesuzuki</code></a>)</h4>
<!-- raw HTML omitted -->
<pre lang="tsx"><code>// Input
type Type = {
  // comment
  readonly [key in Foo];
};
<p>// Prettier 2.8.3
type Type = {
readonly // comment
[key in Foo];
};</p>
<p>// Prettier 2.8.4
type Type = {
// comment
readonly [key in Foo];
};
</code></pre></p>
<h4>Group params in opening block statements (<a
href="https://github-redirect.dependabot.com/prettier/prettier/pull/14067">#14067</a>
by <a
href="https://github.com/jamescdavis"><code>@​jamescdavis</code></a>)</h4>
<p>This is a follow-up to <a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/13930">#13930</a>
to establish wrapping consistency between opening block statements and
else blocks by
grouping params in opening blocks. This causes params to break to a new
line together and not be split across lines
unless the length of params exceeds the print width. This also updates
the else block wrapping to behave exactly the
same as opening blocks.</p>
<!-- raw HTML omitted -->
<pre lang="hbs"><code>{{! Input }}
{{#block param param param param param param param param param param as
|blockParam|}}
  Hello
{{else block param param param param param param param param param param
as |blockParam|}}
  There
{{/block}}
<p>{{! Prettier 2.8.3 }}
{{#block
param
param
param
param
param
&lt;/tr&gt;&lt;/table&gt;
</code></pre></p>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e681edb67c"><code>e681edb</code></a>
Release 2.8.4</li>
<li><a
href="6bb24b2c5a"><code>6bb24b2</code></a>
Fix leading comments in mapped types with <code>readonly</code>
(Cherry-pick <a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/13427">#13427</a>)
(<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/1">#1</a>...</li>
<li><a
href="399f2fae40"><code>399f2fa</code></a>
Add changelog for <a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/14206">#14206</a>
(<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/14311">#14311</a>)</li>
<li><a
href="9842b29ca3"><code>9842b29</code></a>
Recognize <code>@satisfies</code> in Closure-style type casts (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/14262">#14262</a>)</li>
<li><a
href="bc18fa4397"><code>bc18fa4</code></a>
Fix incorrect removal of parentheses when using an <code>infer</code>
with a constraint ...</li>
<li><a
href="f602be5a47"><code>f602be5</code></a>
Update <code>embeddedLanguageFormatting</code> option documentation (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/14048">#14048</a>)</li>
<li><a
href="37fb53acf3"><code>37fb53a</code></a>
[handlebars] group params in opening block statements (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/14067">#14067</a>)</li>
<li><a
href="310a5b1ba5"><code>310a5b1</code></a>
Handlebars: Improve HTML void element check (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/14110">#14110</a>)</li>
<li><a
href="62195dd1f2"><code>62195dd</code></a>
Add .sl to the list of silentlyIgnoredDirs (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/14206">#14206</a>)</li>
<li><a
href="bf406f7728"><code>bf406f7</code></a>
Clean changelog</li>
<li>Additional commits viewable in <a
href="https://github.com/prettier/prettier/compare/2.8.3...2.8.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=prettier&package-manager=npm_and_yarn&previous-version=2.8.3&new-version=2.8.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-16 10:24:23 -06:00
dependabot[bot]
041e0c7b4f chore(deps-dev): Bump @types/node from 18.11.19 to 18.13.0 in /node (#258)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 18.11.19 to 18.13.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=18.11.19&new-version=18.13.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-16 10:24:14 -06:00
dependabot[bot]
a1ebfb7597 chore(deps-dev): Bump typedoc from 0.23.24 to 0.23.25 in /node (#257)
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.23.24 to
0.23.25.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/TypeDoc/releases">typedoc's
releases</a>.</em></p>
<blockquote>
<h2>v0.23.25</h2>
<h3>Breaking Changes</h3>
<ul>
<li>Upgraded Shiki, if your highlight theme was set to
<code>material-&lt;theme&gt;</code>, the value will need to be changed
to
<code>material-theme-&lt;theme&gt;</code>, see the <a
href="https://github.com/shikijs/shiki/blob/main/CHANGELOG.md#0130--2023-01-27">Shiki
release notes</a>.</li>
</ul>
<h3>Features</h3>
<ul>
<li>Added new <code>excludeNotDocumentedKinds</code> variable to control
which reflection types can be removed
by the <code>excludeNotDocumented</code> option, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2162">#2162</a>.</li>
<li>Added <code>typedoc.jsonc</code>, <code>typedoc.config.js</code>,
<code>typedoc.config.cjs</code>, <code>typedoc.cjs</code> to the list of
files
which TypeDoc will automatically use as configuration files.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Entry points under <code>node_modules</code> will no longer be
ignored, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2151">#2151</a>.</li>
<li>Corrected behavior of <code>excludeNotDocumented</code> on arrow
function-variables, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2156">#2156</a>.</li>
<li>Added <code>package.json</code> to exports declaration.</li>
</ul>
<h3>Thanks!</h3>
<ul>
<li><a
href="https://github.com/boneskull"><code>@​boneskull</code></a></li>
<li><a
href="https://github.com/Mikkal24"><code>@​Mikkal24</code></a></li>
<li><a href="https://github.com/zamiell"><code>@​zamiell</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md">typedoc's
changelog</a>.</em></p>
<blockquote>
<h2>v0.23.25 (2023-02-11)</h2>
<h3>Breaking Changes</h3>
<ul>
<li>Upgraded Shiki, if your highlight theme was set to
<code>material-&lt;theme&gt;</code>, the value will need to be changed
to
<code>material-theme-&lt;theme&gt;</code>, see the <a
href="https://github.com/shikijs/shiki/blob/main/CHANGELOG.md#0130--2023-01-27">Shiki
release notes</a>.</li>
</ul>
<h3>Features</h3>
<ul>
<li>Added new <code>excludeNotDocumentedKinds</code> variable to control
which reflection types can be removed
by the <code>excludeNotDocumented</code> option, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2162">#2162</a>.</li>
<li>Added <code>typedoc.jsonc</code>, <code>typedoc.config.js</code>,
<code>typedoc.config.cjs</code>, <code>typedoc.cjs</code> to the list of
files
which TypeDoc will automatically use as configuration files.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Entry points under <code>node_modules</code> will no longer be
ignored, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2151">#2151</a>.</li>
<li>Corrected behavior of <code>excludeNotDocumented</code> on arrow
function-variables, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2156">#2156</a>.</li>
<li>Added <code>package.json</code> to exports declaration.</li>
</ul>
<h3>Thanks!</h3>
<ul>
<li><a
href="https://github.com/boneskull"><code>@​boneskull</code></a></li>
<li><a
href="https://github.com/Mikkal24"><code>@​Mikkal24</code></a></li>
<li><a href="https://github.com/zamiell"><code>@​zamiell</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c565bc618e"><code>c565bc6</code></a>
Update changelog for release</li>
<li><a
href="c189157797"><code>c189157</code></a>
Bump version to 0.23.25</li>
<li><a
href="772fd7f1b9"><code>772fd7f</code></a>
Fix type error</li>
<li><a
href="ca5d5e655a"><code>ca5d5e6</code></a>
Fix excludeNotDocumented on arrow functions</li>
<li><a
href="f838e112bf"><code>f838e11</code></a>
Revert bad test change</li>
<li><a
href="f6ea91e275"><code>f6ea91e</code></a>
esbuild breaking changes</li>
<li><a
href="e021751e5f"><code>e021751</code></a>
Upgrade dependencies</li>
<li><a
href="138a52b678"><code>138a52b</code></a>
Add excludeNotDocumentedKinds option</li>
<li><a
href="d82c01b0a4"><code>d82c01b</code></a>
feat: better config file defaults (<a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2168">#2168</a>)</li>
<li><a
href="2953f9c521"><code>2953f9c</code></a>
Merge pull request <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2164">#2164</a>
from boneskull/boneskull/issue2151</li>
<li>Additional commits viewable in <a
href="https://github.com/TypeStrong/TypeDoc/compare/v0.23.24...v0.23.25">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typedoc&package-manager=npm_and_yarn&previous-version=0.23.24&new-version=0.23.25)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-16 10:24:04 -06:00
dependabot[bot]
1eaa7854d7 chore(deps-dev): Bump jest from 29.4.1 to 29.4.2 in /node (#256)
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest)
from 29.4.1 to 29.4.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/facebook/jest/releases">jest's
releases</a>.</em></p>
<blockquote>
<h2>v29.4.2</h2>
<h2>Features</h2>
<ul>
<li><code>[@jest/core]</code> Instrument significant lifecycle events
with <a
href="https://nodejs.org/docs/latest-v16.x/api/perf_hooks.html#performancemarkname-options"><code>performance.mark()</code></a>
(<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13859">#13859</a>)</li>
</ul>
<h2>Fixes</h2>
<ul>
<li><code>[expect, @jest/expect]</code> Provide type of
<code>actual</code> as a generic argument to <code>Matchers</code> to
allow better-typed extensions (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13848">#13848</a>)</li>
<li><code>[jest-circus]</code> Added explicit mention of test failing
because <code>done()</code> is not being called in error message (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13847">#13847</a>)</li>
<li><code>[jest-runtime]</code> Handle CJS re-exports of node core
modules from ESM (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13856">#13856</a>)</li>
<li><code>[jest-transform]</code> Downgrade
<code>write-file-atomic</code> to v4 (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13853">#13853</a>)</li>
<li><code>[jest-worker]</code> Ignore IPC messages not intended for Jest
(<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13543">#13543</a>)</li>
</ul>
<h2>Chore &amp; Maintenance</h2>
<ul>
<li><code>[*]</code> make sure to exclude <code>.eslintcache</code> from
published module (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13832">#13832</a>)</li>
<li><code>[docs]</code> Cleanup incorrect links in CHANGELOG.md (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13857">#13857</a>)</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/benjaminjkraft"><code>@​benjaminjkraft</code></a>
made their first contribution in <a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13848">facebook/jest#13848</a></li>
<li><a href="https://github.com/LinusU"><code>@​LinusU</code></a> made
their first contribution in <a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13543">facebook/jest#13543</a></li>
<li><a
href="https://github.com/SuperSodaSea"><code>@​SuperSodaSea</code></a>
made their first contribution in <a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13857">facebook/jest#13857</a></li>
<li><a href="https://github.com/kowalski"><code>@​kowalski</code></a>
made their first contribution in <a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13856">facebook/jest#13856</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/facebook/jest/compare/v29.4.1...v29.4.2">https://github.com/facebook/jest/compare/v29.4.1...v29.4.2</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/facebook/jest/blob/main/CHANGELOG.md">jest's
changelog</a>.</em></p>
<blockquote>
<h2>29.4.2</h2>
<h3>Features</h3>
<ul>
<li><code>[@jest/core]</code> Instrument significant lifecycle events
with <a
href="https://nodejs.org/docs/latest-v16.x/api/perf_hooks.html#performancemarkname-options"><code>performance.mark()</code></a>
(<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13859">#13859</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li><code>[expect, @jest/expect]</code> Provide type of
<code>actual</code> as a generic argument to <code>Matchers</code> to
allow better-typed extensions (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13848">#13848</a>)</li>
<li><code>[jest-circus]</code> Added explicit mention of test failing
because <code>done()</code> is not being called in error message (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13847">#13847</a>)</li>
<li><code>[jest-runtime]</code> Handle CJS re-exports of node core
modules from ESM (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13856">#13856</a>)</li>
<li><code>[jest-transform]</code> Downgrade
<code>write-file-atomic</code> to v4 (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13853">#13853</a>)</li>
<li><code>[jest-worker]</code> Ignore IPC messages not intended for Jest
(<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13543">#13543</a>)</li>
</ul>
<h3>Chore &amp; Maintenance</h3>
<ul>
<li><code>[*]</code> make sure to exclude <code>.eslintcache</code> from
published module (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13832">#13832</a>)</li>
<li><code>[docs]</code> Cleanup incorrect links in CHANGELOG.md (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13857">#13857</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f0fc92e844"><code>f0fc92e</code></a>
v29.4.2</li>
<li><a
href="bc7b20c9d4"><code>bc7b20c</code></a>
chore: make sure to exclude .eslintcache from published module (<a
href="https://github.com/facebook/jest/tree/HEAD/packages/jest/issues/13832">#13832</a>)</li>
<li>See full diff in <a
href="https://github.com/facebook/jest/commits/v29.4.2/packages/jest">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=jest&package-manager=npm_and_yarn&previous-version=29.4.1&new-version=29.4.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-16 10:23:53 -06:00
zach
c706e4efec cleanup: use serde(deny_unknown_fields) in manifest (#254) 2023-02-14 11:40:42 -08:00
Doğu Us
f0f53c7827 feat(zig-sdk): Implement Host Functions (#249)
There are some breaking changes:

- Plugin.init now requires an allocator and functions slice
- Plugin.initFromManifest now requires a functions slice
- Plugin struct removed in favor of using the file as struct
- from @nilslice: https://zig.news/gowind/zig-files-are-structs-288j
(good reference!)

---------

Co-authored-by: Steve Manuel <steve@dylib.so>
2023-02-12 12:36:27 -07:00
dependabot[bot]
bc4baaf67d chore(deps-dev): Bump jest from 29.3.1 to 29.4.1 in /node (#243)
Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest)
from 29.3.1 to 29.4.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/facebook/jest/releases">jest's
releases</a>.</em></p>
<blockquote>
<h2>v29.4.1</h2>
<h2>Features</h2>
<ul>
<li><code>[expect, jest-circus, @jest/types]</code> Implement
<code>numPassingAsserts</code> of testResults to track the number of
passing asserts in a test (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13795">#13795</a>)</li>
<li><code>[jest-core]</code> Add newlines to JSON output (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13817">#13817</a>)</li>
<li><code>[@jest/reporters]</code> Automatic log folding in GitHub
Actions Reporter (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13626">#13626</a>)</li>
</ul>
<h2>Fixes</h2>
<ul>
<li><code>[@jest/expect-utils]</code> <code>toMatchObject</code> diffs
should include <code>Symbol</code> properties (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13810">#13810</a>)</li>
<li><code>[jest-runtime]</code> Handle missing
<code>replaceProperty</code> (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13823">#13823</a>)</li>
<li><code>[@jest/types]</code> Add partial support for <code>done</code>
callbacks in typings of <code>each</code> (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13756">#13756</a>)</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/jessevanassen"><code>@​jessevanassen</code></a>
made their first contribution in <a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13817">facebook/jest#13817</a></li>
<li><a href="https://github.com/ymqy"><code>@​ymqy</code></a> made their
first contribution in <a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13795">facebook/jest#13795</a></li>
<li><a
href="https://github.com/MatteoH2O1999"><code>@​MatteoH2O1999</code></a>
made their first contribution in <a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13626">facebook/jest#13626</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/facebook/jest/compare/v29.4.0...v29.4.1">https://github.com/facebook/jest/compare/v29.4.0...v29.4.1</a></p>
<h2>v29.4.0</h2>
<h2>Features</h2>
<ul>
<li><code>[expect, @jest/expect-utils]</code> Support custom equality
testers (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13654">#13654</a>)</li>
<li><code>[jest-config, jest-worker]</code> Use
<code>os.availableParallelism</code> if available to calculate number of
workers to spawn (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13738">#13738</a>)</li>
<li><code>[@jest/globals, jest-mock]</code> Add
<code>jest.replaceProperty()</code> that replaces property value (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13496">#13496</a>)</li>
<li><code>[jest-haste-map]</code> ignore Sapling vcs directories
(<code>.sl/</code>) (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13674">#13674</a>)</li>
<li><code>[jest-resolve]</code> Support subpath imports (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13705">#13705</a>,
<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13723">#13723</a>,
<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13777">#13777</a>)</li>
<li><code>[jest-runtime]</code> Add
<code>jest.isolateModulesAsync</code> for scoped module initialization
of asynchronous functions (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13680">#13680</a>)</li>
<li><code>[jest-runtime]</code> Add
<code>jest.isEnvironmentTornDown</code> function (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13741">#13741</a>)</li>
<li><code>[jest-test-result]</code> Added <code>skipped</code> and
<code>focused</code> status to <code>FormattedTestResult</code> (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13700">#13700</a>)</li>
<li><code>[jest-transform]</code> Support for asynchronous
<code>createTransformer</code> (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13762">#13762</a>)</li>
</ul>
<h2>Fixes</h2>
<ul>
<li><code>[jest-environment-node]</code> Fix non-configurable globals
(<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13687">#13687</a>)</li>
<li><code>[@jest/expect-utils]</code> <code>toMatchObject</code> should
handle <code>Symbol</code> properties (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13639">#13639</a>)</li>
<li><code>[jest-mock]</code> Fix <code>mockReset</code> and
<code>resetAllMocks</code> <code>undefined</code> return value(<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13692">#13692</a>)</li>
<li><code>[jest-resolve]</code> Add global paths to
<code>require.resolve.paths</code> (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13633">#13633</a>)</li>
<li><code>[jest-resolve]</code> Correct node core module detection when
using <code>node:</code> specifiers (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13806">#13806</a>)</li>
<li><code>[jest-runtime]</code> Support WASM files that import JS
resources (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13608">#13608</a>)</li>
<li><code>[jest-runtime]</code> Use the <code>scriptTransformer</code>
cache in <code>jest-runner</code> (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13735">#13735</a>)</li>
<li><code>[jest-runtime]</code> Enforce import assertions when importing
JSON in ESM (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/12755">#12755</a>
&amp; <a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13805">#13805</a>)</li>
<li><code>[jest-snapshot]</code> Make sure to import <code>babel</code>
outside of the sandbox (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13694">#13694</a>)</li>
<li><code>[jest-transform]</code> Ensure the correct configuration is
passed to preprocessors specified multiple times in the
<code>transform</code> option (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13770">#13770</a>)</li>
</ul>
<h2>Chore &amp; Maintenance</h2>
<ul>
<li><code>[@jest/fake-timers]</code> Update
<code>@sinonjs/fake-timers</code> (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13612">#13612</a>)</li>
<li><code>[docs]</code> Improve custom puppeteer example to prevent
worker warnings (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13619">#13619</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/facebook/jest/blob/main/CHANGELOG.md">jest's
changelog</a>.</em></p>
<blockquote>
<h2>29.4.1</h2>
<h3>Features</h3>
<ul>
<li><code>[expect, jest-circus, @jest/types]</code> Implement
<code>numPassingAsserts</code> of testResults to track the number of
passing asserts in a test (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13795">#13795</a>)</li>
<li><code>[jest-core]</code> Add newlines to JSON output (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13817">#13817</a>)</li>
<li><code>[@jest/reporters]</code> Automatic log folding in GitHub
Actions Reporter (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13626">#13626</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li><code>[@jest/expect-utils]</code> <code>toMatchObject</code> diffs
should include <code>Symbol</code> properties (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13810">#13810</a>)</li>
<li><code>[jest-runtime]</code> Handle missing
<code>replaceProperty</code> (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13823">#13823</a>)</li>
<li><code>[@jest/types]</code> Add partial support for <code>done</code>
callbacks in typings of <code>each</code> (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13756">#13756</a>)</li>
</ul>
<h2>29.4.0</h2>
<h3>Features</h3>
<ul>
<li><code>[expect, @jest/expect-utils]</code> Support custom equality
testers (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13654">#13654</a>)</li>
<li><code>[jest-config, jest-worker]</code> Use
<code>os.availableParallelism</code> if available to calculate number of
workers to spawn (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13738">#13738</a>)</li>
<li><code>[@jest/globals, jest-mock]</code> Add
<code>jest.replaceProperty()</code> that replaces property value (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13496">#13496</a>)</li>
<li><code>[jest-haste-map]</code> ignore Sapling vcs directories
(<code>.sl/</code>) (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13674">#13674</a>)</li>
<li><code>[jest-resolve]</code> Support subpath imports (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13705">#13705</a>,
<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13723">#13723</a>,
<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13777">#13777</a>)</li>
<li><code>[jest-runtime]</code> Add
<code>jest.isolateModulesAsync</code> for scoped module initialization
of asynchronous functions (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13680">#13680</a>)</li>
<li><code>[jest-runtime]</code> Add
<code>jest.isEnvironmentTornDown</code> function (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13741">#13741</a>)</li>
<li><code>[jest-test-result]</code> Added <code>skipped</code> and
<code>focused</code> status to <code>FormattedTestResult</code> (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13700">#13700</a>)</li>
<li><code>[jest-transform]</code> Support for asynchronous
<code>createTransformer</code> (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13762">#13762</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li><code>[jest-environment-node]</code> Fix non-configurable globals
(<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13687">#13687</a>)</li>
<li><code>[@jest/expect-utils]</code> <code>toMatchObject</code> should
handle <code>Symbol</code> properties (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13639">#13639</a>)</li>
<li><code>[jest-mock]</code> Fix <code>mockReset</code> and
<code>resetAllMocks</code> <code>undefined</code> return value(<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13692">#13692</a>)</li>
<li><code>[jest-resolve]</code> Add global paths to
<code>require.resolve.paths</code> (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13633">#13633</a>)</li>
<li><code>[jest-resolve]</code> Correct node core module detection when
using <code>node:</code> specifiers (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13806">#13806</a>)</li>
<li><code>[jest-runtime]</code> Support WASM files that import JS
resources (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13608">#13608</a>)</li>
<li><code>[jest-runtime]</code> Use the <code>scriptTransformer</code>
cache in <code>jest-runner</code> (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13735">#13735</a>)</li>
<li><code>[jest-runtime]</code> Enforce import assertions when importing
JSON in ESM (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/12755">#12755</a>
&amp; <a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13805">#13805</a>)</li>
<li><code>[jest-snapshot]</code> Make sure to import <code>babel</code>
outside of the sandbox (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13694">#13694</a>)</li>
<li><code>[jest-transform]</code> Ensure the correct configuration is
passed to preprocessors specified multiple times in the
<code>transform</code> option (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13770">#13770</a>)</li>
</ul>
<h3>Chore &amp; Maintenance</h3>
<ul>
<li><code>[@jest/fake-timers]</code> Update
<code>@sinonjs/fake-timers</code> (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13612">#13612</a>)</li>
<li><code>[docs]</code> Improve custom puppeteer example to prevent
worker warnings (<a
href="https://github-redirect.dependabot.com/facebook/jest/pull/13619">#13619</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="bc84c8a156"><code>bc84c8a</code></a>
v29.4.1</li>
<li><a
href="4bc0e8acaf"><code>4bc0e8a</code></a>
v29.4.0</li>
<li><a
href="6e5b1d60a1"><code>6e5b1d6</code></a>
chore: update typescript (<a
href="https://github.com/facebook/jest/tree/HEAD/packages/jest/issues/13616">#13616</a>)</li>
<li>See full diff in <a
href="https://github.com/facebook/jest/commits/v29.4.1/packages/jest">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=jest&package-manager=npm_and_yarn&previous-version=29.3.1&new-version=29.4.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-12 11:04:28 -07:00
dependabot[bot]
e05169c3f1 chore(deps-dev): Update black requirement from ^22.10.0 to ^23.1.0 in /python (#250)
Updates the requirements on [black](https://github.com/psf/black) to
permit the latest version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/psf/black/releases">black's
releases</a>.</em></p>
<blockquote>
<h2>23.1.0</h2>
<h3>Highlights</h3>
<p>This is the first release of 2023, and following our <a
href="https://black.readthedocs.io/en/stable/the_black_code_style/index.html#stability-policy">stability
policy</a>, it comes with a number of improvements to our stable style,
notably improvements to empty line handling and the removal of redundant
parentheses in several contexts.</p>
<p>There are also many changes to the preview style; try out <code>black
--preview</code> and give us feedback to help us set the stable style
for next year.</p>
<p>In addition to style changes, Black now automatically infers the
supported Python versions from your <code>pyproject.toml</code> file,
removing the need to set Black's target versions separately.</p>
<h3>Stable style</h3>
<!-- raw HTML omitted -->
<ul>
<li>Introduce the 2023 stable style, which incorporates most aspects of
last year's preview style (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3418">#3418</a>).
Specific changes:
<ul>
<li>Enforce empty lines before classes and functions with sticky leading
comments (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3302">#3302</a>)
(22.12.0)</li>
<li>Reformat empty and whitespace-only files as either an empty file (if
no newline is present) or as a single newline character (if a newline is
present) (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3348">#3348</a>)
(22.12.0)</li>
<li>Correctly handle trailing commas that are inside a line's leading
non-nested parens (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3370">#3370</a>)
(22.12.0)</li>
<li><code>--skip-string-normalization</code> / <code>-S</code> now
prevents docstring prefixes from being normalized as expected (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3168">#3168</a>)
(since 22.8.0)</li>
<li>When using <code>--skip-magic-trailing-comma</code> or
<code>-C</code>, trailing commas are stripped from subscript expressions
with more than 1 element (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3209">#3209</a>)
(22.8.0)</li>
<li>Fix a string merging/split issue when a comment is present in the
middle of implicitly concatenated strings on its own line (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3227">#3227</a>)
(22.8.0)</li>
<li>Docstring quotes are no longer moved if it would violate the line
length limit (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3044">#3044</a>,
<a
href="https://github-redirect.dependabot.com/psf/black/issues/3430">#3430</a>)
(22.6.0)</li>
<li>Parentheses around return annotations are now managed (<a
href="https://github-redirect.dependabot.com/psf/black/issues/2990">#2990</a>)
(22.6.0)</li>
<li>Remove unnecessary parentheses around awaited objects (<a
href="https://github-redirect.dependabot.com/psf/black/issues/2991">#2991</a>)
(22.6.0)</li>
<li>Remove unnecessary parentheses in <code>with</code> statements (<a
href="https://github-redirect.dependabot.com/psf/black/issues/2926">#2926</a>)
(22.6.0)</li>
<li>Remove trailing newlines after code block open (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3035">#3035</a>)
(22.6.0)</li>
<li>Code cell separators <code>#%%</code> are now standardised to
<code># %%</code> (<a
href="https://github-redirect.dependabot.com/psf/black/issues/2919">#2919</a>)
(22.3.0)</li>
<li>Remove unnecessary parentheses from <code>except</code> statements
(<a
href="https://github-redirect.dependabot.com/psf/black/issues/2939">#2939</a>)
(22.3.0)</li>
<li>Remove unnecessary parentheses from tuple unpacking in
<code>for</code> loops (<a
href="https://github-redirect.dependabot.com/psf/black/issues/2945">#2945</a>)
(22.3.0)</li>
<li>Avoid magic-trailing-comma in single-element subscripts (<a
href="https://github-redirect.dependabot.com/psf/black/issues/2942">#2942</a>)
(22.3.0)</li>
</ul>
</li>
<li>Fix a crash when a colon line is marked between <code># fmt:
off</code> and <code># fmt: on</code> (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3439">#3439</a>)</li>
</ul>
<h3>Preview style</h3>
<!-- raw HTML omitted -->
<ul>
<li>Format hex codes in unicode escape sequences in string literals (<a
href="https://github-redirect.dependabot.com/psf/black/issues/2916">#2916</a>)</li>
<li>Add parentheses around <code>if</code>-<code>else</code> expressions
(<a
href="https://github-redirect.dependabot.com/psf/black/issues/2278">#2278</a>)</li>
<li>Improve performance on large expressions that contain many strings
(<a
href="https://github-redirect.dependabot.com/psf/black/issues/3467">#3467</a>)</li>
<li>Fix a crash in preview style with assert + parenthesized string (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3415">#3415</a>)</li>
<li>Fix crashes in preview style with walrus operators used in function
return annotations and except clauses (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3423">#3423</a>)</li>
<li>Fix a crash in preview advanced string processing where mixed
implicitly concatenated regular and f-strings start with an empty span
(<a
href="https://github-redirect.dependabot.com/psf/black/issues/3463">#3463</a>)</li>
<li>Fix a crash in preview advanced string processing where a standalone
comment is placed before a dict's value (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3469">#3469</a>)</li>
<li>Fix an issue where extra empty lines are added when a decorator has
<code># fmt: skip</code> applied or there is a standalone comment
between decorators (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3470">#3470</a>)</li>
<li>Do not put the closing quotes in a docstring on a separate line,
even if the line is too long (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3430">#3430</a>)</li>
<li>Long values in dict literals are now wrapped in parentheses;
correspondingly unnecessary parentheses around short values in dict
literals are now removed; long string lambda values are now wrapped in
parentheses (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3440">#3440</a>)</li>
<li>Fix two crashes in preview style involving edge cases with
docstrings (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3451">#3451</a>)</li>
<li>Exclude string type annotations from improved string processing; fix
crash when the return type annotation is stringified and spans across
multiple lines (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3462">#3462</a>)</li>
<li>Wrap multiple context managers in parentheses when targeting Python
3.9+ (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3489">#3489</a>)</li>
<li>Fix several crashes in preview style with walrus operators used in
<code>with</code> statements or tuples (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3473">#3473</a>)</li>
<li>Fix an invalid quote escaping bug in f-string expressions where it
produced invalid code. Implicitly concatenated f-strings with different
quotes can now be merged or quote-normalized by changing the quotes used
in expressions. (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3509">#3509</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/psf/black/blob/main/CHANGES.md">black's
changelog</a>.</em></p>
<blockquote>
<h2>23.1.0</h2>
<h3>Highlights</h3>
<p>This is the first release of 2023, and following our
<a
href="https://black.readthedocs.io/en/stable/the_black_code_style/index.html#stability-policy">stability
policy</a>,
it comes with a number of improvements to our stable style, including
improvements to
empty line handling, removal of redundant parentheses in several
contexts, and output
that highlights implicitly concatenated strings better.</p>
<p>There are also many changes to the preview style; try out <code>black
--preview</code> and give us
feedback to help us set the stable style for next year.</p>
<p>In addition to style changes, Black now automatically infers the
supported Python
versions from your <code>pyproject.toml</code> file, removing the need
to set Black's target
versions separately.</p>
<h3>Stable style</h3>
<!-- raw HTML omitted -->
<ul>
<li>Introduce the 2023 stable style, which incorporates most aspects of
last year's
preview style (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3418">#3418</a>).
Specific changes:
<ul>
<li>Enforce empty lines before classes and functions with sticky leading
comments
(<a
href="https://github-redirect.dependabot.com/psf/black/issues/3302">#3302</a>)
(22.12.0)</li>
<li>Reformat empty and whitespace-only files as either an empty file (if
no newline is
present) or as a single newline character (if a newline is present) (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3348">#3348</a>)
(22.12.0)</li>
<li>Implicitly concatenated strings used as function args are now
wrapped inside
parentheses (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3307">#3307</a>)
(22.12.0)</li>
<li>Correctly handle trailing commas that are inside a line's leading
non-nested parens
(<a
href="https://github-redirect.dependabot.com/psf/black/issues/3370">#3370</a>)
(22.12.0)</li>
<li><code>--skip-string-normalization</code> / <code>-S</code> now
prevents docstring prefixes from being
normalized as expected (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3168">#3168</a>)
(since 22.8.0)</li>
<li>When using <code>--skip-magic-trailing-comma</code> or
<code>-C</code>, trailing commas are stripped from
subscript expressions with more than 1 element (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3209">#3209</a>)
(22.8.0)</li>
<li>Implicitly concatenated strings inside a list, set, or tuple are now
wrapped inside
parentheses (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3162">#3162</a>)
(22.8.0)</li>
<li>Fix a string merging/split issue when a comment is present in the
middle of
implicitly concatenated strings on its own line (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3227">#3227</a>)
(22.8.0)</li>
<li>Docstring quotes are no longer moved if it would violate the line
length limit
(<a
href="https://github-redirect.dependabot.com/psf/black/issues/3044">#3044</a>,
<a
href="https://github-redirect.dependabot.com/psf/black/issues/3430">#3430</a>)
(22.6.0)</li>
<li>Parentheses around return annotations are now managed (<a
href="https://github-redirect.dependabot.com/psf/black/issues/2990">#2990</a>)
(22.6.0)</li>
<li>Remove unnecessary parentheses around awaited objects (<a
href="https://github-redirect.dependabot.com/psf/black/issues/2991">#2991</a>)
(22.6.0)</li>
<li>Remove unnecessary parentheses in <code>with</code> statements (<a
href="https://github-redirect.dependabot.com/psf/black/issues/2926">#2926</a>)
(22.6.0)</li>
<li>Remove trailing newlines after code block open (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3035">#3035</a>)
(22.6.0)</li>
<li>Code cell separators <code>#%%</code> are now standardised to
<code># %%</code> (<a
href="https://github-redirect.dependabot.com/psf/black/issues/2919">#2919</a>)
(22.3.0)</li>
<li>Remove unnecessary parentheses from <code>except</code> statements
(<a
href="https://github-redirect.dependabot.com/psf/black/issues/2939">#2939</a>)
(22.3.0)</li>
<li>Remove unnecessary parentheses from tuple unpacking in
<code>for</code> loops (<a
href="https://github-redirect.dependabot.com/psf/black/issues/2945">#2945</a>)
(22.3.0)</li>
<li>Avoid magic-trailing-comma in single-element subscripts (<a
href="https://github-redirect.dependabot.com/psf/black/issues/2942">#2942</a>)
(22.3.0)</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b0d1fba7ac"><code>b0d1fba</code></a>
Prepare release 23.1.0 (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3536">#3536</a>)</li>
<li><a
href="69ca0a4c7a"><code>69ca0a4</code></a>
Infer target version based on project metadata (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3219">#3219</a>)</li>
<li><a
href="c4bd2e31ce"><code>c4bd2e3</code></a>
Draft for Black 2023 stable style (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3418">#3418</a>)</li>
<li><a
href="226cbf0226"><code>226cbf0</code></a>
Fix unsafe cast in linegen.py w/ await yield handling (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3533">#3533</a>)</li>
<li><a
href="f4ebc68320"><code>f4ebc68</code></a>
Upgrade isort (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3534">#3534</a>)</li>
<li><a
href="6407ebb870"><code>6407ebb</code></a>
Remove Python version in the_basics.md (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3528">#3528</a>)</li>
<li><a
href="196b1f349e"><code>196b1f3</code></a>
Fix <code>black --help</code> output for
<code>--python-cell-magics</code> option to be reproducibl...</li>
<li><a
href="d950f15987"><code>d950f15</code></a>
Update document now that paren wrapping CMs on Python 3.9+ is
implemented (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3">#3</a>...</li>
<li><a
href="a36878eb2f"><code>a36878e</code></a>
Fix an invalid quote escaping bug in f-string expressions (<a
href="https://github-redirect.dependabot.com/psf/black/issues/3509">#3509</a>)</li>
<li><a
href="eabff673b3"><code>eabff67</code></a>
Format hex code in unicode escape sequences in string literals (<a
href="https://github-redirect.dependabot.com/psf/black/issues/2916">#2916</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/psf/black/compare/22.10.0...23.1.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-12 11:04:01 -07:00
dependabot[bot]
9cad98683a chore(deps-dev): Bump @types/node from 18.11.18 to 18.11.19 in /node (#251)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 18.11.18 to 18.11.19.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=18.11.18&new-version=18.11.19)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-12 11:03:42 -07:00
dependabot[bot]
a7386b1939 chore(deps-dev): Bump typescript from 4.9.4 to 4.9.5 in /node (#252)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.9.4
to 4.9.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Microsoft/TypeScript/releases">typescript's
releases</a>.</em></p>
<blockquote>
<h2>TypeScript 4.9.5</h2>
<p>For release notes, check out the <a
href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-9/">release
announcement</a>.</p>
<p>Downloads are available on:</p>
<ul>
<li><a href="https://www.npmjs.com/package/typescript">npm</a></li>
<li><a
href="https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild">NuGet
package</a></li>
</ul>
<h2>Changes:</h2>
<ul>
<li>69e88ef5513a81acf69ec78f4af1f927da0d0584 Port ignore deprecations to
4.9 (<a
href="https://github-redirect.dependabot.com/Microsoft/TypeScript/issues/52419">#52419</a>)</li>
<li>daf4e817a18def96b70ac34703b158ff0e6d58df Port timestamp fix to 4.9
(<a
href="https://github-redirect.dependabot.com/Microsoft/TypeScript/issues/52426">#52426</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ccf3d3c5f9"><code>ccf3d3c</code></a>
Bump version to '4.9.5' and LKG.</li>
<li><a
href="69e88ef551"><code>69e88ef</code></a>
Port ignore deprecations to 4.9 (<a
href="https://github-redirect.dependabot.com/Microsoft/TypeScript/issues/52419">#52419</a>)</li>
<li><a
href="daf4e817a1"><code>daf4e81</code></a>
Port timestamp fix to 4.9 (<a
href="https://github-redirect.dependabot.com/Microsoft/TypeScript/issues/52426">#52426</a>)</li>
<li>See full diff in <a
href="https://github.com/Microsoft/TypeScript/compare/v4.9.4...v4.9.5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typescript&package-manager=npm_and_yarn&previous-version=4.9.4&new-version=4.9.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-12 11:03:22 -07:00
zach
a44124bdb0 feat: add ability to set host function namespace (#246)
- Adds `extism_function_set_namespace` to SDK
- Updates SDKs with host function support to allow setting the namespace
for a function
2023-02-01 11:04:15 -08:00
zach
226155b959 chore: update toml to 0.7 (#245) 2023-01-31 09:38:23 -08:00
Brett Cannon
1fad76148b Make the Python example more idiomatic (#242) 2023-01-30 09:49:42 -08:00
zach
bacb44bcc5 feat: add helper functions for working with input/output of host functions as bytes (#240) 2023-01-27 11:16:14 -08:00
zach
93c65bb4b4 fix(go): allow for host functions with no arguments or return values (#241) 2023-01-25 15:34:02 -08:00
Benjamin Eckel
beb83c697c test(browser): Comment out test so we stop failure (#238)
Can't quite figure out what is going on. Jest cannot resolves our code
fine but can't seem to resolve the NPM module:

```
 FAIL  src/index.test.ts
  ● Test suite failed to run

    Cannot find module '@bjorn3/browser_wasi_shim' from 'src/plugin.ts'

    Require stack:
      src/plugin.ts
      src/context.ts
      src/index.ts
      src/index.test.ts

      2 | import { PluginConfig } from './manifest';
      3 | //@ts-ignore TODO add types to this library
    > 4 | import { WASI, File } from "@bjorn3/browser_wasi_shim";
        | ^
      5 |
      6 | export default class ExtismPlugin {
      7 |   moduleData: ArrayBuffer;

      at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:425:11)
      at Object.<anonymous> (src/plugin.ts:4:1)
      at Object.<anonymous> (src/context.ts:2:1)
      at Object.<anonymous> (src/index.ts:1:1)
      at Object.<anonymous> (src/index.test.ts:1:1)

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        0.916 s
Ran all test suites.
```


For now let's comment it out since it's not providing value anyway.
2023-01-23 14:25:14 -06:00
zach
69d450e8a2 cleanup: fix opam files according to changes published to opam (#237)
A few changes to the opam files based on the review from
https://github.com/ocaml/opam-repository/pull/23018
2023-01-23 11:42:47 -08:00
Benjamin Eckel
8b81198486 chore: Make memory traces clearer (#236)
If you look at the memory traces it's not really clear what the values
are:

```
extism_runtime::memory TRACE 2023-01-23T10:05:16.918413-06:00 - store_u64: 656c626169726176 at offset 25
extism_runtime::memory TRACE 2023-01-23T10:05:16.918418-06:00 - store_u8: 20 at offset 33
extism_runtime::memory TRACE 2023-01-23T10:05:16.918423-06:00 - store_u8: 76 at offset 34
extism_runtime::memory TRACE 2023-01-23T10:05:16.918428-06:00 - store_u8: 61 at offset 35
extism_runtime::memory TRACE 2023-01-23T10:05:16.918433-06:00 - store_u8: 6c at offset 36
extism_runtime::memory TRACE 2023-01-23T10:05:16.918438-06:00 - store_u8: 75 at offset 37
extism_runtime::memory TRACE 2023-01-23T10:05:16.918443-06:00 - store_u8: 65 at offset 38
```

It's hard to tell that the value is hex and the offset is base10. This
changes u8 values to the form `0x00` where there is always 2 digits and
it will always use 16 digits for u64.
2023-01-23 11:10:47 -06:00
dependabot[bot]
c2830b03b5 chore(deps): Bump rustler from 0.26.0 to 0.27.0 in /elixir (#235)
Bumps [rustler](https://github.com/rusterlium/rustler) from 0.26.0 to
0.27.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rusterlium/rustler/blob/master/CHANGELOG.md">rustler's
changelog</a>.</em></p>
<blockquote>
<h2>[0.27.0] - 2023-01-17</h2>
<h3>BREAKING</h3>
<ul>
<li><code>MIX_ENV</code> is no longer considered for determining the
build profile. Now, the
profile defaults to <code>:release</code>. Use the <code>:mode</code>
option to pick another
profile explicitly. (<a
href="https://github-redirect.dependabot.com/rusterlium/rustler/issues/496">#496</a>)</li>
</ul>
<h3>Added</h3>
<ul>
<li><code>ResourceArc::make_binary</code> for safe use of
<code>enif_make_resource_binary</code> (<a
href="https://github-redirect.dependabot.com/rusterlium/rustler/issues/487">#487</a>)</li>
<li><code>OwnedBinary</code> is now <code>Sync</code> (<a
href="https://github-redirect.dependabot.com/rusterlium/rustler/issues/493">#493</a>)</li>
<li>Specified MSRV to be 1.56.1.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Documentation for <code>load</code> (<a
href="https://github-redirect.dependabot.com/rusterlium/rustler/issues/501">#501</a>,
thanks <a
href="https://github.com/ishitatsuyuki"><code>@​ishitatsuyuki</code></a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Edition 2021 for the rustler mix template (<a
href="https://github-redirect.dependabot.com/rusterlium/rustler/issues/512">#512</a>,
thanks <a
href="https://github.com/ayrat555"><code>@​ayrat555</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="80f6c4b926"><code>80f6c4b</code></a>
(release) 0.27.0</li>
<li><a
href="ca9a798ffe"><code>ca9a798</code></a>
Prepare release v0.27.0</li>
<li><a
href="1e03377cde"><code>1e03377</code></a>
Fix target for rustler_compile_test</li>
<li><a
href="baec31bfb0"><code>baec31b</code></a>
Merge pull request <a
href="https://github-redirect.dependabot.com/rusterlium/rustler/issues/512">#512</a>
from ayrat-forks/ayrat555/update-edition</li>
<li><a
href="57cc69e8c0"><code>57cc69e</code></a>
update rust edition</li>
<li><a
href="a34038fb11"><code>a34038f</code></a>
Merge pull request <a
href="https://github-redirect.dependabot.com/rusterlium/rustler/issues/510">#510</a>
from evnu/clippy-define-MSRV-and-fix-lints</li>
<li><a
href="7b728f1652"><code>7b728f1</code></a>
clippy: needless_borrow</li>
<li><a
href="aa045a7b28"><code>aa045a7</code></a>
clippy: unnecessary_cast</li>
<li><a
href="662d4a31bc"><code>662d4a3</code></a>
Define MSRV</li>
<li><a
href="3a7aa47af9"><code>3a7aa47</code></a>
Merge pull request <a
href="https://github-redirect.dependabot.com/rusterlium/rustler/issues/502">#502</a>
from evnu/fix-ci</li>
<li>Additional commits viewable in <a
href="https://github.com/rusterlium/rustler/compare/rustler-0.26.0...rustler-0.27.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rustler&package-manager=hex&previous-version=0.26.0&new-version=0.27.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-23 10:47:14 -06:00
dependabot[bot]
43fcf4266a chore(deps): Update rustler requirement from 0.26.0 to 0.27.0 (#232)
Updates the requirements on
[rustler](https://github.com/rusterlium/rustler) to permit the latest
version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rusterlium/rustler/blob/master/CHANGELOG.md">rustler's
changelog</a>.</em></p>
<blockquote>
<h2>[0.27.0] - 2023-01-17</h2>
<h3>BREAKING</h3>
<ul>
<li><code>MIX_ENV</code> is no longer considered for determining the
build profile. Now, the
profile defaults to <code>:release</code>. Use the <code>:mode</code>
option to pick another
profile explicitly. (<a
href="https://github-redirect.dependabot.com/rusterlium/rustler/issues/496">#496</a>)</li>
</ul>
<h3>Added</h3>
<ul>
<li><code>ResourceArc::make_binary</code> for safe use of
<code>enif_make_resource_binary</code> (<a
href="https://github-redirect.dependabot.com/rusterlium/rustler/issues/487">#487</a>)</li>
<li><code>OwnedBinary</code> is now <code>Sync</code> (<a
href="https://github-redirect.dependabot.com/rusterlium/rustler/issues/493">#493</a>)</li>
<li>Specified MSRV to be 1.56.1.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Documentation for <code>load</code> (<a
href="https://github-redirect.dependabot.com/rusterlium/rustler/issues/501">#501</a>,
thanks <a
href="https://github.com/ishitatsuyuki"><code>@​ishitatsuyuki</code></a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Edition 2021 for the rustler mix template (<a
href="https://github-redirect.dependabot.com/rusterlium/rustler/issues/512">#512</a>,
thanks <a
href="https://github.com/ayrat555"><code>@​ayrat555</code></a>)</li>
</ul>
<h2>[0.26.0] - 2022-09-02</h2>
<h3>Highlight</h3>
<h4>TaggedEnum</h4>
<p>We added <code>TaggedEnum</code>, which is a generalized enum type
(<a
href="https://github-redirect.dependabot.com/rusterlium/rustler/issues/440">#440</a>,
thanks to <a
href="https://github.com/SeokminHong"><code>@​SeokminHong</code></a>!).
Example:</p>
<pre lang="rust"><code>#[derive(NifTaggedEnum)]
pub enum TaggedEnum1 {
    Named { x: i32, y: i32 },
    String1(String),
    String2(String),
    Untagged,
}
</code></pre>
<p>On the Elixir side, the variants are represented as two-tuples
<code>{tag::atom(), inner::term()} | atom()</code>, where the
<code>inner</code> term is</p>
<ul>
<li>a map for the variant <code>Named</code> in the example above</li>
<li>a binary for the <code>String1</code> and <code>String2</code>
variants</li>
</ul>
<p>The <code>Untagged</code> variant is represented as the atom
<code>:untagged</code> in Elixir.</p>
<h3>Added</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="80f6c4b926"><code>80f6c4b</code></a>
(release) 0.27.0</li>
<li><a
href="ca9a798ffe"><code>ca9a798</code></a>
Prepare release v0.27.0</li>
<li><a
href="1e03377cde"><code>1e03377</code></a>
Fix target for rustler_compile_test</li>
<li><a
href="baec31bfb0"><code>baec31b</code></a>
Merge pull request <a
href="https://github-redirect.dependabot.com/rusterlium/rustler/issues/512">#512</a>
from ayrat-forks/ayrat555/update-edition</li>
<li><a
href="57cc69e8c0"><code>57cc69e</code></a>
update rust edition</li>
<li><a
href="a34038fb11"><code>a34038f</code></a>
Merge pull request <a
href="https://github-redirect.dependabot.com/rusterlium/rustler/issues/510">#510</a>
from evnu/clippy-define-MSRV-and-fix-lints</li>
<li><a
href="7b728f1652"><code>7b728f1</code></a>
clippy: needless_borrow</li>
<li><a
href="aa045a7b28"><code>aa045a7</code></a>
clippy: unnecessary_cast</li>
<li><a
href="662d4a31bc"><code>662d4a3</code></a>
Define MSRV</li>
<li><a
href="3a7aa47af9"><code>3a7aa47</code></a>
Merge pull request <a
href="https://github-redirect.dependabot.com/rusterlium/rustler/issues/502">#502</a>
from evnu/fix-ci</li>
<li>Additional commits viewable in <a
href="https://github.com/rusterlium/rustler/compare/rustler-0.26.0...rustler-0.27.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-23 10:47:00 -06:00
dependabot[bot]
0221d8e4a2 chore(deps-dev): Bump @types/jest from 29.2.5 to 29.2.6 in /node (#230)
Bumps
[@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest)
from 29.2.5 to 29.2.6.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jest&package-manager=npm_and_yarn&previous-version=29.2.5&new-version=29.2.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-23 10:46:51 -06:00
Benjamin Eckel
222401b3db docs(java-sdk): fix source code link (#228) 2023-01-22 09:33:41 -06:00
Benjamin Eckel
f6e55413d8 docs: Update README to reflect quality but instability (#226) 2023-01-20 10:05:16 -06:00
Benjamin Eckel
490dec4f14 fix(elixir-sdk): Release 0.2.0 is broken due to this local path dep (#224)
5c9aa4c90a

This should work but it doesn't. Error message when including extism
0.2.0 locally:

```
Compiling 4 files (.ex)
error: failed to get `extism` as a dependency of package `extism_nif v0.1.0 (/private/tmp/extism_test/deps/extism/native/extism_nif)`

Caused by:
  failed to load source for dependency `extism`

Caused by:
  Unable to update /private/tmp/extism_test/deps/rust

Caused by:
  failed to read `/private/tmp/extism_test/deps/rust/Cargo.toml`

Caused by:
  No such file or directory (os error 2)

== Compilation error in file lib/extism/native.ex ==
** (RuntimeError) calling `cargo metadata` failed.

    (rustler 0.26.0) lib/rustler/compiler/config.ex:87: Rustler.Compiler.Config.metadata!/1
    (rustler 0.26.0) lib/rustler/compiler/config.ex:69: Rustler.Compiler.Config.build/1
    (rustler 0.26.0) lib/rustler/compiler.ex:9: Rustler.Compiler.compile_crate/2
    lib/extism/native.ex:6: (module)
could not compile dependency :extism, "mix compile" failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile extism", update it with "mix deps.update extism" or clean it with "mix deps.clean extism"
```
2023-01-19 13:11:22 -06:00
zach
8fdc0beb31 chore(haskell): fix bounds for extism-manifest 2023-01-19 11:01:40 -08:00
zach
93ffec53d1 chore: bump version for haskell extism-manifest package (#223) 2023-01-19 10:55:05 -08:00
Benjamin Eckel
be3f324641 fix: Haskell release workflow had wrong display name 2023-01-19 12:45:42 -06:00
Benjamin Eckel
f5537e4bcb fix: ignore javadoc warnings in release for now 2023-01-19 12:08:07 -06:00
Benjamin Eckel
e1c04b42f9 release: missed the bump on dotnet SDK 2023-01-19 11:26:57 -06:00
Benjamin Eckel
c94c221854 release: v0.2.0 (#209)
Let's get the last changes in this week for a release. Will hold this PR
until all changes we want are in.

Release checklist:
- [x] test: updates across CI to test for Host Function output /
integration (#219)
- this should probably look something like a grep for some kind of
output proving guest/host interop?
- [x] Fix for userData pointer issue in Go host functions (#220) 
- [x] docs: Host Functions in SDKs
  - [ ] sdk: C 
  - [ ] sdk: C++ 
  - [ ] sdk: Python
  - [ ] sdk: Node
  - [ ] sdk: Go
  - [ ] sdk: Rust 
- [x] docs: Manifest property names (http `headers` & memory
`max_pages`)
- [ ] blog: announcing v0.2.0, including host functions, Zig SDK/PDK,
Java SDK, .NET SDK, + ...
2023-01-19 10:56:00 -06:00
zach
aa04fd3e5c test: add more host function tests, cleanup tests to use wasm/code.wasm when possible (#219) 2023-01-19 10:09:16 -06:00
Benjamin Eckel
d73468a3ac ci(java-sdk): Test on multiple JREs (#221) 2023-01-18 10:43:59 -06:00
Etienne ANNE
ac7e1aeba3 Support jdk11 (#208)
Hi,

We want to use Extism on our project
[Otoroshi](https://github.com/MAIF/otoroshi) but we need to run it on
jdk11

This pull request makes everything run smoothly on jdk11

If you have any suggestion about this pull request, i'm open to it

Thanks for your time
2023-01-18 09:48:36 -06:00
zach
668ef5c3c0 fix: use cgo.Handle to protect Go pointers being passed to C callbacks (#220)
See
https://discord.com/channels/1011124058408112148/1050087851443888138/1064977577837592739
2023-01-17 15:38:16 -08:00
dependabot[bot]
0170e79f90 chore(deps-dev): Bump ts-jest from 29.0.3 to 29.0.5 in /node (#215)
Bumps [ts-jest](https://github.com/kulshekhar/ts-jest) from 29.0.3 to
29.0.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/kulshekhar/ts-jest/releases">ts-jest's
releases</a>.</em></p>
<blockquote>
<h2>v29.0.5</h2>
<p>Please refer to <a
href="https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v29.0.4</h2>
<p>Please refer to <a
href="https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md">ts-jest's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/kulshekhar/ts-jest/compare/v29.0.4...v29.0.5">29.0.5</a>
(2023-01-13)</h2>
<h3>Reverts</h3>
<ul>
<li>Revert &quot;fix(transformer): don't use cache when
<code>tsJestConfig</code> is different (<a
href="https://github-redirect.dependabot.com/kulshekhar/ts-jest/issues/3966">#3966</a>)&quot;
(<a
href="185eb189d7">185eb18</a>),
closes <a
href="https://github-redirect.dependabot.com/kulshekhar/ts-jest/issues/3966">#3966</a></li>
</ul>
<h2><a
href="https://github.com/kulshekhar/ts-jest/compare/v29.0.3...v29.0.4">29.0.4</a>
(2023-01-10)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>transformer:</strong> don't use cache when
<code>tsJestConfig</code> is different (<a
href="https://github-redirect.dependabot.com/kulshekhar/ts-jest/issues/3966">#3966</a>)
(<a
href="a445638ca6">a445638</a>)</li>
<li>bump <code>json5</code> to <code>2.2.3</code> (<a
href="https://github-redirect.dependabot.com/kulshekhar/ts-jest/pull/3976">#3976</a>)(<a
href="b9f7809948">b9f7809</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="22b890e890"><code>22b890e</code></a>
chore(release): 29.0.5 (<a
href="https://github-redirect.dependabot.com/kulshekhar/ts-jest/issues/3985">#3985</a>)</li>
<li><a
href="4e0623ba71"><code>4e0623b</code></a>
Merge pull request <a
href="https://github-redirect.dependabot.com/kulshekhar/ts-jest/issues/3981">#3981</a>
from ahnpnl/fix/revert-3966</li>
<li><a
href="3e49bd7563"><code>3e49bd7</code></a>
build(deps): Update dependency <code>@​commitlint/config-angular</code>
to ^17.4.2 (<a
href="https://github-redirect.dependabot.com/kulshekhar/ts-jest/issues/3982">#3982</a>)</li>
<li><a
href="32e384f87e"><code>32e384f</code></a>
build(deps): Update dependency esbuild to ~0.16.17 (<a
href="https://github-redirect.dependabot.com/kulshekhar/ts-jest/issues/3978">#3978</a>)</li>
<li><a
href="185eb189d7"><code>185eb18</code></a>
Revert &quot;fix(transformer): don't use cache when
<code>tsJestConfig</code> is different (#...</li>
<li><a
href="13cccbec02"><code>13cccbe</code></a>
chore(release): 29.0.4 (<a
href="https://github-redirect.dependabot.com/kulshekhar/ts-jest/issues/3977">#3977</a>)</li>
<li><a
href="d30d389f74"><code>d30d389</code></a>
Merge remote-tracking branch 'upstream/main'</li>
<li><a
href="b9f7809948"><code>b9f7809</code></a>
build(deps): updated json5 dependency (<a
href="https://github-redirect.dependabot.com/kulshekhar/ts-jest/issues/3976">#3976</a>)</li>
<li><a
href="5d5730e1a6"><code>5d5730e</code></a>
Merge remote-tracking branch 'upstream/main'</li>
<li><a
href="7fbee99ee8"><code>7fbee99</code></a>
build(deps): Update <a
href="https://github.com/types"><code>@​types</code></a> packages to
^5.48.1 (<a
href="https://github-redirect.dependabot.com/kulshekhar/ts-jest/issues/3973">#3973</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/kulshekhar/ts-jest/compare/v29.0.3...v29.0.5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ts-jest&package-manager=npm_and_yarn&previous-version=29.0.3&new-version=29.0.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-16 09:52:40 -06:00
dependabot[bot]
a550c1b4fe chore(deps-dev): Bump typedoc from 0.23.22 to 0.23.24 in /node (#216)
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.23.22 to
0.23.24.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/TypeDoc/releases">typedoc's
releases</a>.</em></p>
<blockquote>
<h2>v0.23.24</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Fixed an issue where signature comments were preferred over property
comments for indirectly created function-properties, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2135">#2135</a>.</li>
<li>Fixed symlink handling when expanding entry points, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2130">#2130</a>.</li>
</ul>
<h3>Thanks!</h3>
<ul>
<li><a
href="https://github.com/boneskull"><code>@​boneskull</code></a></li>
</ul>
<h2>v0.23.23</h2>
<h3>Features</h3>
<ul>
<li>Added <code>ts.Signature</code> to emitted
<code>EVENT_CREATE_SIGNATURE</code> event, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2002">#2002</a>.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Links to members hidden by filter settings now temporarily override
the filter, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2092">#2092</a>.</li>
<li>If <code>src/</code> and <code>src/x</code> are specified as entry
points, <code>src/</code> will no longer be ignored, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2121">#2121</a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md">typedoc's
changelog</a>.</em></p>
<blockquote>
<h2>v0.23.24 (2023-01-07)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Fixed an issue where signature comments were preferred over property
comments for indirectly created function-properties, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2135">#2135</a>.</li>
<li>Fixed symlink handling when expanding entry points, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2130">#2130</a>.</li>
</ul>
<h3>Thanks!</h3>
<ul>
<li><a
href="https://github.com/boneskull"><code>@​boneskull</code></a></li>
</ul>
<h2>v0.23.23 (2022-12-18)</h2>
<h3>Features</h3>
<ul>
<li>Added <code>ts.Signature</code> to emitted
<code>EVENT_CREATE_SIGNATURE</code> event, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2002">#2002</a>.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Links to members hidden by filter settings now temporarily override
the filter, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2092">#2092</a>.</li>
<li>If <code>src/</code> and <code>src/x</code> are specified as entry
points, <code>src/</code> will no longer be ignored, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2121">#2121</a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0340ef4553"><code>0340ef4</code></a>
Update changelog for release</li>
<li><a
href="05e65f2bfe"><code>05e65f2</code></a>
Bump version to 0.23.24</li>
<li><a
href="0cb16a8b8c"><code>0cb16a8</code></a>
Shiki :/</li>
<li><a
href="7cf8b3cfd9"><code>7cf8b3c</code></a>
Upgrade deps</li>
<li><a
href="cc93e0996d"><code>cc93e09</code></a>
Update changelog</li>
<li><a
href="26480e7c19"><code>26480e7</code></a>
Merge pull request <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2134">#2134</a>
from boneskull/boneskull/issue2130</li>
<li><a
href="6c1b4ac811"><code>6c1b4ac</code></a>
fix(test): glob root match test matches against platform-normalized
path</li>
<li><a
href="fd7a896be5"><code>fd7a896</code></a>
fix: allow traversal of symlinks in glob</li>
<li><a
href="81ccecfa4f"><code>81ccecf</code></a>
Fix <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2135">#2135</a></li>
<li><a
href="2d60647225"><code>2d60647</code></a>
Merge pull request <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2133">#2133</a>
from boneskull/boneskull/tooltweak</li>
<li>Additional commits viewable in <a
href="https://github.com/TypeStrong/TypeDoc/compare/v0.23.22...v0.23.24">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typedoc&package-manager=npm_and_yarn&previous-version=0.23.22&new-version=0.23.24)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-16 09:52:31 -06:00
dependabot[bot]
c502e62510 chore(deps-dev): Bump prettier from 2.8.2 to 2.8.3 in /node (#217)
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.2 to
2.8.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/releases">prettier's
releases</a>.</em></p>
<blockquote>
<h2>2.8.3</h2>
<p>Support Angular 15.1</p>
<p>🔗 <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md#283">Changelog</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md">prettier's
changelog</a>.</em></p>
<blockquote>
<h1>2.8.3</h1>
<p><a
href="https://github.com/prettier/prettier/compare/2.8.2...2.8.3">diff</a></p>
<h4>Allow self-closing tags on custom elements (<a
href="https://github-redirect.dependabot.com/prettier/prettier/pull/14170">#14170</a>
by <a href="https://github.com/fisker"><code>@​fisker</code></a>)</h4>
<p>See <a
href="https://github.com/angular/angular/releases/tag/15.1.0">Angular
v15.1.0 release note</a> for details.</p>
<!-- raw HTML omitted -->
<pre lang="html"><code>// Input
&lt;app-test/&gt;
<p>// Prettier 2.8.2
SyntaxError: Only void and foreign elements can be self closed
&quot;app-test&quot; (1:1)
&gt; 1 | &lt;app-test/&gt;
| ^^^^^^^^^
2 |</p>
<p>// Prettier 2.8.3
&lt;app-test /&gt;
</code></pre></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c990e522ce"><code>c990e52</code></a>
Release 2.8.3</li>
<li><a
href="4ad9160891"><code>4ad9160</code></a>
Angular: allow self-closing tags on custom elements (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/14170">#14170</a>)</li>
<li><a
href="06ea1ac0d0"><code>06ea1ac</code></a>
Stricter node type check (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/14165">#14165</a>)</li>
<li><a
href="c1b976572c"><code>c1b9765</code></a>
feat: add copy to clipboard in code blocks (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/14153">#14153</a>)</li>
<li><a
href="3ef82ae06b"><code>3ef82ae</code></a>
Remove and ignore <code>.node-version</code> file (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/14143">#14143</a>)</li>
<li><a
href="a37ce0b8f6"><code>a37ce0b</code></a>
Clean <code>changelog_unreleased</code> (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/14144">#14144</a>)</li>
<li><a
href="4cf4c2c563"><code>4cf4c2c</code></a>
Fix typo in CHANGELOG (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/14137">#14137</a>)</li>
<li><a
href="26b45e361f"><code>26b45e3</code></a>
Git blame ignore 2.8.2</li>
<li><a
href="b9c3cd4c70"><code>b9c3cd4</code></a>
Bump Prettier dependency to 2.8.2</li>
<li><a
href="dc187f1936"><code>dc187f1</code></a>
Update dependents count</li>
<li>See full diff in <a
href="https://github.com/prettier/prettier/compare/2.8.2...2.8.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=prettier&package-manager=npm_and_yarn&previous-version=2.8.2&new-version=2.8.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-16 09:52:22 -06:00
zach
6774b30de0 fix: remove quotes from makefile (#218) 2023-01-15 19:56:57 -08:00
zach
834d551990 cleanup: remove unused info macro 2023-01-15 19:47:51 -08:00
zach
a1f36c58d2 cleanup: use debug logging instead of info in runtime, fix C example (#214) 2023-01-15 17:16:29 -08:00
zach
081c825cd8 cleanup: minor OCaml/Haskell API updates (#213) 2023-01-13 12:05:12 -08:00
zach
dc3d54e260 feat: Add C API for host functions + support for C++, Python, Go, Node, OCaml (#195)
- New types:
  - `ExtismValType` - Enum of WebAssembly types
  - `ExtismValUnion` - A union of the possible WebAssembly types
  - `ExtismVal` - A struct with `ExtismValType` and `ExtismValUnion`
  - `ExtismFunction` - The host function wrapper type
  - `ExtismFunctionType` - The type of the host function callback
- `ExtismCurrentPlugin` - Provides access to the currently running
plugin from inside a host function

- New functions:
  - `extism_function_new` - Create a new `ExtismFunction`
  - `extism_function_free` - Free an `ExtismFunction`
- `extism_current_plugin_memory`, `extism_current_plugin_memory_alloc`,
`extism_current_plugin_memory_free`,
`extism_current_plugin_memory_length` - Manage plugin memory from inside
a host functions

- Updated functions
- `extism_plugin_new` and `extsim_plugin_update` - now accept two extra
parameters for `ExtismFunction*` array and length of that array

## Notes

- Host functions take a user-data argument, which is owned by the
resulting `ExtismFunction` and will be cleaned up when
`extism_function_free` is called (if a cleanup function was passed in
with the user data)
- Host functions in every SDK require working with `ExtismVal` arguments
directly, this is pretty low-level for what is kind of a high-level
feature. We could work on adding some types to the SDKs that make
working with pointers to plugin data more accessible, maybe something
similar to how the Rust PDK handes input/output data.
- In each language the host functions more-or-less share a signature:
`(CurrentPlugin plugin, Val inputs[], Val outputs[], userData)`
- C, C++, OCaml and Go take a single userData argument but Python and
Node take a "rest" argument which allows passing any number of user-data
values
- Go requires the host function to be exported:
f9eb5ed839/go/main.go (L13-L26)
- Zig and Ruby should be relatively simple to add host functions to next
but I haven't really looked into Elixir, .NET or Java yet.
- Also closes #20
2023-01-10 12:04:40 -08:00
zach
cfb1317261 chore: use new base64 API, cleanup clippy warnings (#211)
Closes #210
2023-01-10 09:38:58 -08:00
dependabot[bot]
9f0e2413e3 chore(deps): Update base64 requirement from 0.20.0-alpha to 0.21.0 (#204)
Updates the requirements on
[base64](https://github.com/marshallpierce/rust-base64) to permit the
latest version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md">base64's
changelog</a>.</em></p>
<blockquote>
<h1>0.21.0</h1>
<p>(not yet released)</p>
<h2>Migration</h2>
<h3>Functions</h3>
<table>
<thead>
<tr>
<th>&lt; 0.20 function</th>
<th>0.21 equivalent</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>encode()</code></td>
<td><code>engine::general_purpose::STANDARD.encode()</code> or
<code>prelude::BASE64_STANDARD.encode()</code></td>
</tr>
<tr>
<td><code>encode_config()</code></td>
<td><code>engine.encode()</code></td>
</tr>
<tr>
<td><code>encode_config_buf()</code></td>
<td><code>engine.encode_string()</code></td>
</tr>
<tr>
<td><code>encode_config_slice()</code></td>
<td><code>engine.encode_slice()</code></td>
</tr>
<tr>
<td><code>decode()</code></td>
<td><code>engine::general_purpose::STANDARD.decode()</code> or
<code>prelude::BASE64_STANDARD.decode()</code></td>
</tr>
<tr>
<td><code>decode_config()</code></td>
<td><code>engine.decode()</code></td>
</tr>
<tr>
<td><code>decode_config_buf()</code></td>
<td><code>engine.decode_vec()</code></td>
</tr>
<tr>
<td><code>decode_config_slice()</code></td>
<td><code>engine.decode_slice()</code></td>
</tr>
</tbody>
</table>
<p>The short-lived 0.20 functions were the 0.13 functions with
<code>config</code> replaced with <code>engine</code>.</p>
<h3>Padding</h3>
<p>If applicable, use the preset engines <code>engine::STANDARD</code>,
<code>engine::STANDARD_NO_PAD</code>, <code>engine::URL_SAFE</code>,
or <code>engine::URL_SAFE_NO_PAD</code>.
The <code>NO_PAD</code> ones require that padding is absent when
decoding, and the others require that
canonical padding is present .</p>
<p>If you need the &lt; 0.20 behavior that did not care about padding,
or want to recreate &lt; 0.20.0's predefined <code>Config</code>s
precisely, see the following table.</p>
<table>
<thead>
<tr>
<th>0.13.1 Config</th>
<th>0.20.0+ alphabet</th>
<th><code>encode_padding</code></th>
<th><code>decode_padding_mode</code></th>
</tr>
</thead>
<tbody>
<tr>
<td>STANDARD</td>
<td>STANDARD</td>
<td>true</td>
<td>Indifferent</td>
</tr>
<tr>
<td>STANDARD_NO_PAD</td>
<td>STANDARD</td>
<td>false</td>
<td>Indifferent</td>
</tr>
<tr>
<td>URL_SAFE</td>
<td>URL_SAFE</td>
<td>true</td>
<td>Indifferent</td>
</tr>
<tr>
<td>URL_SAFE_NO_PAD</td>
<td>URL_SAFE</td>
<td>false</td>
<td>Indifferent</td>
</tr>
</tbody>
</table>
<h1>0.21.0-rc.1</h1>
<ul>
<li>Restore the ability to decode into a slice of precisely the correct
length with <code>Engine.decode_slice_unchecked</code>.</li>
<li>Add <code>Engine</code> as a <code>pub use</code> in
<code>prelude</code>.</li>
</ul>
<h1>0.21.0-beta.2</h1>
<h2>Breaking changes</h2>
<ul>
<li>Re-exports of preconfigured engines in <code>engine</code> are
removed in favor of <code>base64::prelude::...</code> that are better
suited to those who wish to <code>use</code> the entire path to a
name.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d7fb31c4ad"><code>d7fb31c</code></a>
v0.21.0</li>
<li><a
href="83503761e9"><code>8350376</code></a>
Merge pull request <a
href="https://github-redirect.dependabot.com/marshallpierce/rust-base64/issues/207">#207</a>
from marshallpierce/mp/api-rework</li>
<li><a
href="726f7841b7"><code>726f784</code></a>
v0.21.0-rc.1</li>
<li><a
href="b29ab0196d"><code>b29ab01</code></a>
Add <code>Engine</code> in <code>prelude</code></li>
<li><a
href="64bbcc02df"><code>64bbcc0</code></a>
Remove no longer needed test helpers</li>
<li><a
href="0f981bd04f"><code>0f981bd</code></a>
Add decode_slice_unchecked to restore ability to decode into a precisely
size...</li>
<li><a
href="a51e822ae9"><code>a51e822</code></a>
v0.21.0-beta.2</li>
<li><a
href="936569a658"><code>936569a</code></a>
Move re-exports from <code>engine</code> to <code>prelude</code></li>
<li><a
href="53e1091e1b"><code>53e1091</code></a>
Fix release notes typo</li>
<li><a
href="b03eb5a84d"><code>b03eb5a</code></a>
v0.21.0-beta.1</li>
<li>Additional commits viewable in <a
href="https://github.com/marshallpierce/rust-base64/compare/v0.20.0-alpha.1...v0.21.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-09 08:59:38 -06:00
dependabot[bot]
5b9e1c1ff6 chore(deps-dev): Bump prettier from 2.8.1 to 2.8.2 in /node (#205)
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.1 to
2.8.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/releases">prettier's
releases</a>.</em></p>
<blockquote>
<h2>2.8.2</h2>
<p>🔗 <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md#282">Changelog</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md">prettier's
changelog</a>.</em></p>
<blockquote>
<h1>2.8.2</h1>
<p><a
href="https://github.com/prettier/prettier/compare/2.8.1...2.8.2">diff</a></p>
<h4>Don't lowercase link references (<a
href="https://github-redirect.dependabot.com/prettier/prettier/pull/13155">#13155</a>
by <a
href="https://github.com/DerekNonGeneric"><code>@​DerekNonGeneric</code></a>
&amp; <a
href="https://github.com/fisker"><code>@​fisker</code></a>)</h4>
<!-- raw HTML omitted -->
<pre lang="markdown"><code>&lt;!-- Input --&gt;
We now don't strictly follow the release notes format suggested by [Keep
a Changelog].
<p>&lt;!-- Prettier 2.8.1 --&gt;
We now don't strictly follow the release notes format suggested by <a
href="https://example.com/">Keep a Changelog</a>.</p>
<p>&lt;!--
^^^^^^^^^^^^^^^^^^ lowercased
--&gt;</p>
<p>&lt;!-- Prettier 2.8.2 --&gt;
&lt;Same as input&gt;
</code></pre></p>
<h4>Preserve self-closing tags (<a
href="https://github-redirect.dependabot.com/prettier/prettier/pull/13691">#13691</a>
by <a
href="https://github.com/dcyriller"><code>@​dcyriller</code></a>)</h4>
<!-- raw HTML omitted -->
<pre lang="hbs"><code>{{! Input }}
&lt;div /&gt;
&lt;div&gt;&lt;/div&gt;
&lt;custom-component /&gt;
&lt;custom-component&gt;&lt;/custom-component&gt;
&lt;i /&gt;
&lt;i&gt;&lt;/i&gt;
&lt;Component /&gt;
&lt;Component&gt;&lt;/Component&gt;
<p>{{! Prettier 2.8.1 }}
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;custom-component&gt;&lt;/custom-component&gt;
&lt;custom-component&gt;&lt;/custom-component&gt;
&lt;i&gt;&lt;/i&gt;
&lt;i&gt;&lt;/i&gt;
&lt;Component /&gt;
&lt;Component /&gt;</p>
<p>{{! Prettier 2.8.2 }}
&lt;/tr&gt;&lt;/table&gt;
</code></pre></p>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ac88438d65"><code>ac88438</code></a>
Release 2.8.2</li>
<li><a
href="aaf919014f"><code>aaf9190</code></a>
Fix comments after directive (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/14081">#14081</a>)</li>
<li><a
href="9e09a78cf5"><code>9e09a78</code></a>
Stop inserting space in LESS property access (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/14103">#14103</a>)</li>
<li><a
href="0c5d4f3458"><code>0c5d4f3</code></a>
Fix removing commas from function arguments in maps (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/14089">#14089</a>)</li>
<li><a
href="b77d912c0c"><code>b77d912</code></a>
ember / glimmer: Preserve self-closing tags (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/13691">#13691</a>)</li>
<li><a
href="cf36209a27"><code>cf36209</code></a>
Handlebars: Add tests for <code>{{! prettier-ignore}}</code> (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/13693">#13693</a>)</li>
<li><a
href="f8e1ad806c"><code>f8e1ad8</code></a>
Add parens to head of <code>ExpressionStatement</code> instead of whole
statement (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/14077">#14077</a>)</li>
<li><a
href="8034bada96"><code>8034bad</code></a>
Build(deps): Bump json5 from 2.2.0 to 2.2.3 in /scripts/release (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/14104">#14104</a>)</li>
<li><a
href="31d40104f4"><code>31d4010</code></a>
Build(deps): Bump json5 from 2.2.1 to 2.2.3 in /website (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/14101">#14101</a>)</li>
<li><a
href="41cee0636e"><code>41cee06</code></a>
Do not change case of property name if inside a variable declaration in
LESS ...</li>
<li>Additional commits viewable in <a
href="https://github.com/prettier/prettier/compare/2.8.1...2.8.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=prettier&package-manager=npm_and_yarn&previous-version=2.8.1&new-version=2.8.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-09 08:59:17 -06:00
dependabot[bot]
ef8004b38d chore(deps-dev): Bump typedoc from 0.23.22 to 0.23.24 in /node (#206)
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.23.22 to
0.23.24.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/TypeDoc/releases">typedoc's
releases</a>.</em></p>
<blockquote>
<h2>v0.23.24</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Fixed an issue where signature comments were preferred over property
comments for indirectly created function-properties, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2135">#2135</a>.</li>
<li>Fixed symlink handling when expanding entry points, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2130">#2130</a>.</li>
</ul>
<h3>Thanks!</h3>
<ul>
<li><a
href="https://github.com/boneskull"><code>@​boneskull</code></a></li>
</ul>
<h2>v0.23.23</h2>
<h3>Features</h3>
<ul>
<li>Added <code>ts.Signature</code> to emitted
<code>EVENT_CREATE_SIGNATURE</code> event, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2002">#2002</a>.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Links to members hidden by filter settings now temporarily override
the filter, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2092">#2092</a>.</li>
<li>If <code>src/</code> and <code>src/x</code> are specified as entry
points, <code>src/</code> will no longer be ignored, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2121">#2121</a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md">typedoc's
changelog</a>.</em></p>
<blockquote>
<h2>v0.23.24 (2023-01-07)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Fixed an issue where signature comments were preferred over property
comments for indirectly created function-properties, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2135">#2135</a>.</li>
<li>Fixed symlink handling when expanding entry points, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2130">#2130</a>.</li>
</ul>
<h3>Thanks!</h3>
<ul>
<li><a
href="https://github.com/boneskull"><code>@​boneskull</code></a></li>
</ul>
<h2>v0.23.23 (2022-12-18)</h2>
<h3>Features</h3>
<ul>
<li>Added <code>ts.Signature</code> to emitted
<code>EVENT_CREATE_SIGNATURE</code> event, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2002">#2002</a>.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Links to members hidden by filter settings now temporarily override
the filter, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2092">#2092</a>.</li>
<li>If <code>src/</code> and <code>src/x</code> are specified as entry
points, <code>src/</code> will no longer be ignored, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2121">#2121</a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0340ef4553"><code>0340ef4</code></a>
Update changelog for release</li>
<li><a
href="05e65f2bfe"><code>05e65f2</code></a>
Bump version to 0.23.24</li>
<li><a
href="0cb16a8b8c"><code>0cb16a8</code></a>
Shiki :/</li>
<li><a
href="7cf8b3cfd9"><code>7cf8b3c</code></a>
Upgrade deps</li>
<li><a
href="cc93e0996d"><code>cc93e09</code></a>
Update changelog</li>
<li><a
href="26480e7c19"><code>26480e7</code></a>
Merge pull request <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2134">#2134</a>
from boneskull/boneskull/issue2130</li>
<li><a
href="6c1b4ac811"><code>6c1b4ac</code></a>
fix(test): glob root match test matches against platform-normalized
path</li>
<li><a
href="fd7a896be5"><code>fd7a896</code></a>
fix: allow traversal of symlinks in glob</li>
<li><a
href="81ccecfa4f"><code>81ccecf</code></a>
Fix <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2135">#2135</a></li>
<li><a
href="2d60647225"><code>2d60647</code></a>
Merge pull request <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2133">#2133</a>
from boneskull/boneskull/tooltweak</li>
<li>Additional commits viewable in <a
href="https://github.com/TypeStrong/TypeDoc/compare/v0.23.22...v0.23.24">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typedoc&package-manager=npm_and_yarn&previous-version=0.23.22&new-version=0.23.24)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-09 08:59:07 -06:00
zach
9a6b4997dc feat: add EXTISM_DEBUG env variable to enable debug info (#201) 2023-01-06 14:06:11 -08:00
Benjamin Eckel
87a403b7f3 Fix: Fixes Runtime problem with ESM module (#199)
Takes new version of the wasi shim and ensures that both CJS and ESM
distributions can be built.


Already published as 0.2.2

Co-authored-by: Steve Manuel <steve@dylib.so>
2023-01-04 18:01:48 -06:00
Benjamin Eckel
908edf2918 feat: WASI support for browser runtime (#196)
closes #160

Goal is not to expose all the WASI functionality, but to just write
minimum code to allow PDK targets that require WASI (e.g. tinygo
compiled plugins) to work in the browser. We can follow up with allowing
the user more control over the WASI environment.
2023-01-04 14:42:18 -06:00
zach
7d34595dd7 feat(zig): import extism.h directly instead of hand-written bindings (#197) 2023-01-04 10:57:08 -08:00
dependabot[bot]
e3a427b0cc chore(deps-dev): Update minitest requirement from ~> 5.16.3 to ~> 5.17.0 in /ruby (#190)
Updates the requirements on
[minitest](https://github.com/seattlerb/minitest) to permit the latest
version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/minitest/minitest/blob/master/History.rdoc">minitest's
changelog</a>.</em></p>
<blockquote>
<p>=== 5.17.0 / 2022-12-31</p>
<ul>
<li>
<p>1 minor enhancement:</p>
<ul>
<li>Refactor setup hooks into a SETUP_METHODS constant. (MSP-Greg)</li>
</ul>
</li>
<li>
<p>3 bug fixes:</p>
<ul>
<li>Fix kwargs for Mock calls to delegator. (blowmage)</li>
<li>Fix kwargs for expectations. (bobmazanec, blowmage)</li>
<li>Remove check for .b method. (tenderlove)</li>
</ul>
</li>
</ul>
<p>=== 5.16.3 / 2022-08-17</p>
<ul>
<li>
<p>2 bug fixes:</p>
<ul>
<li>Fixed exception sanitization by removing TypeError restriction on
rescue.</li>
<li>Use A instead of deprecated TESTOPTS in rake test:slow.
(davidstosik)</li>
</ul>
</li>
</ul>
<p>=== 5.16.2 / 2022-07-03</p>
<ul>
<li>
<p>4 bug fixes:</p>
<ul>
<li>Added MT_KWARGS_HACK kludge for stub to deal with ruby 2.7 kwargs
nastiness. (tsugimoto)</li>
<li>In #expect, pop Hash class from args if $MT_KWARGS_HACK.
(casperisfine)</li>
<li>In above scenario, set expected kwargs (as Objects) based on actual
kwargs.</li>
<li>Nuke ivars if exception fails to marshal twice (eg better_errors).
(irphilli)</li>
</ul>
</li>
</ul>
<p>=== 5.16.1 / 2022-06-20</p>
<ul>
<li>
<p>2 bug fixes:</p>
<ul>
<li>Apparently adding real kwarg support to mocks/stubs broke some code.
Fixed.
<ul>
<li>Use <code>MT_KWARGS_HACK=1</code> to activate the kludgy kwargs
support w/ caveats.</li>
</ul>
</li>
<li>Clarified some doco wrt the block on #stub.</li>
</ul>
</li>
</ul>
<p>=== 5.16.0 / 2022-06-14</p>
<ul>
<li>
<p>2 major enhancements:</p>
<ul>
<li>Added Minitest::TestTask.</li>
<li>Dropping ruby 2.2 - 2.5. 2.6 is DTM soon too.</li>
</ul>
</li>
<li>
<p>11 minor enhancements:</p>
<ul>
<li>Added --show-skips option to show skips at end of run but not
require --verbose. (MSP-Greg)</li>
<li>Added Minitest.seed, the random seed used by the run.</li>
<li>Calling <code>srand Minitest.seed</code> before all shuffles to
ensure determinism.</li>
<li>Extended #stub to handle kwargs for both block and call args.
(SampsonCrowley)</li>
<li>Extended Mock#__call to display kwargs.</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="abdde9d03b"><code>abdde9d</code></a>
prepped for release</li>
<li><a
href="c0be030603"><code>c0be030</code></a>
- Fix kwargs for Mock calls to delegator. (blowmage)</li>
<li><a
href="87604fca4d"><code>87604fc</code></a>
- Fix kwargs for expectations. (bobmazanec, blowmage)</li>
<li><a
href="0b816d303b"><code>0b816d3</code></a>
Add EOL date to rails matrix</li>
<li><a
href="2f7ed237f1"><code>2f7ed23</code></a>
cleaned up rails version</li>
<li><a
href="ae54abfb23"><code>ae54abf</code></a>
Updated README for rails/ruby compatibilty matrix</li>
<li><a
href="4f31487068"><code>4f31487</code></a>
Fixed race condition causing flaky tests. (XrXr)</li>
<li><a
href="dcdd882fbe"><code>dcdd882</code></a>
get rake dcov back to 100%</li>
<li><a
href="3a77687e8b"><code>3a77687</code></a>
+ Refactor setup hooks into a SETUP_METHODS constant. (MSP-Greg)</li>
<li><a
href="b5565c0c7a"><code>b5565c0</code></a>
- Remove check for .b method. (tenderlove)</li>
<li>See full diff in <a
href="https://github.com/seattlerb/minitest/compare/v5.16.3...v5.17.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-03 13:52:02 -06:00
dependabot[bot]
0782d79278 chore(deps-dev): Bump @types/node from 18.11.17 to 18.11.18 in /node (#191)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 18.11.17 to 18.11.18.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=18.11.17&new-version=18.11.18)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-03 13:51:49 -06:00
dependabot[bot]
472ad42048 chore(deps-dev): Bump @types/jest from 29.2.4 to 29.2.5 in /node (#192)
Bumps
[@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest)
from 29.2.4 to 29.2.5.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jest&package-manager=npm_and_yarn&previous-version=29.2.4&new-version=29.2.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-03 13:51:38 -06:00
Steve Manuel
ed6110e6ec chore: add zig to graphic and readme support 2023-01-02 17:25:48 -07:00
dependabot[bot]
527bcdfbcf chore(deps): Bump json5 from 2.2.1 to 2.2.3 in /node (#194)
Bumps [json5](https://github.com/json5/json5) from 2.2.1 to 2.2.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/json5/json5/releases">json5's
releases</a>.</em></p>
<blockquote>
<h2>v2.2.3</h2>
<ul>
<li>Fix: json5@2.2.3 is now the 'latest' release according to npm
instead of v1.0.2. (<a
href="https://github-redirect.dependabot.com/json5/json5/issues/299">#299</a>)</li>
</ul>
<h2>v2.2.2</h2>
<ul>
<li>Fix: Properties with the name <code>__proto__</code> are added to
objects and arrays.
(<a
href="https://github-redirect.dependabot.com/json5/json5/issues/199">#199</a>)
This also fixes a prototype pollution vulnerability reported by
Jonathan Gregson! (<a
href="https://github-redirect.dependabot.com/json5/json5/issues/295">#295</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/json5/json5/blob/main/CHANGELOG.md">json5's
changelog</a>.</em></p>
<blockquote>
<h3>v2.2.3 [<a
href="https://github.com/json5/json5/tree/v2.2.3">code</a>, <a
href="https://github.com/json5/json5/compare/v2.2.2...v2.2.3">diff</a>]</h3>
<ul>
<li>Fix: json5@2.2.3 is now the 'latest' release according to npm
instead of
v1.0.2. (<a
href="https://github-redirect.dependabot.com/json5/json5/issues/299">#299</a>)</li>
</ul>
<h3>v2.2.2 [<a
href="https://github.com/json5/json5/tree/v2.2.2">code</a>, <a
href="https://github.com/json5/json5/compare/v2.2.1...v2.2.2">diff</a>]</h3>
<ul>
<li>Fix: Properties with the name <code>__proto__</code> are added to
objects and arrays.
(<a
href="https://github-redirect.dependabot.com/json5/json5/issues/199">#199</a>)
This also fixes a prototype pollution vulnerability reported by
Jonathan Gregson! (<a
href="https://github-redirect.dependabot.com/json5/json5/issues/295">#295</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c3a7524277"><code>c3a7524</code></a>
2.2.3</li>
<li><a
href="94fd06d82e"><code>94fd06d</code></a>
docs: update CHANGELOG for v2.2.3</li>
<li><a
href="3b8cebf0c4"><code>3b8cebf</code></a>
docs(security): use GitHub security advisories</li>
<li><a
href="f0fd9e194d"><code>f0fd9e1</code></a>
docs: publish a security policy</li>
<li><a
href="6a91a05fff"><code>6a91a05</code></a>
docs(template): bug -&gt; bug report</li>
<li><a
href="14f8cb186e"><code>14f8cb1</code></a>
2.2.2</li>
<li><a
href="10cc7ca916"><code>10cc7ca</code></a>
docs: update CHANGELOG for v2.2.2</li>
<li><a
href="7774c10979"><code>7774c10</code></a>
fix: add <strong>proto</strong> to objects and arrays</li>
<li><a
href="edde30abd8"><code>edde30a</code></a>
Readme: slight tweak to intro</li>
<li><a
href="97286f8bd5"><code>97286f8</code></a>
Improve example in readme</li>
<li>Additional commits viewable in <a
href="https://github.com/json5/json5/compare/v2.2.1...v2.2.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=json5&package-manager=npm_and_yarn&previous-version=2.2.1&new-version=2.2.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/extism/extism/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-02 14:49:07 -08:00
dependabot[bot]
765a1c55d5 chore(deps): Bump json5 from 2.2.1 to 2.2.3 in /browser (#193)
Bumps [json5](https://github.com/json5/json5) from 2.2.1 to 2.2.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/json5/json5/releases">json5's
releases</a>.</em></p>
<blockquote>
<h2>v2.2.3</h2>
<ul>
<li>Fix: json5@2.2.3 is now the 'latest' release according to npm
instead of v1.0.2. (<a
href="https://github-redirect.dependabot.com/json5/json5/issues/299">#299</a>)</li>
</ul>
<h2>v2.2.2</h2>
<ul>
<li>Fix: Properties with the name <code>__proto__</code> are added to
objects and arrays.
(<a
href="https://github-redirect.dependabot.com/json5/json5/issues/199">#199</a>)
This also fixes a prototype pollution vulnerability reported by
Jonathan Gregson! (<a
href="https://github-redirect.dependabot.com/json5/json5/issues/295">#295</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/json5/json5/blob/main/CHANGELOG.md">json5's
changelog</a>.</em></p>
<blockquote>
<h3>v2.2.3 [<a
href="https://github.com/json5/json5/tree/v2.2.3">code</a>, <a
href="https://github.com/json5/json5/compare/v2.2.2...v2.2.3">diff</a>]</h3>
<ul>
<li>Fix: json5@2.2.3 is now the 'latest' release according to npm
instead of
v1.0.2. (<a
href="https://github-redirect.dependabot.com/json5/json5/issues/299">#299</a>)</li>
</ul>
<h3>v2.2.2 [<a
href="https://github.com/json5/json5/tree/v2.2.2">code</a>, <a
href="https://github.com/json5/json5/compare/v2.2.1...v2.2.2">diff</a>]</h3>
<ul>
<li>Fix: Properties with the name <code>__proto__</code> are added to
objects and arrays.
(<a
href="https://github-redirect.dependabot.com/json5/json5/issues/199">#199</a>)
This also fixes a prototype pollution vulnerability reported by
Jonathan Gregson! (<a
href="https://github-redirect.dependabot.com/json5/json5/issues/295">#295</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c3a7524277"><code>c3a7524</code></a>
2.2.3</li>
<li><a
href="94fd06d82e"><code>94fd06d</code></a>
docs: update CHANGELOG for v2.2.3</li>
<li><a
href="3b8cebf0c4"><code>3b8cebf</code></a>
docs(security): use GitHub security advisories</li>
<li><a
href="f0fd9e194d"><code>f0fd9e1</code></a>
docs: publish a security policy</li>
<li><a
href="6a91a05fff"><code>6a91a05</code></a>
docs(template): bug -&gt; bug report</li>
<li><a
href="14f8cb186e"><code>14f8cb1</code></a>
2.2.2</li>
<li><a
href="10cc7ca916"><code>10cc7ca</code></a>
docs: update CHANGELOG for v2.2.2</li>
<li><a
href="7774c10979"><code>7774c10</code></a>
fix: add <strong>proto</strong> to objects and arrays</li>
<li><a
href="edde30abd8"><code>edde30a</code></a>
Readme: slight tweak to intro</li>
<li><a
href="97286f8bd5"><code>97286f8</code></a>
Improve example in readme</li>
<li>Additional commits viewable in <a
href="https://github.com/json5/json5/compare/v2.2.1...v2.2.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=json5&package-manager=npm_and_yarn&previous-version=2.2.1&new-version=2.2.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/extism/extism/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-02 14:48:52 -08:00
Doğu Us
6f534336f3 feat(zig-sdk): Create Zig Host Sdk (#186) 2023-01-02 15:30:34 -07:00
zach
5c9aa4c90a fix(elixir): use local Rust extism package from extism_nif for local development (#180) 2022-12-28 11:40:17 -06:00
dependabot[bot]
a98b39a10f chore(deps-dev): Bump @types/node from 18.11.13 to 18.11.17 in /node (#174)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 18.11.13 to 18.11.17.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=18.11.13&new-version=18.11.17)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-24 23:07:01 -06:00
zach
8c2255eafa chore: update to wasmtime 4.0.0 (#181) 2022-12-22 10:43:49 -08:00
zach
094f51ba2b refactor(ocaml): Cleanup code, split out extism-manifest package, prepare to release with next runtime release (#182) 2022-12-22 10:43:24 -08:00
Steve Manuel
c2b1b78cc1 Update README.md 2022-12-20 14:35:53 -07:00
Thomas Darimont
322812ede2 refactor(java-sdk): Revise API usage (#177)
(cherry picked from commit 766090a1aa8340598c643ca01dded16b15c26ba5)
2022-12-19 17:48:45 -06:00
zach
9ccef562a9 ci: use glob for paths (#178) 2022-12-19 15:09:57 -08:00
Benjamin Eckel
bc2b044770 fix(java-sdk): Bad xml 2022-12-19 15:55:28 -06:00
Benjamin Eckel
374191f420 release(java-sdk): Bump version to 0.1.0 2022-12-19 15:39:12 -06:00
zach
ba69d9fcc8 chore: move each language to separate workflow (#176)
- Moves each language into a separate workflow
- Only runs CI for languages when they're changed (or when the runtime
is changed)
2022-12-19 12:38:50 -08:00
Benjamin Eckel
6cbde1acfc docs(java-sdk): Update readme (#175) 2022-12-19 11:42:08 -06:00
Benjamin Eckel
f34fa8bed2 feat(java-sdk): Create Java Host SDK (#122)
Closes #117

Signed-off-by: Thomas Darimont <thomas.darimont@googlemail.com>
Co-authored-by: Thomas Darimont <thomas.darimont@googlemail.com>
2022-12-19 10:55:40 -06:00
zach
dd0c5757da chore: update OCaml version to latest release (#171) 2022-12-16 11:19:19 -08:00
zach
34feb4b942 fix(haskell): update encoding of Extism.Manifest.HTTPRequest (#170) 2022-12-15 17:44:22 -08:00
zach
34b5942dd5 fix: use timeouts for language-specific runtime initialization/finalization calls (#169)
After adding the timer code plugins written in Haskell fail with a
timeout when trying to call `hs_init` - this PR fixes the runtime
initialization and updates those functions to respect the configured
timeout.
2022-12-15 16:43:19 -08:00
Benjamin Eckel
d681dcd9f1 chore(dotnet-sdk): Update Sample file, use the one from the docs (#164) 2022-12-15 14:52:53 -08:00
zach
4622f32a69 feat: add timeout_ms field to SDKs (#165) 2022-12-14 17:48:05 -08:00
zach
0c4b985ed7 feat: Add option to set timeout for plugin (#163)
- Adds `Manifest::timeout_ms` field to specify the plugin timeout in
milliseconds
- Sets a 30 second default timeout

Co-authored-by: Steve Manuel <steve@dylib.so>
2022-12-13 15:58:52 -08:00
Steve Manuel
5dfe7162b4 chore: include .net in readme list of sdk support 2022-12-13 12:35:28 -05:00
Steve Manuel
e0f8e54504 chore: update readme language support graphic 2022-12-13 12:33:21 -05:00
Benjamin Eckel
a236e59d3c docs: Add link to Haskell PDK instructions (#162) 2022-12-13 10:28:11 -06:00
dependabot[bot]
77c1d55791 chore(deps-dev): Bump @types/jest from 29.2.3 to 29.2.4 in /node (#155)
Bumps
[@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest)
from 29.2.3 to 29.2.4.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jest&package-manager=npm_and_yarn&previous-version=29.2.3&new-version=29.2.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-13 11:15:54 -05:00
Benjamin Eckel
ab36decbe7 fix(dotnet-sdk): Missed native version bump 2022-12-12 16:47:10 -06:00
Benjamin Eckel
0343bbbefe chore(dotnet-sdk): Release 0.2.0 (#161) 2022-12-12 16:42:53 -06:00
Benjamin Eckel
95ccafb02b ci(dotnet-sdk): Package dotnet lib with native dll (#152)
Fix release for native windows nuget package
2022-12-12 11:08:10 -06:00
Benjamin Eckel
c8308c3cdf docs(dotnet-sdk): RC-2 version to test 2022-12-12 11:06:54 -06:00
dependabot[bot]
aedb5b9c24 chore(deps-dev): Bump typedoc from 0.23.21 to 0.23.22 in /node (#156)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.23.21 to
0.23.22.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/TypeDoc/releases">typedoc's
releases</a>.</em></p>
<blockquote>
<h2>v0.23.22</h2>
<h3>Features</h3>
<ul>
<li>Add support for defining the kind sort order, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2109">#2109</a>.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Normalize all file paths on Windows, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2113">#2113</a>.</li>
<li>Fix <code>@link</code> tags within lists, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2103">#2103</a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md">typedoc's
changelog</a>.</em></p>
<blockquote>
<h2>v0.23.22 (2022-12-11)</h2>
<h3>Features</h3>
<ul>
<li>Add support for defining the kind sort order, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2109">#2109</a>.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Normalize all file paths on Windows, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2113">#2113</a>.</li>
<li>Fix <code>@link</code> tags within lists, <a
href="https://github-redirect.dependabot.com/TypeStrong/TypeDoc/issues/2103">#2103</a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ff5cb55a08"><code>ff5cb55</code></a>
Update changelog for release</li>
<li><a
href="678bf5e4dd"><code>678bf5e</code></a>
Bump version to 0.23.22</li>
<li><a
href="84c26e65d8"><code>84c26e6</code></a>
Fix <code>@link</code> tags within lists</li>
<li><a
href="5edf2290e7"><code>5edf229</code></a>
Add support for defining the kind sort order</li>
<li><a
href="36c95c0432"><code>36c95c0</code></a>
Normalize all paths on Windows</li>
<li>See full diff in <a
href="https://github.com/TypeStrong/TypeDoc/compare/v0.23.21...v0.23.22">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typedoc&package-manager=npm_and_yarn&previous-version=0.23.21&new-version=0.23.22)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-12 10:38:07 -06:00
dependabot[bot]
f34cc8f6ca chore(deps-dev): Bump typescript from 4.9.3 to 4.9.4 in /node (#157)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.9.3
to 4.9.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Microsoft/TypeScript/releases">typescript's
releases</a>.</em></p>
<blockquote>
<h2>TypeScript 4.9.4</h2>
<p>For release notes, check out the <a
href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-9">release
announcement</a>.</p>
<p>For the complete list of fixed issues, check out the</p>
<ul>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=is%3Aissue+milestone%3A%22TypeScript+4.9.4%22+is%3Aclosed+">fixed
issues query for Typescript v4.9.4</a>.</li>
</ul>
<p>Downloads are available on:</p>
<ul>
<li><a href="https://www.npmjs.com/package/typescript">npm</a></li>
<li><a
href="https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild">NuGet
package</a></li>
</ul>
<h2>Changes:</h2>
<ul>
<li>e2868216f637e875a74c675845625eb15dcfe9a2 Bump version to 4.9.4 and
LKG.</li>
<li>eb5419fc8d980859b98553586dfb5f40d811a745 Cherry-pick <a
href="https://github-redirect.dependabot.com/Microsoft/TypeScript/issues/51704">#51704</a>
to release 4.9 (<a
href="https://github-redirect.dependabot.com/Microsoft/TypeScript/issues/51712">#51712</a>)</li>
<li>b4d382b9b12460adf2da4cc0d1429cf19f8dc8be Cherry-pick changes for
narrowing to tagged literal types.</li>
<li>e7a02f43fce47e1a39259ada5460bcc33c8e98b5 Port of <a
href="https://github-redirect.dependabot.com/Microsoft/TypeScript/issues/51626">#51626</a>
and <a
href="https://github-redirect.dependabot.com/Microsoft/TypeScript/issues/51689">#51689</a>
to release-4.9 (<a
href="https://github-redirect.dependabot.com/Microsoft/TypeScript/issues/51627">#51627</a>)</li>
<li>1727912f0437a7f367d90040fc4b0b4f3efd017a Cherry-pick fix around
<code>visitEachChild</code> to release-4.9. (<a
href="https://github-redirect.dependabot.com/Microsoft/TypeScript/issues/51544">#51544</a>)</li>
</ul>
<p>This list of changes was <a
href="https://typescript.visualstudio.com/cf7ac146-d525-443c-b23c-0d58337efebc/_release?releaseId=117&amp;_a=release-summary">auto
generated</a>.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e2868216f6"><code>e286821</code></a>
Bump version to 4.9.4 and LKG.</li>
<li><a
href="eb5419fc8d"><code>eb5419f</code></a>
Cherry-pick <a
href="https://github-redirect.dependabot.com/Microsoft/TypeScript/issues/51704">#51704</a>
to release 4.9 (<a
href="https://github-redirect.dependabot.com/Microsoft/TypeScript/issues/51712">#51712</a>)</li>
<li><a
href="b4d382b9b1"><code>b4d382b</code></a>
Cherry-pick changes for narrowing to tagged literal types.</li>
<li><a
href="e7a02f43fc"><code>e7a02f4</code></a>
Port of <a
href="https://github-redirect.dependabot.com/Microsoft/TypeScript/issues/51626">#51626</a>
and <a
href="https://github-redirect.dependabot.com/Microsoft/TypeScript/issues/51689">#51689</a>
to release-4.9 (<a
href="https://github-redirect.dependabot.com/Microsoft/TypeScript/issues/51627">#51627</a>)</li>
<li><a
href="1727912f04"><code>1727912</code></a>
Cherry-pick fix around <code>visitEachChild</code> to release-4.9. (<a
href="https://github-redirect.dependabot.com/Microsoft/TypeScript/issues/51544">#51544</a>)</li>
<li>See full diff in <a
href="https://github.com/Microsoft/TypeScript/compare/v4.9.3...v4.9.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typescript&package-manager=npm_and_yarn&previous-version=4.9.3&new-version=4.9.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-12 10:37:45 -06:00
dependabot[bot]
dc2d015573 chore(deps-dev): Bump @types/node from 18.11.10 to 18.11.13 in /node (#158)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 18.11.10 to 18.11.13.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=18.11.10&new-version=18.11.13)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-12 10:37:26 -06:00
dependabot[bot]
6a7b595c08 chore(deps-dev): Bump prettier from 2.8.0 to 2.8.1 in /node (#159)
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.0 to
2.8.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/releases">prettier's
releases</a>.</em></p>
<blockquote>
<h2>2.8.1</h2>
<p>🔗 <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md#281">Changelog</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md">prettier's
changelog</a>.</em></p>
<blockquote>
<h1>2.8.1</h1>
<p><a
href="https://github.com/prettier/prettier/compare/2.8.0...2.8.1">diff</a></p>
<h4>Fix SCSS map in arguments (<a
href="https://github-redirect.dependabot.com/prettier/prettier/pull/9184">#9184</a>
by <a
href="https://github.com/agamkrbit"><code>@​agamkrbit</code></a>)</h4>
<!-- raw HTML omitted -->
<pre lang="scss"><code>// Input
$display-breakpoints: map-deep-merge(
  (
    &quot;print-only&quot;: &quot;only print&quot;,
    &quot;screen-only&quot;: &quot;only screen&quot;,
&quot;xs-only&quot;: &quot;only screen and (max-width:
#{map-get($grid-breakpoints, &quot;sm&quot;)-1})&quot;,
  ),
  $display-breakpoints
);
<p>// Prettier 2.8.0
$display-breakpoints: map-deep-merge(
(
&quot;print-only&quot;: &quot;only print&quot;,
&quot;screen-only&quot;: &quot;only screen&quot;,
&quot;xs-only&quot;: &quot;only screen and (max-width:
#{map-get($grid-breakpoints, &quot; sm
&quot;)-1})&quot;,
),
$display-breakpoints
);</p>
<p>// Prettier 2.8.1
$display-breakpoints: map-deep-merge(
(
&quot;print-only&quot;: &quot;only print&quot;,
&quot;screen-only&quot;: &quot;only screen&quot;,
&quot;xs-only&quot;: &quot;only screen and (max-width:
#{map-get($grid-breakpoints, &quot;sm&quot;)-1})&quot;,
),
$display-breakpoints
);
</code></pre></p>
<h4>Support auto accessors syntax (<a
href="https://github-redirect.dependabot.com/prettier/prettier/pull/13919">#13919</a>
by <a
href="https://github.com/sosukesuzuki"><code>@​sosukesuzuki</code></a>)</h4>
<p>Support for <a
href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-9/#auto-accessors-in-classes">Auto
Accessors Syntax</a> landed in TypeScript 4.9.</p>
<p>(Doesn't work well with <code>babel-ts</code> parser)</p>
<!-- raw HTML omitted -->
<pre lang="tsx"><code>class Foo {
  accessor foo: number = 3;
&lt;/tr&gt;&lt;/table&gt; 
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="cd1df1a184"><code>cd1df1a</code></a>
Release 2.8.1</li>
<li><a
href="5541a63d76"><code>5541a63</code></a>
Remove version validation</li>
<li><a
href="1cf760a184"><code>1cf760a</code></a>
Support decorator auto accessors syntax (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/13919">#13919</a>)</li>
<li><a
href="aa34209820"><code>aa34209</code></a>
test: format instantiation expr in logical expr (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/13897">#13897</a>)</li>
<li><a
href="957b4f20e8"><code>957b4f2</code></a>
Build(deps): Bump decode-uri-component from 0.2.0 to 0.2.2 in /website
(<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/13933">#13933</a>)</li>
<li><a
href="e4240aeaf0"><code>e4240ae</code></a>
Add tests for keyword class property (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/13927">#13927</a>)</li>
<li><a
href="655a161d0f"><code>655a161</code></a>
Add tests for multiple comments (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/13890">#13890</a>)</li>
<li><a
href="4a1e32a9de"><code>4a1e32a</code></a>
Fixed scss function arguments on different lines in maps <a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/9128">#9128</a>
(<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/9184">#9184</a>)</li>
<li><a
href="38806fe666"><code>38806fe</code></a>
Migrate from probot/no-response to lee-dohm/no-response (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/13891">#13891</a>)</li>
<li><a
href="a60bee2e2d"><code>a60bee2</code></a>
Add '--single-attribute-per-line' option to Playground (<a
href="https://github-redirect.dependabot.com/prettier/prettier/issues/13587">#13587</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/prettier/prettier/compare/2.8.0...2.8.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=prettier&package-manager=npm_and_yarn&previous-version=2.8.0&new-version=2.8.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-12 10:37:04 -06:00
zach
a68823e71c fix: remove old/duplicate Haskell runtime initialization code (#154) 2022-12-10 20:10:34 -08:00
zach
9a1d99a6e7 fix: order of arguments to Func::new 2022-12-09 19:39:15 -08:00
zach
f2a9851867 fix: order of arguments to Function::new 2022-12-09 19:35:15 -08:00
zach
124787127c feat: Add ability to register host functions with the runtime from the Rust SDK (#148)
- Adds the ability to initialize plugins with additional functions
created by the host (only supported by the Rust SDK right now)
- Adds `PluginBuilder` to the Rust SDK to make it easier to configure all the options

## Hello, world

The following example uses `println` from the host to print to stdout
from inside the plugin.

Host:
```rust
use extism::*;

fn main() -> Result<(), Error> {
    let context = Context::new();
    let manifest = Manifest::new([std::path::PathBuf::from("code.wasm")]);
    let say_hello = Function::new("say_hello", [ValType::I64], [], |caller, input, _out| {
        let internal = caller.data();
        let r = internal.memory().get_str(input[0].unwrap_i64() as usize)?;
        println!("Hello, {r}!");
        Ok(())
    });
    let mut plugin = PluginBuilder::new(manifest)
        .with_function(say_hello)
        .with_wasi(true)
        .build(&context)?;
    plugin.call("test", b"world").unwrap();
    Ok(())
}
```

Plugin:
```rust
use extism_pdk::*;

extern "C" {
    fn say_hello(offs: u64);
}

#[plugin_fn]
pub fn test(input: String) -> FnResult<()> {
    let memory = Memory::from_bytes(&input);
    unsafe {
        say_hello(memory.offset);
    }
    Ok(())
}

```
2022-12-09 16:08:50 -08:00
Muhammad Azeez
c3ffb25891 feat: Implement .NET Host SDK (#119)
I am working on a .NET host for extism. My plan is to do the following:
 - [x] Implement a proof of concept to make sure things are possible
- [x] Write docs for the C# API so that the users get a nice IDE
experience
 - [x] Create a github action to publish the NuGet packages
    - [x] Edit `ci.yml` to include .NET Sdk
- [x] Create `release-dotnet.yml` to release `Extism.Sdk` nuget package
- [x] Maybe Create `release-dotnet-native.yml` to release
`Extism.runtime.win` nuget package
 - [x] Test on Linux (Help needed)
 - [x] Test on Mac (Help needed)
 - [x] Expose all of the Extism functions
 - [x] Write automated tests
- [x] ~Edit README show that the there is a .NET SDK~. Probably we
should not do this until we have a docs page.
 - [x] ~Use the `Extism.runtime.win-x64` package in the sample project~

Out of scope for this PR:
 - Json Serialization/Desererialization support

Co-authored-by: Alistair Evans <alistairjevans@gmail.com>
Co-authored-by: Benjamin Eckel <bhelx@simst.im>
Co-authored-by: Benjamin Eckel <bhelx@users.noreply.github.com>
2022-12-08 12:42:27 -06:00
zach
e473d2cb7e refactor(haskell): cleanup haskell SDK to prepare for release (#138)
- Switches from `stack` to `cabal`
- Cleanup SDK code
- Adds release action (still waiting on Hackage upload approval)

Co-authored-by: Steve Manuel <steve@dylib.so>
2022-12-08 10:07:56 -08:00
zach
5a5b538855 fix(ci): don’t install Python dev dependencies on CI (#149) 2022-12-07 18:45:50 -08:00
zach
acb06b9898 feat: Add support for allowed_paths manifest key in SDKs (#144)
The Haskell SDK is updated here:
https://github.com/extism/extism/pull/138
2022-12-07 07:52:23 -08:00
zach
1973024816 fix: disallow all hosts if allowed_hosts is empty (#143) 2022-12-06 08:29:08 -08:00
zach
d4febd7228 fix: use Dir::open_ambient_dir instead of Dir::from_std_file (#140)
`Dir::from_std_file` works on Linux, but does not work as expected on
Windows
2022-12-06 08:28:51 -08:00
zach
bb2697193a feat: add allowed_paths to specify preopened directories in WASI (#137)
Adds ability to make local files available to plugins. Using the Rust
SDK:

```rust
let wasm = include_bytes!("code.wasm");
let mut context = Context::new();
let manifest = Manifest::new(vec![Wasm::data(wasm)]).with_allowed_path("/path/on/disk", "/plugin/path");
let plugin = Plugin::new_with_manifest(&mut context, &manifest, false)?;
...
```
2022-12-05 18:01:25 -08:00
zach
fee7348cee fix: Reinstantiate after call to _start (#135)
After a closer reading of:
https://github.com/WebAssembly/WASI/blob/main/legacy/application-abi.md
it looks likes `_start` is expected to be called at most once. This PR
automatically reinstantiates a plugin after a call to `_start` so it can
be used again.

CI caught a bug with the `extism_version` output which is fixed here:
https://github.com/extism/extism/pull/139
2022-12-05 16:18:30 -08:00
zach
9cf54d5f1f feat: Improve usability of manifest types (#124)
- Adds some helper functions for creating a manifest, mostly helpful for
the Rust SDK
- Renames `ManifestWasm` to `Wasm`
- Renames `ManifestMemory` to `MemoryOptions`
- `ManifestWasm` and `ManifestMemory` have been marked as deprecated
- Adds an alias from `MemoryOptions::max_pages` to `MemoryOptions::max`
in serde specification

Co-authored-by: Steve Manuel <steve@dylib.so>
2022-12-05 15:09:50 -08:00
zach
a3c6b9ee6a fix: add null byte to end of version string (#139) 2022-12-05 14:38:11 -08:00
dependabot[bot]
732b886fd5 chore(deps-dev): Bump @types/node from 18.11.9 to 18.11.10 in /node (#130)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 18.11.9 to 18.11.10.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=18.11.9&new-version=18.11.10)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-04 19:53:46 -06:00
dependabot[bot]
bd8ca71275 chore(deps-dev): Bump @types/ffi-napi from 4.0.6 to 4.0.7 in /node (#131)
Bumps
[@types/ffi-napi](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/ffi-napi)
from 4.0.6 to 4.0.7.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/ffi-napi">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/ffi-napi&package-manager=npm_and_yarn&previous-version=4.0.6&new-version=4.0.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-04 19:53:36 -06:00
zach
37ee7d67b6 fix: update crate name to extism_runtime in logging registration function (#123)
This bug exists because we didn't change the crate name in the logging
registration function, so all of our logs from `extism_runtime` were
being filtered out.
2022-12-02 14:04:54 -08:00
Steve Manuel
6b5f7999b7 fix: removes the stdout print of extism.h in php sdk (#112) 2022-11-30 16:30:06 -08:00
Benjamin Eckel
de24fffc7c fix(elixir-sdk): remove compiled nif from package, update readme (#111) 2022-11-30 16:38:51 -06:00
Benjamin Eckel
37b8e5bd12 release: v0.1.0 (#110) 2022-11-30 14:52:46 -06:00
Benjamin Eckel
c6b8429c67 chore: Add Makefile for browser runtime (#103)
I accidentally published without building. this should help make sure
releases are valid
2022-11-30 13:20:23 -06:00
Benjamin Eckel
ad114f44d2 fix(ruby-sdk): Add FFI gem as dependency (#106) 2022-11-30 13:19:54 -06:00
Benjamin Eckel
45180ad473 docs(node-sdk): Fix example to use CJS imports (#107) 2022-11-30 13:19:45 -06:00
Benjamin Eckel
9546dac689 docs(elixir-sdk): Reduce elixir min version (#108)
I've tested it in at least as low as 1.12. It just prints out a warning
so should be fine if someone wants to use it on an older version.
2022-11-30 13:19:28 -06:00
zach
197e934258 Fix elixir bindings (#109) 2022-11-30 10:42:43 -08:00
Benjamin Eckel
339556597b chore(python-sdk): Put placeholder readme in python dir (#104) 2022-11-29 12:39:01 -06:00
Benjamin Eckel
64927d9bcd fix(rust-sdk): Fix dep versions (#102) 2022-11-29 12:17:49 -06:00
Benjamin Eckel
86f1117ad5 chore: Fix bad publish, bump to 0.0.2 2022-11-29 11:52:55 -06:00
Benjamin Eckel
34be80a7ad chore: Fix elixir release workflow (#77) 2022-11-29 11:47:30 -06:00
Benjamin Eckel
3e6a0071e9 fix: Fix the release action (#101) 2022-11-29 10:33:26 -06:00
Benjamin Eckel
d17b693c4b release: Bump to 0.0.1 (#97) 2022-11-29 09:48:40 -06:00
zach
18fceec8f8 Cleanup Haskell SDK, split out manifest sublibrary (#99) 2022-11-28 21:03:13 -08:00
Benjamin Eckel
f5cf4f184e chore: fix ruby release publish (#78) 2022-11-28 19:31:26 -06:00
228 changed files with 18080 additions and 8972 deletions

View File

@@ -7,12 +7,24 @@ runs:
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Download libextism
uses: actions/download-artifact@v3
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
name: libextism-${{ matrix.os }}
toolchain: stable
override: true
- name: Cache Rust environment
uses: Swatinem/rust-cache@v1
- name: Cache libextism
id: cache-libextism
uses: actions/cache@v3
with:
path: target/**
key: ${{ runner.os }}-libextism-${{ hashFiles('runtime/**') }}-${{ hashFiles('manifest/**') }}-${{ hashFiles('libextism/**') }}
- name: Build
if: steps.cache-libextism.outputs.cache-hit != 'true'
shell: bash
run: cargo build --release -p libextism
- name: Install extism shared library
shell: bash
run: |
sudo cp libextism.* /usr/local/lib
sudo cp runtime/extism.h /usr/local/include
sudo make install

36
.github/workflows/browser-ci.yml vendored Normal file
View File

@@ -0,0 +1,36 @@
on:
pull_request:
paths:
- .github/actions/extism/**
- .github/workflows/ci-node.yml
- manifest/**
- runtime/**
- libextism/**
- browser/**
workflow_dispatch:
name: Browser CI
jobs:
node:
name: Browser
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Setup Node env
uses: actions/setup-node@v3
with:
node-version: 18
- name: Test Browser Runtime
run: |
cd browser
npm i
npm run test

39
.github/workflows/ci-cpp.yml vendored Normal file
View File

@@ -0,0 +1,39 @@
on:
pull_request:
paths:
- .github/actions/extism/**
- .github/workflows/ci-cpp.yml
- manifest/**
- runtime/**
- libextism/**
- cpp/**
workflow_dispatch:
name: C++ CI
jobs:
cpp:
name: C++
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Install C++ SDK deps
if: ${{ matrix.os == 'macos-latest' }}
run: |
brew install jsoncpp googletest pkg-config
- name: Install C++ SDK deps
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
sudo apt-get install g++ libjsoncpp-dev libgtest-dev pkg-config
- name: Run C++ tests
run: |
cd cpp
LD_LIBRARY_PATH=/usr/local/lib make example
LD_LIBRARY_PATH=/usr/local/lib make test

34
.github/workflows/ci-dotnet.yml vendored Normal file
View File

@@ -0,0 +1,34 @@
on:
pull_request:
paths:
- .github/actions/extism/**
- .github/workflows/ci-dotnet.yml
- manifest/**
- runtime/**
- libextism/**
- dotnet/**
workflow_dispatch:
name: .NET CI
jobs:
dotnet:
name: .NET
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Setup .NET Core SDK
uses: actions/setup-dotnet@v3.0.3
with:
dotnet-version: 7.x
- name: Test .NET Sdk
run: |
cd dotnet
LD_LIBRARY_PATH=/usr/local/lib dotnet test ./Extism.sln

41
.github/workflows/ci-elixir.yml vendored Normal file
View File

@@ -0,0 +1,41 @@
on:
pull_request:
paths:
- .github/actions/extism/**
- .github/workflows/ci-elixir.yml
- manifest/**
- runtime/**
- rust/**
- elixir/**
workflow_dispatch:
name: Elixir CI
jobs:
elixir:
name: Elixir
runs-on: ${{ matrix.os }}
env:
MIX_ENV: test
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Setup Elixir Host SDK
if: ${{ runner.os != 'macOS' }}
uses: erlef/setup-beam@v1
with:
experimental-otp: true
otp-version: '25.0.4'
elixir-version: '1.14.0'
- name: Test Elixir Host SDK
if: ${{ runner.os != 'macOS' }}
run: |
cd elixir
LD_LIBRARY_PATH=/usr/local/lib mix do deps.get, test

39
.github/workflows/ci-go.yml vendored Normal file
View File

@@ -0,0 +1,39 @@
on:
pull_request:
paths:
- .github/actions/extism/**
- .github/workflows/ci-go.yml
- manifest/**
- runtime/**
- libextism/**
- extism.go
- extism_test.go
- go.mod
- libextism.pc
- go/**
workflow_dispatch:
name: Go CI
jobs:
go:
name: Go
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Setup Go env
uses: actions/setup-go@v3
- name: Test Go Host SDK
run: |
go version
LD_LIBRARY_PATH=/usr/local/lib go test
cd go
LD_LIBRARY_PATH=/usr/local/lib go run main.go | grep "Hello from Go!"

47
.github/workflows/ci-haskell.yml vendored Normal file
View File

@@ -0,0 +1,47 @@
on:
pull_request:
paths:
- .github/actions/extism/**
- .github/workflows/ci-haskell.yml
- manifest/**
- runtime/**
- libextism/**
- haskell/**
workflow_dispatch:
name: Haskell CI
jobs:
haskell:
name: Haskell
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Setup Haskell env
uses: haskell/actions/setup@v2
with:
enable-stack: false
- name: Cache Haskell
id: cache-haskell
uses: actions/cache@v3
with:
path: ./haskell/dist-newstyle
key: ${{ runner.os }}-haskell-${{ hashFiles('haskell/**') }}
- name: Build Haskell Host SDK
if: steps.cache-haskell.outputs.cache-hit != 'true'
run: |
cd haskell
cabal update
LD_LIBRARY_PATH=/usr/local/lib cabal build
- name: Test Haskell SDK
run: |
cd haskell
cabal update
LD_LIBRARY_PATH=/usr/local/lib cabal test

37
.github/workflows/ci-java.yml vendored Normal file
View File

@@ -0,0 +1,37 @@
on:
pull_request:
paths:
- .github/actions/extism/**
- .github/workflows/ci-java.yml
- manifest/**
- runtime/**
- libextism/**
- java/**
workflow_dispatch:
name: Java CI
jobs:
java:
name: Java
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
version: [11, 17]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Set up Java
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '${{ matrix.version }}'
- name: Test Java
run: |
cd java
mvn --batch-mode -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn verify

38
.github/workflows/ci-node.yml vendored Normal file
View File

@@ -0,0 +1,38 @@
on:
pull_request:
paths:
- .github/actions/extism/**
- .github/workflows/ci-node.yml
- manifest/**
- runtime/**
- libextism/**
- node/**
workflow_dispatch:
name: Node CI
jobs:
node:
name: Node
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Setup Node env
uses: actions/setup-node@v3
with:
node-version: 18
- name: Test Node Host SDK
run: |
cd node
npm i
LD_LIBRARY_PATH=/usr/local/lib npm run build
LD_LIBRARY_PATH=/usr/local/lib npm run example
LD_LIBRARY_PATH=/usr/local/lib npm run test

50
.github/workflows/ci-ocaml.yml vendored Normal file
View File

@@ -0,0 +1,50 @@
on:
pull_request:
paths:
- .github/actions/extism/**
- .github/workflows/ci-ocaml.yml
- manifest/**
- runtime/**
- libextism/**
- ocaml/**
- dune-project
- extism.opam
workflow_dispatch:
name: OCaml CI
jobs:
ocaml:
name: OCaml
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Setup OCaml env
uses: ocaml/setup-ocaml@v2
with:
ocaml-compiler: ocaml-base-compiler.5.0.0
- name: Cache OCaml
id: cache-ocaml
uses: actions/cache@v3
with:
path: _build
key: ${{ runner.os }}-ocaml-${{ hashFiles('ocaml/**.ml') }}-${{ hashFiles('dune-project') }}
- name: Build OCaml Host SDK
if: steps.cache-ocaml.outputs.cache-hit != 'true'
run: |
opam install -y --deps-only .
cd ocaml
LD_LIBRARY_PATH=/usr/local/lib opam exec -- dune build
- name: Test OCaml Host SDK
run: |
opam install -y --deps-only .
cd ocaml
LD_LIBRARY_PATH=/usr/local/lib opam exec -- dune exec ./bin/main.exe ../wasm/code.wasm count_vowels -- --input "qwertyuiop"
LD_LIBRARY_PATH=/usr/local/lib opam exec -- dune runtest

42
.github/workflows/ci-php.yml vendored Normal file
View File

@@ -0,0 +1,42 @@
on:
pull_request:
paths:
- .github/actions/extism/**
- .github/workflows/ci-php.yml
- manifest/**
- runtime/**
- libextism/**
- php/**
- composer.json
- composer.lock
workflow_dispatch:
name: PHP CI
jobs:
php:
name: PHP
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Setup PHP env
uses: shivammathur/setup-php@v2
with:
php-version: "8.1"
extensions: ffi
tools: composer
env:
fail-fast: true
- name: Test PHP SDK
run: |
cd php/example
composer install
php index.php

40
.github/workflows/ci-python.yml vendored Normal file
View File

@@ -0,0 +1,40 @@
on:
pull_request:
paths:
- .github/actions/extism/**
- .github/workflows/ci-python.yml
- manifest/**
- runtime/**
- libextism/**
- python/**
workflow_dispatch:
name: Python CI
jobs:
python:
name: Python
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Setup Python env
uses: actions/setup-python@v4
with:
python-version: "3.9"
check-latest: true
- name: Install Poetry
uses: snok/install-poetry@v1
- name: Test Python Host SDK
run: |
cd python
cp ../README.md .
poetry install --no-dev
poetry run python example.py
poetry run python -m unittest discover

38
.github/workflows/ci-ruby.yml vendored Normal file
View File

@@ -0,0 +1,38 @@
on:
pull_request:
paths:
- .github/actions/extism/**
- .github/workflows/ci-ruby.yml
- manifest/**
- runtime/**
- libextism/**
- ruby/**
workflow_dispatch:
name: Ruby CI
jobs:
ruby:
name: Ruby
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Setup Ruby env
uses: ruby/setup-ruby@v1
with:
ruby-version: "3.0"
- name: Test Ruby Host SDK
run: |
cd ruby
bundle install
ruby example.rb
rake test

93
.github/workflows/ci-rust.yml vendored Normal file
View File

@@ -0,0 +1,93 @@
on:
pull_request:
paths:
- .github/actions/extism/**
- .github/workflows/ci-rust.yml
- manifest/**
- runtime/**
- rust/**
- libextism/**
workflow_dispatch:
name: Rust CI
env:
RUNTIME_CRATE: extism
LIBEXTISM_CRATE: libextism
jobs:
lib:
name: Extism runtime lib
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Cache Rust environment
uses: Swatinem/rust-cache@v1
- name: Cache libextism
id: cache-libextism
uses: actions/cache@v3
with:
path: target/release/libextism.*
key: ${{ runner.os }}-libextism-${{ hashFiles('runtime/**') }}-${{ hashFiles('manifest/**') }}
- name: Cache target
id: cache-target
uses: actions/cache@v3
with:
path: target/**
key: ${{ runner.os }}-target-${{ env.GITHUB_SHA }}
- name: Build
if: steps.cache-libextism.outputs.cache-hit != 'true'
shell: bash
run: cargo build --release -p ${{ env.LIBEXTISM_CRATE }}
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: libextism-${{ matrix.os }}
path: |
target/release/libextism.*
lint_and_test:
name: Extism runtime lint and test
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Cache Rust environment
uses: Swatinem/rust-cache@v1
- name: Cache target
id: cache-target
uses: actions/cache@v3
with:
path: target/**
key: ${{ runner.os }}-target-${{ env.GITHUB_SHA }}
- name: Format
run: cargo fmt --check -p ${{ env.RUNTIME_CRATE }}
- name: Lint
run: cargo clippy --release --all-features --no-deps -p ${{ env.RUNTIME_CRATE }}
- name: Test
run: cargo test --release -p ${{ env.RUNTIME_CRATE }}
- name: Test all features
run: cargo test --all-features --release -p ${{ env.RUNTIME_CRATE }}
- name: Test no features
run: cargo test --no-default-features --release -p ${{ env.RUNTIME_CRATE }}

37
.github/workflows/ci-zig.yml vendored Normal file
View File

@@ -0,0 +1,37 @@
on:
pull_request:
paths:
- .github/actions/extism/**
- .github/workflows/ci-zig.yml
- manifest/**
- runtime/**
- libextism/**
- zig/**
workflow_dispatch:
name: Zig CI
jobs:
zig:
name: Zig
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
zig_version: ["master"] # eventually use multiple versions once stable
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Setup Zig env
uses: goto-bus-stop/setup-zig@v2
with:
version: ${{ matrix.zig_version }}
- name: Test Zig Host SDK
run: |
zig version
cd zig
LD_LIBRARY_PATH=/usr/local/lib zig build test

View File

@@ -2,361 +2,7 @@ on: [pull_request, workflow_dispatch]
name: CI
env:
RUNTIME_CRATE: extism-runtime
LIBEXTISM_CRATE: libextism
RUST_SDK_CRATE: extism
jobs:
lib:
name: Extism runtime lib
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Cache Rust environment
uses: Swatinem/rust-cache@v1
- name: Cache libextism
id: cache-libextism
uses: actions/cache@v3
with:
path: target/release/libextism.*
key: ${{ runner.os }}-libextism-${{ hashFiles('runtime/**') }}-${{ hashFiles('manifest/**') }}
- name: Cache target
id: cache-target
uses: actions/cache@v3
with:
path: target/**
key: ${{ runner.os }}-target-${{ env.GITHUB_SHA }}
- name: Build
if: steps.cache-libextism.outputs.cache-hit != 'true'
shell: bash
run: cargo build --release -p ${{ env.LIBEXTISM_CRATE }}
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: libextism-${{ matrix.os }}
path: |
target/release/libextism.*
lint_and_test:
name: Extism runtime lint and test
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Cache Rust environment
uses: Swatinem/rust-cache@v1
- name: Cache target
id: cache-target
uses: actions/cache@v3
with:
path: target/**
key: ${{ runner.os }}-target-${{ env.GITHUB_SHA }}
- name: Format
run: cargo fmt --check -p ${{ env.RUNTIME_CRATE }}
- name: Lint
run: cargo clippy --release --all-features --no-deps -p ${{ env.RUNTIME_CRATE }}
- name: Test
run: cargo test --all-features --release -p ${{ env.RUNTIME_CRATE }}
rust:
name: Rust
needs: lib
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Test Rust Host SDK
run: LD_LIBRARY_PATH=/usr/local/lib cargo test --release -p ${{ env.RUST_SDK_CRATE }}
elixir:
name: Elixir
needs: lib
runs-on: ${{ matrix.os }}
env:
MIX_ENV: test
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Setup Elixir Host SDK
if: ${{ runner.os != 'macOS' }}
uses: erlef/setup-beam@v1
with:
experimental-otp: true
otp-version: '25.0.4'
elixir-version: '1.14.0'
- name: Test Elixir Host SDK
if: ${{ runner.os != 'macOS' }}
run: |
cd elixir
LD_LIBRARY_PATH=/usr/local/lib mix do deps.get, test
go:
name: Go
needs: lib
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Setup Go env
uses: actions/setup-go@v3
- name: Test Go Host SDK
run: |
go version
cd go
LD_LIBRARY_PATH=/usr/local/lib go run main.go
LD_LIBRARY_PATH=/usr/local/lib go test
python:
name: Python
needs: lib
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Setup Python env
uses: actions/setup-python@v4
with:
python-version: "3.9"
check-latest: true
- name: Install Poetry
uses: snok/install-poetry@v1
- name: Test Python Host SDK
run: |
cd python
cp ../README.md .
poetry install
poetry run python example.py
poetry run python -m unittest discover
ruby:
name: Ruby
needs: lib
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Setup Ruby env
uses: ruby/setup-ruby@v1
with:
ruby-version: "3.0"
- name: Test Ruby Host SDK
run: |
cd ruby
bundle install
ruby example.rb
rake test
node:
name: Node
needs: lib
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Setup Node env
uses: actions/setup-node@v3
with:
node-version: 18
- name: Test Node Host SDK
run: |
cd node
npm i
LD_LIBRARY_PATH=/usr/local/lib npm run build
LD_LIBRARY_PATH=/usr/local/lib npm run example
LD_LIBRARY_PATH=/usr/local/lib npm run test
- name: Test Browser Runtime
run: |
cd browser
npm i
npm run test
ocaml:
name: OCaml
needs: lib
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Setup OCaml env
uses: ocaml/setup-ocaml@v2
with:
ocaml-compiler: ocaml-base-compiler.5.0.0~beta1
- name: Cache OCaml
id: cache-ocaml
uses: actions/cache@v3
with:
path: _build
key: ${{ runner.os }}-ocaml-${{ hashFiles('ocaml/lib/**') }}-${{ hashFiles('ocaml/bin/**') }}-${{ hashFiles('dune-project') }}
- name: Build OCaml Host SDK
if: steps.cache-ocaml.outputs.cache-hit != 'true'
run: |
opam install -y --deps-only .
cd ocaml
LD_LIBRARY_PATH=/usr/local/lib opam exec -- dune build
- name: Test OCaml Host SDK
run: |
opam install -y --deps-only .
cd ocaml
LD_LIBRARY_PATH=/usr/local/lib opam exec -- dune exec ./bin/main.exe
LD_LIBRARY_PATH=/usr/local/lib opam exec -- dune runtest
haskell:
name: Haskell
needs: lib
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Setup Haskell env
uses: haskell/actions/setup@v2
with:
enable-stack: true
stack-version: "latest"
- name: Cache Haskell
id: cache-haskell
uses: actions/cache@v3
with:
path: .stack-work
key: ${{ runner.os }}-haskell-${{ hashFiles('haskell/**') }}
- name: Build Haskell Host SDK
if: steps.cache-haskell.outputs.cache-hit != 'true'
run: |
cd haskell
LD_LIBRARY_PATH=/usr/local/lib stack build
- name: Test Haskell SDK
run: |
cd haskell
LD_LIBRARY_PATH=/usr/local/lib stack test
php:
name: PHP
needs: lib
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Setup PHP env
uses: shivammathur/setup-php@v2
with:
php-version: "8.1"
extensions: ffi
tools: composer
env:
fail-fast: true
- name: Test PHP SDK
run: |
cd php/example
composer install
php index.php
cpp:
name: C++
needs: lib
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
rust:
- stable
steps:
- name: Checkout sources
uses: actions/checkout@v3
- uses: ./.github/actions/extism
- name: Install C++ SDK deps
if: ${{ matrix.os == 'macos-latest' }}
run: |
brew install jsoncpp googletest pkg-config
- name: Install C++ SDK deps
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
sudo apt-get install g++ libjsoncpp-dev libgtest-dev pkg-config
- name: Run C++ tests
run: |
cd cpp
LD_LIBRARY_PATH=/usr/local/lib make example
LD_LIBRARY_PATH=/usr/local/lib make test
sdk_api_coverage:
name: SDK API Coverage Report
runs-on: ubuntu-latest
@@ -376,3 +22,4 @@ jobs:
id: coverage
run: |
python scripts/sdk_coverage.py

View File

@@ -0,0 +1,29 @@
on:
workflow_dispatch:
name: Release .NET Native NuGet Packages
jobs:
release-runtimes:
name: release-dotnet-native
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup .NET Core SDK
uses: actions/setup-dotnet@v3.0.3
with:
dotnet-version: 7.x
- uses: dawidd6/action-download-artifact@v2
with:
workflow: release.yml
name: release-artifacts
- name: Extract Archive
run: |
tar -xvzf libextism-x86_64-pc-windows-msvc-v*.tar.gz --directory dotnet/nuget/runtimes
mv dotnet/nuget/runtimes/extism.dll dotnet/nuget/runtimes/win-x64.dll
- name: Publish win-x64
run: |
cd dotnet/nuget
dotnet pack -o dist
dotnet nuget push --source https://api.nuget.org/v3/index.json ./dist/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }}

32
.github/workflows/release-dotnet.yaml vendored Normal file
View File

@@ -0,0 +1,32 @@
on:
workflow_dispatch:
name: Release .NET SDK
jobs:
release-sdks:
name: release-dotnet
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install extism shared library
shell: bash
run: |
mkdir -p /home/runner/.local/bin/
export PATH="/home/runner/.local/bin/:$PATH"
curl https://raw.githubusercontent.com/extism/cli/main/install.sh | sh
extism --sudo --prefix /usr/local install
- name: Setup .NET Core SDK
uses: actions/setup-dotnet@v3.0.3
with:
dotnet-version: 7.x
- name: Test .NET Sdk
run: |
cd dotnet
LD_LIBRARY_PATH=/usr/local/lib dotnet test ./Extism.sln
- name: Publish .NET Sdk
run: |
cd dotnet/src/Extism.Sdk/
dotnet pack -c Release
dotnet nuget push --source https://api.nuget.org/v3/index.json ./bin/Release/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }}

View File

@@ -10,7 +10,13 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install extism shared library
shell: bash
run: |
mkdir -p /home/runner/.local/bin/
export PATH="/home/runner/.local/bin/:$PATH"
curl https://raw.githubusercontent.com/extism/cli/main/install.sh | sh
extism --sudo --prefix /usr/local install
- name: Setup Elixir Host SDK
uses: erlef/setup-beam@v1
with:

16
.github/workflows/release-haskell.yaml vendored Normal file
View File

@@ -0,0 +1,16 @@
on:
workflow_dispatch:
name: Release Haskell SDK
jobs:
release-sdks:
name: release-rust
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- uses: cachix/haskell-release-action@v1
with:
- hackage-token: "${{ secrets.HACKAGE_TOKEN }}"
- work-dir: ./haskell

22
.github/workflows/release-java.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
name: Publish package to the Maven Central Repository
on:
workflow_dispatch:
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Java
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'adopt'
- name: Publish package
env:
JRELEASER_NEXUS2_USERNAME: ${{ secrets.JRELEASER_NEXUS2_USERNAME }}
JRELEASER_NEXUS2_PASSWORD: ${{ secrets.JRELEASER_NEXUS2_PASSWORD }}
JRELEASER_GPG_PASSPHRASE: ${{ secrets.JRELEASER_GPG_PASSPHRASE }}
JRELEASER_GPG_SECRET_KEY: ${{ secrets.JRELEASER_GPG_SECRET_KEY }}
JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.JRELEASER_GPG_PUBLIC_KEY }}
JRELEASER_GITHUB_TOKEN: "dummy"
run: mvn -Prelease clean jreleaser:prepare deploy jreleaser:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy

View File

@@ -23,9 +23,8 @@ jobs:
run: |
cd python
cp ../LICENSE .
cp ../README.md .
make clean
make prepare
poetry install --no-dev
poetry build
- name: Release Python Host SDK

View File

@@ -21,5 +21,5 @@ jobs:
RUBYGEMS_API_KEY: ${{ secrets.RUBYGEMS_API_TOKEN }}
run: |
cd ruby
make publish
make publish RUBYGEMS_API_KEY=$RUBYGEMS_API_KEY

View File

@@ -19,17 +19,19 @@ jobs:
override: true
target: ${{ matrix.target }}
- name: Release Rust Host SDK
- name: Release Rust Manifest Crate
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_API_TOKEN }}
run: |
# order of crate publication matter: manifest, runtime, rust
cargo publish --manifest-path manifest/Cargo.toml
# allow for crates.io to update so dependant crates can locate extism-manifest
sleep 5
sleep 10
- name: Release Runtime
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_API_TOKEN }}
run: |
cargo publish --manifest-path runtime/Cargo.toml --no-verify
cargo publish --manifest-path rust/Cargo.toml

15
.gitignore vendored
View File

@@ -27,9 +27,18 @@ ruby/tmp/
ruby/Gemfile.lock
rust/target
rust/test.log
ocaml/duniverse
ocaml/_build
duniverse
_build
php/Extism.php
python/docs
dist-newstyle
.stack-work
vendor
vendor
zig/zig-*
zig/example-out/
zig/*.log
java/*.iml
java/*.log
java/.idea
java/.DS_Store

1
.ocamlformat Normal file
View File

@@ -0,0 +1 @@
version = 0.26.0

View File

@@ -2,9 +2,6 @@
members = [
"manifest",
"runtime",
"rust",
"libextism"
]
exclude = [
"elixir/native/extism_nif"
"libextism",
]
exclude = ["kernel"]

View File

@@ -18,18 +18,23 @@ else
FEATURE_FLAGS=--features $(FEATURES)
endif
build:
cargo build --release $(FEATURE_FLAGS) --manifest-path libextism/Cargo.toml
.PHONY: build
.PHONY: kernel
kernel:
cd kernel && bash build.sh
lint:
cargo clippy --release --no-deps --manifest-path runtime/Cargo.toml
build:
cargo build --release $(FEATURE_FLAGS) --manifest-path libextism/Cargo.toml
debug:
RUSTFLAGS=-g $(MAKE) build
install:
install runtime/extism.h $(DEST)/include
install target/release/libextism.$(SOEXT) $(DEST)/lib
mkdir -p $(DEST)/lib $(DEST)/include
install runtime/extism.h $(DEST)/include/extism.h
install target/release/libextism.$(SOEXT) $(DEST)/lib/libextism.$(SOEXT)
uninstall:
rm -f $(DEST)/include/extism.h $(DEST)/lib/libextism.$(SOEXT)

View File

@@ -1,6 +1,8 @@
### _Welcome!_
**Please note:** this project still under active development. It's usable, but expect some rough edges while work is underway. If you're interested in working on or building with Extism, please join our [Discord](https://discord.gg/cx3usBCWnc) and let us know - we are happy to help get you started.
**Please note:** This project still under active development and APIs may change until we hit v1.0.
If you're interested in working on or building with Extism, please join our [Discord](https://discord.gg/cx3usBCWnc) and let us know - we are happy to help get you started.
[![Discord](https://img.shields.io/discord/1011124058408112148?color=%23404eed&label=Community%20Chat&logo=Discord&logoColor=%23404eed)](https://discord.gg/cx3usBCWnc)
@@ -10,16 +12,21 @@ The universal plug-in system. Run WebAssembly extensions inside your app. Use id
[Ruby](https://extism.org/docs/integrate-into-your-codebase/ruby-host-sdk), [Python](https://extism.org/docs/integrate-into-your-codebase/python-host-sdk),
[Node](https://extism.org/docs/integrate-into-your-codebase/node-host-sdk), [Rust](https://extism.org/docs/integrate-into-your-codebase/rust-host-sdk),
[C](https://extism.org/docs/integrate-into-your-codebase/c-host-sdk), [C++](https://extism.org/docs/integrate-into-your-codebase/cpp-host-sdk),
[OCaml](https://extism.org/docs/integrate-into-your-codebase/ocaml-host-sdk), [Haskell](https://extism.org/docs/integrate-into-your-codebase/haskell-host-sdk), [PHP](https://extism.org/docs/integrate-into-your-codebase/php-host-sdk), [Elixir/Erlang](https://extism.org/docs/integrate-into-your-codebase/elixir-or-erlang-host-sdk) &amp; more (others coming soon).
[OCaml](https://extism.org/docs/integrate-into-your-codebase/ocaml-host-sdk),
[Haskell](https://extism.org/docs/integrate-into-your-codebase/haskell-host-sdk),
[PHP](https://extism.org/docs/integrate-into-your-codebase/php-host-sdk),
[Elixir/Erlang](https://extism.org/docs/integrate-into-your-codebase/elixir-or-erlang-host-sdk),
[.NET](https://extism.org/docs/integrate-into-your-codebase/dotnet-host-sdk),
[Java](https://extism.org/docs/integrate-into-your-codebase/java-host-sdk),
[Zig](https://extism.org/docs/integrate-into-your-codebase/zig-host-sdk) &amp; more (others coming soon).
Plug-in development kits (PDK) for plug-in authors supported in [Rust](https://github.com/extism/rust-pdk), [AssemblyScript](https://github.com/extism/assemblyscript-pdk), [Go](https://github.com/extism/go-pdk), [C/C++](https://github.com/extism/c-pdk).
Plug-in development kits (PDK) for plug-in authors supported in [Rust](https://github.com/extism/rust-pdk), [AssemblyScript](https://github.com/extism/assemblyscript-pdk), [Go](https://github.com/extism/go-pdk), [C/C++](https://github.com/extism/c-pdk), [Haskell](https://github.com/extism/haskell-pdk), and [Zig](https://github.com/extism/zig-pdk).
<p align="center">
<img style="width: 70%;" src="https://user-images.githubusercontent.com/7517515/200043015-ddfe5833-0252-43a8-bc9e-5b3f829c37d1.png" alt="Extism embedded SDK language support"/>
<img style="width: 70%;" src="https://user-images.githubusercontent.com/7517515/210286900-39b144fd-1b26-4dd0-b7a9-2b5755bc174d.png" alt="Extism embedded SDK language support"/>
</p>
Add a flexible, secure, and _bLaZiNg FaSt_ plug-in system to your project. Server, desktop, mobile, web, database -- you name it. Enable users to write and execute safe extensions to your software in **3 easy steps:**
### 1. Import
@@ -57,5 +64,4 @@ Extism is an open-source product from the team at:
</p>
_Reach out and tell us what you're building! We'd love to help._

28
browser/Makefile Normal file
View File

@@ -0,0 +1,28 @@
.PHONY: test
prepare:
npm install
build:
npm run build
test: prepare
npm run test
clean:
echo "No clean implemented"
publish: clean prepare build
npm publish
format:
npx prettier --write src
lint:
npx prettier --check src
docs:
npx typedoc --out doc src
show-docs: docs
open doc/index.html

View File

@@ -1,12 +1,12 @@
const { build } = require("esbuild");
const { dependencies, peerDependencies } = require('./package.json')
const { peerDependencies } = require('./package.json')
const sharedConfig = {
entryPoints: ["src/index.ts"],
bundle: true,
minify: false,
drop: [], // preseve debugger statements
external: Object.keys(dependencies || {}).concat(Object.keys(peerDependencies || {})),
external: Object.keys(peerDependencies || {}),
};
build({

View File

@@ -103,8 +103,12 @@
}
async loadFunctions(url) {
let plugin = await this.extismContext.newPlugin({ "wasm": [ { "path": url } ] })
let functions = await plugin.getExportedFunctions()
let helloWorld = function(index){
console.log("Hello, " + this.allocator.getString(index));
return index;
};
let plugin = await this.extismContext.newPlugin({ "wasm": [ { "path": url } ] }, {"hello_world": helloWorld});
let functions = Object.keys(await plugin.getExports())
console.log("funcs ", functions)
this.setState({functions})
}
@@ -135,7 +139,13 @@
async handleOnRun(e) {
e && e.preventDefault && e.preventDefault();
let plugin = await this.extismContext.newPlugin({ "wasm": [ { "path": this.state.url } ] })
let helloWorld = function(index){
console.log("Hello, " + this.allocator.getString(index));
return index;
};
let plugin = await this.extismContext.newPlugin({ "wasm": [ { "path": this.state.url } ] }, {
"hello_world": helloWorld
});
let result = await plugin.call(this.state.func_name, this.state.input)
let output = result
this.setState({output})

View File

@@ -1,5 +1,5 @@
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
testEnvironment: 'jsdom',
};

5743
browser/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "@extism/runtime-browser",
"version": "0.0.1",
"version": "0.3.0",
"description": "Extism runtime in the browser",
"scripts": {
"build": "node build.js && tsc --emitDeclarationOnly --outDir dist",
@@ -17,18 +17,23 @@
],
"module": "dist/index.esm.js",
"main": "dist/index.js",
"typings": "dist/index.d.ts",
"typings": "dist/src/index.d.ts",
"author": "The Extism Authors <oss@extism.org>",
"license": "BSD-3-Clause",
"devDependencies": {
"@types/jest": "^29.2.2",
"esbuild": "^0.15.13",
"esbuild-jest": "^0.5.0",
"jest": "^29.2.2",
"jest-environment-jsdom": "^29.3.1",
"prettier": "^2.7.1",
"ts-jest": "^29.0.3",
"tslint": "^6.1.3",
"tslint-config-prettier": "^1.18.0",
"typedoc": "^0.23.20",
"typescript": "^4.8.4"
},
"dependencies": {
"@bjorn3/browser_wasi_shim": "^0.2.7"
}
}

View File

@@ -1,5 +1,5 @@
import { Manifest, PluginConfig, ManifestWasmFile, ManifestWasmData } from './manifest';
import ExtismPlugin from './plugin';
import { ExtismPlugin } from './plugin';
/**
* Can be a {@link Manifest} or just the raw bytes of the WASM module as an ArrayBuffer.
@@ -20,7 +20,7 @@ export default class ExtismContext {
* @param config - Config details for the plugin
* @returns A new Plugin scoped to this Context
*/
async newPlugin(manifest: ManifestData, config?: PluginConfig) {
async newPlugin(manifest: ManifestData, functions: Record<string, any> = {}, config?: PluginConfig) {
let moduleData: ArrayBuffer | null = null;
if (manifest instanceof ArrayBuffer) {
moduleData = manifest;
@@ -40,6 +40,6 @@ export default class ExtismContext {
throw Error(`Unsure how to interpret manifest ${manifest}`);
}
return new ExtismPlugin(moduleData, config);
return new ExtismPlugin(moduleData, functions, config);
}
}

View File

@@ -8,16 +8,17 @@ function parse(bytes: Uint8Array): any {
describe('', () => {
it('can load and call a plugin', async () => {
const data = fs.readFileSync(path.join(__dirname, '..', 'data', 'code.wasm'));
const ctx = new ExtismContext();
const plugin = await ctx.newPlugin({ wasm: [{ data: data }] });
const functions = await plugin.getExports();
expect(Object.keys(functions).filter(x => !x.startsWith("__") && x !== "memory")).toEqual(['count_vowels']);
let output = await plugin.call('count_vowels', 'this is a test');
expect(parse(output)).toEqual({ count: 4 });
output = await plugin.call('count_vowels', 'this is a test again');
expect(parse(output)).toEqual({ count: 7 });
output = await plugin.call('count_vowels', 'this is a test thrice');
expect(parse(output)).toEqual({ count: 6 });
// const data = fs.readFileSync(path.join(__dirname, '..', 'data', 'code.wasm'));
// const ctx = new ExtismContext();
// const plugin = await ctx.newPlugin({ wasm: [{ data: data }] });
// const functions = await plugin.getExports();
// expect(Object.keys(functions).filter((x) => !x.startsWith('__') && x !== 'memory')).toEqual(['count_vowels']);
// let output = await plugin.call('count_vowels', 'this is a test');
// expect(parse(output)).toEqual({ count: 4 });
// output = await plugin.call('count_vowels', 'this is a test again');
// expect(parse(output)).toEqual({ count: 7 });
// output = await plugin.call('count_vowels', 'this is a test thrice');
// expect(parse(output)).toEqual({ count: 6 });
expect(true).toEqual(true);
});
});

View File

@@ -1,3 +1,4 @@
import ExtismContext from './context';
import { ExtismFunction, ExtismPlugin } from './plugin';
export { ExtismContext };
export { ExtismContext, ExtismFunction, ExtismPlugin };

View File

@@ -1,7 +1,10 @@
import Allocator from './allocator';
import { PluginConfig } from './manifest';
import { WASI, Fd } from '@bjorn3/browser_wasi_shim';
export default class ExtismPlugin {
export type ExtismFunction = any;
export class ExtismPlugin {
moduleData: ArrayBuffer;
allocator: Allocator;
config?: PluginConfig;
@@ -9,14 +12,16 @@ export default class ExtismPlugin {
input: Uint8Array;
output: Uint8Array;
module?: WebAssembly.WebAssemblyInstantiatedSource;
functions: Record<string, ExtismFunction>;
constructor(moduleData: ArrayBuffer, config?: PluginConfig) {
constructor(moduleData: ArrayBuffer, functions: Record<string, ExtismFunction> = {}, config?: PluginConfig) {
this.moduleData = moduleData;
this.allocator = new Allocator(1024 * 1024);
this.config = config;
this.vars = {};
this.input = new Uint8Array();
this.output = new Uint8Array();
this.functions = functions;
}
async getExports(): Promise<WebAssembly.Exports> {
@@ -61,13 +66,33 @@ export default class ExtismPlugin {
return this.module;
}
const environment = this.makeEnv();
this.module = await WebAssembly.instantiate(this.moduleData, { env: environment });
const args: Array<string> = [];
const envVars: Array<string> = [];
let fds: Fd[] = [
// new XtermStdio(term), // stdin
// new XtermStdio(term), // stdout
// new XtermStdio(term), // stderr
];
let wasi = new WASI(args, envVars, fds);
let env = {
wasi_snapshot_preview1: wasi.wasiImport,
env: environment,
};
this.module = await WebAssembly.instantiate(this.moduleData, env);
// normally we would call wasi.start here but it doesn't respect when there is
// no _start function
//@ts-ignore
wasi.inst = this.module.instance;
if (this.module.instance.exports._start) {
//@ts-ignore
this.module.instance.exports._start();
}
return this.module;
}
makeEnv(): any {
const plugin = this;
return {
var env: any = {
extism_alloc(n: bigint): bigint {
return plugin.allocator.alloc(n);
},
@@ -166,5 +191,13 @@ export default class ExtismPlugin {
console.error(s);
},
};
for (const [name, func] of Object.entries(this.functions)) {
env[name] = function () {
return func.apply(plugin, arguments);
};
}
return env;
}
}

View File

@@ -1,12 +1,13 @@
{
"compilerOptions": {
"target": "es2016",
"module": "commonjs",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"declaration": true,
"strict": true,
"skipLibCheck": true
},
"exclude": ["node_modules", "dist", "**/*.test.ts"]
}
"compilerOptions": {
"target": "es2016",
"module": "commonjs",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"declaration": true,
"strict": true,
"skipLibCheck": true,
"allowJs": true
},
"exclude": ["node_modules", "dist", "**/*.test.ts"]
}

View File

@@ -1,2 +1,2 @@
build:
clang -o main main.c -lextism -L .
clang -g -o main main.c -lextism -L .

View File

@@ -9,6 +9,21 @@
#include <sys/stat.h>
#include <unistd.h>
void hello_world(ExtismCurrentPlugin *plugin, const ExtismVal *inputs,
uint64_t n_inputs, ExtismVal *outputs, uint64_t n_outputs,
void *data) {
puts("Hello from C!");
puts(data);
ExtismSize ptr_offs = inputs[0].v.i64;
uint8_t *buf = extism_current_plugin_memory(plugin) + ptr_offs;
uint64_t length = extism_current_plugin_memory_length(plugin, ptr_offs);
fwrite(buf, length, 1, stdout);
fputc('\n', stdout);
outputs[0].v.i64 = inputs[0].v.i64;
}
uint8_t *read_file(const char *filename, size_t *len) {
FILE *fp = fopen(filename, "rb");
@@ -21,6 +36,7 @@ uint8_t *read_file(const char *filename, size_t *len) {
uint8_t *data = malloc(length);
if (data == NULL) {
fclose(fp);
return NULL;
}
@@ -37,24 +53,29 @@ int main(int argc, char *argv[]) {
exit(1);
}
ExtismContext *ctx = extism_context_new();
size_t len = 0;
uint8_t *data = read_file("../wasm/code.wasm", &len);
ExtismPlugin plugin = extism_plugin_new(ctx, data, len, false);
uint8_t *data = read_file("../wasm/code-functions.wasm", &len);
ExtismValType inputs[] = {I64};
ExtismValType outputs[] = {I64};
ExtismFunction *f = extism_function_new("hello_world", inputs, 1, outputs, 1,
hello_world, "Hello, again!", NULL);
char *errmsg = NULL;
ExtismPlugin *plugin = extism_plugin_new(
data, len, (const ExtismFunction **)&f, 1, true, &errmsg);
free(data);
if (plugin < 0) {
if (plugin == NULL) {
puts(errmsg);
extism_plugin_new_error_free(errmsg);
exit(1);
}
assert(extism_plugin_call(ctx, plugin, "count_vowels", (uint8_t *)argv[1],
assert(extism_plugin_call(plugin, "count_vowels", (uint8_t *)argv[1],
strlen(argv[1])) == 0);
ExtismSize out_len = extism_plugin_output_length(ctx, plugin);
const uint8_t *output = extism_plugin_output_data(ctx, plugin);
ExtismSize out_len = extism_plugin_output_length(plugin);
const uint8_t *output = extism_plugin_output_data(plugin);
write(STDOUT_FILENO, output, out_len);
write(STDOUT_FILENO, "\n", 1);
extism_plugin_free(ctx, plugin);
extism_context_free(ctx);
extism_plugin_free(plugin);
return 0;
}

View File

@@ -34,8 +34,7 @@
},
"files": [
"php/src/Context.php",
"php/src/Plugin.php",
"php/src/extism.h"
"php/src/Plugin.php"
]
},
"autoload-dev": {

View File

@@ -1,15 +1,16 @@
FLAGS=`pkg-config --cflags --libs jsoncpp gtest` -lextism -lpthread
build-example:
$(CXX) -std=c++11 -o example -I. example.cpp $(FLAGS)
$(CXX) -std=c++14 -o example -I. example.cpp $(FLAGS)
.PHONY: example
example: build-example
./example
build-test:
$(CXX) -std=c++11 -o test/test -I. test/test.cpp $(FLAGS)
$(CXX) -std=c++14 -o test/test -I. test/test.cpp $(FLAGS)
.PHONY: test
test: build-test
cd test && ./test

View File

@@ -14,10 +14,26 @@ std::vector<uint8_t> read(const char *filename) {
}
int main(int argc, char *argv[]) {
auto wasm = read("../wasm/code.wasm");
Context context = Context();
auto wasm = read("../wasm/code-functions.wasm");
std::string tmp = "Testing";
Plugin plugin = context.plugin(wasm);
// A lambda can be used as a host function
auto hello_world = [&tmp](CurrentPlugin plugin,
const std::vector<Val> &inputs,
std::vector<Val> &outputs, void *user_data) {
std::cout << "Hello from C++" << std::endl;
std::cout << (const char *)user_data << std::endl;
std::cout << tmp << std::endl;
outputs[0].v = inputs[0].v;
};
std::vector<Function> functions = {
Function("hello_world", {ValType::I64}, {ValType::I64}, hello_world,
(void *)"Hello again!",
[](void *x) { std::cout << "Free user data" << std::endl; }),
};
Plugin plugin(wasm, true, functions);
const char *input = argc > 1 ? argv[1] : "this is a test";
ExtismSize length = strlen(input);

View File

@@ -1,7 +1,10 @@
#pragma once
#include <cstring>
#include <functional>
#include <map>
#include <memory>
#include <stdexcept>
#include <string>
#include <vector>
@@ -20,27 +23,62 @@ extern "C" {
namespace extism {
typedef std::map<std::string, std::string> Config;
class Wasm {
template <typename T> class ManifestKey {
bool is_set = false;
public:
std::string path;
std::string url;
T value;
ManifestKey(T x, bool is_set = false) : is_set(is_set) { value = x; }
void set(T x) {
value = x;
is_set = true;
}
bool empty() const { return is_set == false; }
};
class Wasm {
std::string _path;
std::string _url;
// TODO: add base64 encoded raw data
std::string hash;
ManifestKey<std::string> _hash =
ManifestKey<std::string>(std::string(), false);
public:
// Create Wasm pointing to a path
static Wasm path(std::string s, std::string hash = std::string()) {
Wasm w;
w._path = s;
if (!hash.empty()) {
w._hash.set(hash);
}
return w;
}
// Create Wasm pointing to a URL
static Wasm url(std::string s, std::string hash = std::string()) {
Wasm w;
w._url = s;
if (!hash.empty()) {
w._hash.set(hash);
}
return w;
}
#ifndef EXTISM_NO_JSON
Json::Value json() const {
Json::Value doc;
if (!this->path.empty()) {
doc["path"] = this->path;
if (!this->_path.empty()) {
doc["path"] = this->_path;
} else if (!this->_url.empty()) {
doc["url"] = this->_url;
}
if (!this->url.empty()) {
doc["url"] = this->url;
}
if (!this->hash.empty()) {
doc["hash"] = this->hash;
if (!this->_hash.empty()) {
doc["hash"] = this->_hash.value;
}
return doc;
@@ -52,14 +90,23 @@ class Manifest {
public:
Config config;
std::vector<Wasm> wasm;
std::vector<std::string> allowed_hosts;
ManifestKey<std::vector<std::string>> allowed_hosts;
ManifestKey<std::map<std::string, std::string>> allowed_paths;
ManifestKey<uint64_t> timeout_ms;
// Empty manifest
Manifest()
: timeout_ms(0, false), allowed_hosts(std::vector<std::string>(), false),
allowed_paths(std::map<std::string, std::string>(), false) {}
// Create manifest with a single Wasm from a path
static Manifest path(std::string s, std::string hash = std::string()) {
Manifest m;
m.add_wasm_path(s, hash);
return m;
}
// Create manifest with a single Wasm from a URL
static Manifest url(std::string s, std::string hash = std::string()) {
Manifest m;
m.add_wasm_url(s, hash);
@@ -88,43 +135,71 @@ public:
if (!this->allowed_hosts.empty()) {
Json::Value h;
for (auto s : this->allowed_hosts) {
for (auto s : this->allowed_hosts.value) {
h.append(s);
}
doc["allowed_hosts"] = h;
}
if (!this->allowed_paths.empty()) {
Json::Value h;
for (auto k : this->allowed_paths.value) {
h[k.first] = k.second;
}
doc["allowed_paths"] = h;
}
if (!this->timeout_ms.empty()) {
doc["timeout_ms"] = Json::Value(this->timeout_ms.value);
}
Json::FastWriter writer;
return writer.write(doc);
}
#endif
// Add Wasm from path
void add_wasm_path(std::string s, std::string hash = std::string()) {
Wasm w;
w.path = s;
w.hash = hash;
Wasm w = Wasm::path(s, hash);
this->wasm.push_back(w);
}
// Add Wasm from URL
void add_wasm_url(std::string u, std::string hash = std::string()) {
Wasm w;
w.url = u;
w.hash = hash;
Wasm w = Wasm::url(u, hash);
this->wasm.push_back(w);
}
void allow_host(std::string host) { this->allowed_hosts.push_back(host); }
// Add host to allowed hosts
void allow_host(std::string host) {
if (this->allowed_hosts.empty()) {
this->allowed_hosts.set(std::vector<std::string>{});
}
this->allowed_hosts.value.push_back(host);
}
// Add path to allowed paths
void allow_path(std::string src, std::string dest = std::string()) {
if (this->allowed_paths.empty()) {
this->allowed_paths.set(std::map<std::string, std::string>{});
}
if (dest.empty()) {
dest = src;
}
this->allowed_paths.value[src] = dest;
}
// Set timeout
void set_timeout_ms(uint64_t ms) { this->timeout_ms = ms; }
// Set config key/value
void set_config(std::string k, std::string v) { this->config[k] = v; }
};
class Error : public std::exception {
private:
std::string message;
class Error : public std::runtime_error {
public:
Error(std::string msg) : message(msg) {}
const char *what() { return message.c_str(); }
Error(std::string msg) : std::runtime_error(msg) {}
};
class Buffer {
@@ -143,63 +218,172 @@ public:
}
};
class Plugin {
std::shared_ptr<ExtismContext> context;
ExtismPlugin plugin;
typedef ExtismValType ValType;
typedef ExtismValUnion ValUnion;
typedef ExtismVal Val;
typedef uint64_t MemoryHandle;
class CurrentPlugin {
ExtismCurrentPlugin *pointer;
public:
Plugin(std::shared_ptr<ExtismContext> ctx, const uint8_t *wasm,
ExtismSize length, bool with_wasi = false) {
this->plugin = extism_plugin_new(ctx.get(), wasm, length, with_wasi);
if (this->plugin < 0) {
const char *err = extism_error(ctx.get(), -1);
throw Error(err == nullptr ? "Unable to load plugin" : err);
CurrentPlugin(ExtismCurrentPlugin *p) : pointer(p) {}
uint8_t *memory() { return extism_current_plugin_memory(this->pointer); }
uint8_t *memory(MemoryHandle offs) { return this->memory() + offs; }
ExtismSize memoryLength(MemoryHandle offs) {
return extism_current_plugin_memory_length(this->pointer, offs);
}
MemoryHandle alloc(ExtismSize size) {
return extism_current_plugin_memory_alloc(this->pointer, size);
}
void free(MemoryHandle handle) {
extism_current_plugin_memory_free(this->pointer, handle);
}
void returnString(Val &output, const std::string &s) {
this->returnBytes(output, (const uint8_t *)s.c_str(), s.size());
}
void returnBytes(Val &output, const uint8_t *bytes, size_t len) {
auto offs = this->alloc(len);
memcpy(this->memory() + offs, bytes, len);
output.v.i64 = offs;
}
uint8_t *inputBytes(Val &inp, size_t *length = nullptr) {
if (inp.t != ValType::I64) {
return nullptr;
}
this->context = ctx;
if (length != nullptr) {
*length = this->memoryLength(inp.v.i64);
}
return this->memory() + inp.v.i64;
}
std::string inputString(Val &inp) {
size_t length = 0;
char *buf = (char *)this->inputBytes(inp, &length);
return std::string(buf, length);
}
};
typedef std::function<void(CurrentPlugin, const std::vector<Val> &,
std::vector<Val> &, void *user_data)>
FunctionType;
struct UserData {
FunctionType func;
void *user_data = NULL;
std::function<void(void *)> free_user_data;
};
static void function_callback(ExtismCurrentPlugin *plugin,
const ExtismVal *inputs, ExtismSize n_inputs,
ExtismVal *outputs, ExtismSize n_outputs,
void *user_data) {
UserData *data = (UserData *)user_data;
const std::vector<Val> inp(inputs, inputs + n_inputs);
std::vector<Val> outp(outputs, outputs + n_outputs);
data->func(CurrentPlugin(plugin), inp, outp, data->user_data);
for (ExtismSize i = 0; i < n_outputs; i++) {
outputs[i] = outp[i];
}
}
static void free_user_data(void *user_data) {
UserData *data = (UserData *)user_data;
if (data->user_data != NULL && data->free_user_data != NULL) {
data->free_user_data(data->user_data);
}
}
class Function {
std::shared_ptr<ExtismFunction> func;
std::string name;
UserData user_data;
public:
Function(std::string name, const std::vector<ValType> inputs,
const std::vector<ValType> outputs, FunctionType f,
void *user_data = NULL, std::function<void(void *)> free = nullptr)
: name(name) {
this->user_data.func = f;
this->user_data.user_data = user_data;
this->user_data.free_user_data = free;
auto ptr = extism_function_new(
this->name.c_str(), inputs.data(), inputs.size(), outputs.data(),
outputs.size(), function_callback, &this->user_data, free_user_data);
this->func = std::shared_ptr<ExtismFunction>(ptr, extism_function_free);
}
void setNamespace(std::string s) {
extism_function_set_namespace(this->func.get(), s.c_str());
}
Function(const Function &f) { this->func = f.func; }
ExtismFunction *get() { return this->func.get(); }
};
class CancelHandle {
const ExtismCancelHandle *handle;
public:
CancelHandle(const ExtismCancelHandle *x) : handle(x){};
bool cancel() { return extism_plugin_cancel(this->handle); }
};
class Plugin {
std::vector<Function> functions;
public:
ExtismPlugin *plugin;
// Create a new plugin
Plugin(const uint8_t *wasm, ExtismSize length, bool with_wasi = false,
std::vector<Function> functions = std::vector<Function>())
: functions(functions) {
std::vector<const ExtismFunction *> ptrs;
for (auto i : this->functions) {
ptrs.push_back(i.get());
}
char *errmsg = nullptr;
this->plugin = extism_plugin_new(wasm, length, ptrs.data(), ptrs.size(),
with_wasi, &errmsg);
if (this->plugin == nullptr) {
std::string s(errmsg);
extism_plugin_new_error_free(errmsg);
throw Error(s);
}
}
Plugin(const std::string &str, bool with_wasi = false,
std::vector<Function> functions = {})
: Plugin((const uint8_t *)str.c_str(), str.size(), with_wasi, functions) {
}
Plugin(const std::vector<uint8_t> &data, bool with_wasi = false,
std::vector<Function> functions = {})
: Plugin(data.data(), data.size(), with_wasi, functions) {}
CancelHandle cancelHandle() {
return CancelHandle(extism_plugin_cancel_handle(this->plugin));
}
#ifndef EXTISM_NO_JSON
Plugin(std::shared_ptr<ExtismContext> ctx, const Manifest &manifest,
bool with_wasi = false) {
auto buffer = manifest.json();
this->plugin = extism_plugin_new(ctx.get(), (const uint8_t *)buffer.c_str(),
buffer.size(), with_wasi);
if (this->plugin < 0) {
const char *err = extism_error(ctx.get(), -1);
throw Error(err == nullptr ? "Unable to load plugin from manifest" : err);
}
this->context = ctx;
}
#endif
// Create a new plugin from Manifest
Plugin(const Manifest &manifest, bool with_wasi = false,
std::vector<Function> functions = {})
: Plugin(manifest.json().c_str(), with_wasi, functions) {}
~Plugin() {
extism_plugin_free(this->context.get(), this->plugin);
this->plugin = -1;
}
ExtismPlugin id() const { return this->plugin; }
ExtismContext *get_context() const { return this->context.get(); }
void update(const uint8_t *wasm, size_t length, bool with_wasi = false) {
bool b = extism_plugin_update(this->context.get(), this->plugin, wasm,
length, with_wasi);
if (!b) {
const char *err = extism_error(this->context.get(), -1);
throw Error(err == nullptr ? "Unable to update plugin" : err);
}
}
#ifndef EXTISM_NO_JSON
void update(const Manifest &manifest, bool with_wasi = false) {
auto buffer = manifest.json();
bool b = extism_plugin_update(this->context.get(), this->plugin,
(const uint8_t *)buffer.c_str(),
buffer.size(), with_wasi);
if (!b) {
const char *err = extism_error(this->context.get(), -1);
throw Error(err == nullptr ? "Unable to update plugin" : err);
}
extism_plugin_free(this->plugin);
this->plugin = nullptr;
}
void config(const Config &data) {
@@ -216,10 +400,9 @@ public:
#endif
void config(const char *json, size_t length) {
bool b = extism_plugin_config(this->context.get(), this->plugin,
(const uint8_t *)json, length);
bool b = extism_plugin_config(this->plugin, (const uint8_t *)json, length);
if (!b) {
const char *err = extism_error(this->context.get(), this->plugin);
const char *err = extism_plugin_error(this->plugin);
throw Error(err == nullptr ? "Unable to update plugin config" : err);
}
}
@@ -228,12 +411,13 @@ public:
this->config(json.c_str(), json.size());
}
// Call a plugin
Buffer call(const std::string &func, const uint8_t *input,
ExtismSize input_length) const {
int32_t rc = extism_plugin_call(this->context.get(), this->plugin,
func.c_str(), input, input_length);
int32_t rc =
extism_plugin_call(this->plugin, func.c_str(), input, input_length);
if (rc != 0) {
const char *error = extism_error(this->context.get(), this->plugin);
const char *error = extism_plugin_error(this->plugin);
if (error == nullptr) {
throw Error("extism_call failed");
}
@@ -241,63 +425,34 @@ public:
throw Error(error);
}
ExtismSize length =
extism_plugin_output_length(this->context.get(), this->plugin);
const uint8_t *ptr =
extism_plugin_output_data(this->context.get(), this->plugin);
ExtismSize length = extism_plugin_output_length(this->plugin);
const uint8_t *ptr = extism_plugin_output_data(this->plugin);
return Buffer(ptr, length);
}
// Call a plugin function with std::vector<uint8_t> input
Buffer call(const std::string &func,
const std::vector<uint8_t> &input) const {
return this->call(func, input.data(), input.size());
}
Buffer call(const std::string &func, const std::string &input) const {
// Call a plugin function with string input
Buffer call(const std::string &func,
const std::string &input = std::string()) const {
return this->call(func, (const uint8_t *)input.c_str(), input.size());
}
bool function_exists(const std::string &func) const {
return extism_plugin_function_exists(this->context.get(), this->plugin,
func.c_str());
// Returns true if the specified function exists
bool functionExists(const std::string &func) const {
return extism_plugin_function_exists(this->plugin, func.c_str());
}
};
class Context {
public:
std::shared_ptr<ExtismContext> pointer;
Context() {
this->pointer = std::shared_ptr<ExtismContext>(extism_context_new(),
extism_context_free);
}
Plugin plugin(const uint8_t *wasm, size_t length,
bool with_wasi = false) const {
return Plugin(this->pointer, wasm, length, with_wasi);
}
Plugin plugin(const std::string &str, bool with_wasi = false) const {
return Plugin(this->pointer, (const uint8_t *)str.c_str(), str.size(),
with_wasi);
}
Plugin plugin(const std::vector<uint8_t> &data,
bool with_wasi = false) const {
return Plugin(this->pointer, data.data(), data.size(), with_wasi);
}
#ifndef EXTISM_NO_JSON
Plugin plugin(const Manifest &manifest, bool with_wasi = false) const {
return Plugin(this->pointer, manifest, with_wasi);
}
#endif
void reset() { extism_context_reset(this->pointer.get()); }
};
inline bool set_log_file(const char *filename, const char *level) {
// Set global log file for plugins
inline bool setLogFile(const char *filename, const char *level) {
return extism_log_file(filename, level);
}
// Get libextism version
inline std::string version() { return std::string(extism_version()); }
} // namespace extism

View File

@@ -1,6 +1,7 @@
#include "../extism.hpp"
#include <fstream>
#include <thread>
#include <gtest/gtest.h>
@@ -10,46 +11,38 @@ std::vector<uint8_t> read(const char *filename) {
std::istreambuf_iterator<char>());
}
const std::string code = "../../wasm/code.wasm";
namespace {
using namespace extism;
TEST(Context, Basic) {
Context context;
ASSERT_NE(context.pointer, nullptr);
}
TEST(Plugin, Manifest) {
Context context;
Manifest manifest = Manifest::path("code.wasm");
Manifest manifest = Manifest::path(code);
manifest.set_config("a", "1");
ASSERT_NO_THROW(Plugin plugin = context.plugin(manifest));
Plugin plugin = context.plugin(manifest);
Plugin plugin(manifest);
Buffer buf = plugin.call("count_vowels", "this is a test");
ASSERT_EQ((std::string)buf, "{\"count\": 4}");
}
TEST(Plugin, BadManifest) {
Context context;
Manifest manifest;
ASSERT_THROW(Plugin plugin = context.plugin(manifest), Error);
ASSERT_THROW(Plugin plugin(manifest), Error);
}
TEST(Plugin, Bytes) {
Context context;
auto wasm = read("code.wasm");
ASSERT_NO_THROW(Plugin plugin = context.plugin(wasm));
Plugin plugin = context.plugin(wasm);
auto wasm = read(code.c_str());
ASSERT_NO_THROW(Plugin plugin(wasm));
Plugin plugin(wasm);
Buffer buf = plugin.call("count_vowels", "this is another test");
ASSERT_EQ(buf.string(), "{\"count\": 6}");
}
TEST(Plugin, UpdateConfig) {
Context context;
auto wasm = read("code.wasm");
Plugin plugin = context.plugin(wasm);
auto wasm = read(code.c_str());
Plugin plugin(wasm);
Config config;
config["abc"] = "123";
@@ -57,12 +50,63 @@ TEST(Plugin, UpdateConfig) {
}
TEST(Plugin, FunctionExists) {
Context context;
auto wasm = read("code.wasm");
Plugin plugin = context.plugin(wasm);
auto wasm = read(code.c_str());
Plugin plugin(wasm);
ASSERT_FALSE(plugin.function_exists("bad_function"));
ASSERT_TRUE(plugin.function_exists("count_vowels"));
ASSERT_FALSE(plugin.functionExists("bad_function"));
ASSERT_TRUE(plugin.functionExists("count_vowels"));
}
TEST(Plugin, HostFunction) {
auto wasm = read("../../wasm/code-functions.wasm");
auto t = std::vector<ValType>{ValType::I64};
Function hello_world =
Function("hello_world", t, t,
[](CurrentPlugin plugin, const std::vector<Val> &params,
std::vector<Val> &results, void *user_data) {
auto offs = plugin.alloc(4);
memcpy(plugin.memory() + offs, "test", 4);
results[0].v.i64 = (int64_t)offs;
});
auto functions = std::vector<Function>{
hello_world,
};
Plugin plugin(wasm, true, functions);
auto buf = plugin.call("count_vowels", "aaa");
ASSERT_EQ(buf.length, 4);
ASSERT_EQ((std::string)buf, "test");
}
void callThread(Plugin *plugin) {
auto buf = plugin->call("count_vowels", "aaa").string();
ASSERT_EQ(buf.size(), 10);
ASSERT_EQ(buf, "testing123");
}
TEST(Plugin, MultipleThreads) {
auto wasm = read("../../wasm/code-functions.wasm");
auto t = std::vector<ValType>{ValType::I64};
Function hello_world =
Function("hello_world", t, t,
[](CurrentPlugin plugin, const std::vector<Val> &params,
std::vector<Val> &results, void *user_data) {
auto offs = plugin.alloc(10);
memcpy(plugin.memory() + offs, "testing123", 10);
results[0].v.i64 = (int64_t)offs;
});
auto functions = std::vector<Function>{
hello_world,
};
Plugin plugin(wasm, true, functions);
std::vector<std::thread> threads;
for (int i = 0; i < 3; i++) {
threads.push_back(std::thread(callThread, &plugin));
}
for (auto &th : threads) {
th.join();
}
}
}; // namespace

479
dotnet/.gitignore vendored Normal file
View File

@@ -0,0 +1,479 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET
project.lock.json
project.fragment.lock.json
artifacts/
# Tye
.tye/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.tlog
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
*.vbp
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
*.dsw
*.dsp
# Visual Studio 6 technical files
*.ncb
*.aps
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# Visual Studio History (VSHistory) files
.vshistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
# VS Code files for those working on multiple tools
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
# Local History for Visual Studio Code
.history/
# Windows Installer files from build outputs
*.cab
*.msi
*.msix
*.msm
*.msp
# JetBrains Rider
*.sln.iml
##
## Visual studio for Mac
##
# globs
Makefile.in
*.userprefs
*.usertasks
config.make
config.status
aclocal.m4
install-sh
autom4te.cache/
*.tar.gz
tarballs/
test-results/
# Mac bundle stuff
*.dmg
*.app
# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore
# Windows thumbnail cache files
Thumbs.db
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
nuget/runtimes/win-x64.dll

37
dotnet/Extism.sln Normal file
View File

@@ -0,0 +1,37 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.4.33110.190
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Extism.Sdk", "src\Extism.Sdk\Extism.Sdk.csproj", "{1FAA7B6E-249C-4E4C-AE7A-A493A9D24475}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Extism.Sdk.Tests", "test\Extism.Sdk\Extism.Sdk.Tests.csproj", "{DB440D61-C781-4C59-9223-9A79CC9FB4E7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Extism.Sdk.Sample", "samples\Extism.Sdk.Sample\Extism.Sdk.Sample.csproj", "{2232E572-E8BA-46A1-AF31-E4168960DB75}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1FAA7B6E-249C-4E4C-AE7A-A493A9D24475}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1FAA7B6E-249C-4E4C-AE7A-A493A9D24475}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1FAA7B6E-249C-4E4C-AE7A-A493A9D24475}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1FAA7B6E-249C-4E4C-AE7A-A493A9D24475}.Release|Any CPU.Build.0 = Release|Any CPU
{DB440D61-C781-4C59-9223-9A79CC9FB4E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DB440D61-C781-4C59-9223-9A79CC9FB4E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DB440D61-C781-4C59-9223-9A79CC9FB4E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DB440D61-C781-4C59-9223-9A79CC9FB4E7}.Release|Any CPU.Build.0 = Release|Any CPU
{2232E572-E8BA-46A1-AF31-E4168960DB75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2232E572-E8BA-46A1-AF31-E4168960DB75}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2232E572-E8BA-46A1-AF31-E4168960DB75}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2232E572-E8BA-46A1-AF31-E4168960DB75}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {2B6BF267-F2A5-4CB5-8DFD-F11CC8787E6B}
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,24 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1</TargetFrameworks>
<NoBuild>true</NoBuild>
<IncludeBuildOutput>false</IncludeBuildOutput>
</PropertyGroup>
<PropertyGroup>
<PackageId>Extism.runtime.win-x64</PackageId>
<Version>0.7.0</Version>
<Authors>Extism Contributors</Authors>
<Description>Internal implementation package for Extism to work on Windows x64</Description>
<Tags>extism, wasm, plugin</Tags>
<PackageLicenseExpression>BSD-3-Clause</PackageLicenseExpression>
</PropertyGroup>
<ItemGroup>
<Content Include="runtimes/win-x64.dll"
CopyToOutputDirectory="Always"
Pack="true"
PackagePath="runtimes\win-x64\native\extism.dll" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1 @@
win-x64.dll

View File

@@ -0,0 +1,29 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<ItemGroup>
<None Include="..\..\..\wasm\code.wasm" Link="code.wasm">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="..\..\..\wasm\code-functions.wasm" Link="code-functions.wasm">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<!-- <PackageReference Include="Extism.runtime.win-x64" Version="0.7.0" /> -->
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Extism.Sdk\Extism.Sdk.csproj" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,49 @@
using Extism.Sdk;
using Extism.Sdk.Native;
using System.Runtime.InteropServices;
using System.Text;
Console.WriteLine($"Version: {Plugin.ExtismVersion()}");
var userData = Marshal.StringToHGlobalAnsi("Hello again!");
using var helloWorld = new HostFunction(
"hello_world",
"env",
new[] { ExtismValType.I64 },
new[] { ExtismValType.I64 },
userData,
HelloWorld);
void HelloWorld(CurrentPlugin plugin, Span<ExtismVal> inputs, Span<ExtismVal> outputs, nint data)
{
Console.WriteLine("Hello from .NET!");
var text = Marshal.PtrToStringAnsi(data);
Console.WriteLine(text);
var input = plugin.ReadString(new nint(inputs[0].v.i64));
Console.WriteLine($"Input: {input}");
outputs[0].v.i64 = plugin.WriteString(input);
}
var manifest = new Manifest(new PathWasmSource("./code-functions.wasm"))
{
Config = new Dictionary<string, string>
{
{ "my-key", "some cool value" }
},
};
using var plugin = new Plugin(manifest, new[] { helloWorld }, withWasi: true);
Console.WriteLine("Plugin creatd!!!");
var output = Encoding.UTF8.GetString(
plugin.CallFunction("count_vowels", Encoding.UTF8.GetBytes("Hello World!"))
);
Console.WriteLine($"Output: {output}");

View File

@@ -0,0 +1,5 @@
## Example 1
This example shows how you can use the library in the most basic way.
It loads up the sample wasm plugin and lets you to pass inputs to it and show the ouput.
**Please note that on Windows you have to manually copy the `extism.dll` file to the ouput directory.**

Binary file not shown.

View File

@@ -0,0 +1,24 @@
<!-- Recommended practices for publishing nuget packages from: https://devblogs.microsoft.com/dotnet/producing-packages-with-source-link/ -->
<Project>
<PropertyGroup>
<!-- Publish the repository URL in the built .nupkg (in the NuSpec <Repository> element) -->
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<!-- Embed source files that are not tracked by the source control manager in the PDB -->
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<!-- Recommended: Embed symbols containing Source Link in the main file (exe/dll) -->
<DebugType>embedded</DebugType>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,138 @@
using Extism.Sdk.Native;
using System.Text;
namespace Extism.Sdk
{
/// <summary>
/// Represents the current plugin. Can only be used within <see cref="HostFunction"/>s.
/// </summary>
public class CurrentPlugin
{
internal CurrentPlugin(nint nativeHandle)
{
NativeHandle = nativeHandle;
}
internal nint NativeHandle { get; }
/// <summary>
/// Returns a pointer to the memory of the currently running plugin.
/// NOTE: this should only be called from host functions.
/// </summary>
/// <returns></returns>
public nint GetMemory()
{
return LibExtism.extism_current_plugin_memory(NativeHandle);
}
/// <summary>
/// Reads a string from a memory block using UTF8.
/// </summary>
/// <param name="pointer"></param>
/// <returns></returns>
public string ReadString(nint pointer)
{
return ReadString(pointer, Encoding.UTF8);
}
/// <summary>
/// Reads a string form a memory block.
/// </summary>
/// <param name="pointer"></param>
/// <param name="encoding"></param>
/// <returns></returns>
public string ReadString(nint pointer, Encoding encoding)
{
var buffer = ReadBytes(pointer);
return encoding.GetString(buffer);
}
/// <summary>
/// Returns a span of bytes for a given block.
/// </summary>
/// <param name="pointer"></param>
/// <returns></returns>
public unsafe Span<byte> ReadBytes(nint pointer)
{
var mem = GetMemory();
var length = (int)BlockLength(pointer);
var ptr = (byte*)mem + pointer;
return new Span<byte>(ptr, length);
}
/// <summary>
/// Writes a string into the current plugin memory using UTF-8 encoding and returns the pointer of the block.
/// </summary>
/// <param name="value"></param>
public nint WriteString(string value)
=> WriteString(value, Encoding.UTF8);
/// <summary>
/// Writes a string into the current plugin memory and returns the pointer of the block.
/// </summary>
/// <param name="value"></param>
/// <param name="encoding"></param>
public nint WriteString(string value, Encoding encoding)
{
var bytes = encoding.GetBytes(value);
var pointer = AllocateBlock(bytes.Length);
WriteBytes(pointer, bytes);
return pointer;
}
/// <summary>
/// Writes a byte array into a block of memory.
/// </summary>
/// <param name="pointer"></param>
/// <param name="bytes"></param>
public unsafe void WriteBytes(nint pointer, Span<byte> bytes)
{
var length = BlockLength(pointer);
if (length < bytes.Length)
{
throw new InvalidOperationException("Destination block length is less than source block length.");
}
var mem = GetMemory();
var ptr = (void*)(mem + pointer);
var destination = new Span<byte>(ptr, bytes.Length);
bytes.CopyTo(destination);
}
/// <summary>
/// Frees a block of memory belonging to the current plugin.
/// </summary>
/// <param name="pointer"></param>
public void FreeBlock(nint pointer)
{
LibExtism.extism_current_plugin_memory_free(NativeHandle, pointer);
}
/// <summary>
/// Allocate a memory block in the currently running plugin.
///
/// </summary>
/// <param name="length"></param>
/// <returns></returns>
public nint AllocateBlock(long length)
{
return LibExtism.extism_current_plugin_memory_alloc(NativeHandle, length);
}
/// <summary>
/// Get the length of an allocated block.
/// NOTE: this should only be called from host functions.
/// </summary>
/// <param name="pointer"></param>
/// <returns></returns>
public long BlockLength(nint pointer)
{
return LibExtism.extism_current_plugin_memory_length(NativeHandle, pointer);
}
}
}

View File

@@ -0,0 +1,29 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<LangVersion>11</LangVersion>
</PropertyGroup>
<PropertyGroup>
<PackageId>Extism.Sdk</PackageId>
<Version>0.7.0</Version>
<Authors>Extism Contributors</Authors>
<Description>Extism SDK that allows hosting Extism plugins in .NET apps.</Description>
<Tags>extism, wasm, plugin</Tags>
<PackageLicenseExpression>BSD-3-Clause</PackageLicenseExpression>
<PackageReadmeFile>README.md</PackageReadmeFile>
</PropertyGroup>
<ItemGroup>
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
<PackageReference Include="System.Text.Json" Version="7.0.3" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,40 @@
namespace Extism.Sdk.Native;
using System;
/// <summary>
/// Represents errors that occur during calling Extism functions.
/// </summary>
public class ExtismException : Exception
{
/// <summary>
/// Initializes a new instance of the <see cref="ExtismException"/> class.
/// </summary>
public ExtismException()
{
}
/// <summary>
/// Initializes a new instance of the <see cref="ExtismException"/> class with a specified error message.
/// </summary>
/// <param name="message">The message that describes the error .</param>
public ExtismException(string message)
: base(message)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="ExtismException"/> class
/// with a specified error message and a reference to the inner exception
/// that is the cause of this exception.
/// </summary>
/// <param name="message">The message that describes the error.</param>
/// <param name="innerException">
/// The exception that is the cause of the current exception, or a null reference
/// (Nothing in Visual Basic) if no inner exception is specified.
/// </param>
public ExtismException(string message, Exception innerException)
: base(message, innerException)
{
}
}

View File

@@ -0,0 +1,146 @@
using Extism.Sdk.Native;
using System.Diagnostics.CodeAnalysis;
namespace Extism.Sdk
{
/// <summary>
/// A host function signature.
/// </summary>
/// <param name="plugin">Plugin Index</param>
/// <param name="inputs">Input parameters</param>
/// <param name="outputs">Output parameters, the host function can change this.</param>
/// <param name="userData">A data passed in during Host Function creation.</param>
public delegate void ExtismFunction(CurrentPlugin plugin, Span<ExtismVal> inputs, Span<ExtismVal> outputs, IntPtr userData);
/// <summary>
/// A function provided by the host that plugins can call.
/// </summary>
public class HostFunction : IDisposable
{
private const int DisposedMarker = 1;
private int _disposed;
/// <summary>
/// Registers a Host Function.
/// </summary>
/// <param name="functionName">The literal name of the function, how it would be called from a <see cref="Plugin"/>.</param>
/// <param name="inputTypes">The types of the input arguments/parameters the <see cref="Plugin"/> caller will provide.</param>
/// <param name="outputTypes">The types of the output returned from the host function to the <see cref="Plugin"/>.</param>
/// <param name="userData">An opaque pointer to an object from the host, accessible to the <see cref="Plugin"/>.
/// NOTE: it is the shared responsibility of the host and <see cref="Plugin"/> to cast/dereference this value properly.</param>
/// <param name="hostFunction"></param>
public HostFunction(
string functionName,
Span<ExtismValType> inputTypes,
Span<ExtismValType> outputTypes,
IntPtr userData,
ExtismFunction hostFunction) :
this(functionName, "", inputTypes, outputTypes, userData, hostFunction)
{
}
/// <summary>
/// Registers a Host Function.
/// </summary>
/// <param name="functionName">The literal name of the function, how it would be called from a <see cref="Plugin"/>.</param>
/// <param name="namespace">Function namespace.</param>
/// <param name="inputTypes">The types of the input arguments/parameters the <see cref="Plugin"/> caller will provide.</param>
/// <param name="outputTypes">The types of the output returned from the host function to the <see cref="Plugin"/>.</param>
/// <param name="userData">An opaque pointer to an object from the host, accessible to the <see cref="Plugin"/>.
/// NOTE: it is the shared responsibility of the host and <see cref="Plugin"/> to cast/dereference this value properly.</param>
/// <param name="hostFunction"></param>
unsafe public HostFunction(
string functionName,
string @namespace,
Span<ExtismValType> inputTypes,
Span<ExtismValType> outputTypes,
IntPtr userData,
ExtismFunction hostFunction)
{
fixed (ExtismValType* inputs = inputTypes)
fixed (ExtismValType* outputs = outputTypes)
{
NativeHandle = LibExtism.extism_function_new(functionName, inputs, inputTypes.Length, outputs, outputTypes.Length, CallbackImpl, userData, IntPtr.Zero);
}
if (!string.IsNullOrEmpty(@namespace))
{
LibExtism.extism_function_set_namespace(NativeHandle, @namespace);
}
void CallbackImpl(
nint plugin,
ExtismVal* inputsPtr,
uint n_inputs,
ExtismVal* outputsPtr,
uint n_outputs,
IntPtr data)
{
var outputs = new Span<ExtismVal>(outputsPtr, (int)n_outputs);
var inputs = new Span<ExtismVal>(inputsPtr, (int)n_inputs);
hostFunction(new CurrentPlugin(plugin), inputs, outputs, data);
}
}
internal IntPtr NativeHandle { get; }
/// <summary>
/// Frees all resources held by this Host Function.
/// </summary>
public void Dispose()
{
if (Interlocked.Exchange(ref _disposed, DisposedMarker) == DisposedMarker)
{
// Already disposed.
return;
}
Dispose(true);
GC.SuppressFinalize(this);
}
/// <summary>
/// Throw an appropriate exception if the Host Function has been disposed.
/// </summary>
/// <exception cref="ObjectDisposedException"></exception>
protected void CheckNotDisposed()
{
Interlocked.MemoryBarrier();
if (_disposed == DisposedMarker)
{
ThrowDisposedException();
}
}
[DoesNotReturn]
private static void ThrowDisposedException()
{
throw new ObjectDisposedException(nameof(HostFunction));
}
/// <summary>
/// Frees all resources held by this Host Function.
/// </summary>
unsafe protected virtual void Dispose(bool disposing)
{
if (disposing)
{
// Free up any managed resources here
}
// Free up unmanaged resources
LibExtism.extism_function_free(NativeHandle);
}
/// <summary>
/// Destructs the current Host Function and frees all resources used by it.
/// </summary>
~HostFunction()
{
Dispose(false);
}
}
}

View File

@@ -0,0 +1,310 @@
using System.Runtime.InteropServices;
namespace Extism.Sdk.Native;
/// <summary>
/// A union type for host function argument/return values.
/// </summary>
[StructLayout(LayoutKind.Explicit)]
public struct ExtismValUnion
{
/// <summary>
/// Set this for 32 bit integers
/// </summary>
[FieldOffset(0)]
public int i32;
/// <summary>
/// Set this for 64 bit integers
/// </summary>
[FieldOffset(0)]
public long i64;
/// <summary>
/// Set this for 32 bit floats
/// </summary>
[FieldOffset(0)]
public float f32;
/// <summary>
/// Set this for 64 bit floats
/// </summary>
[FieldOffset(0)]
public double f64;
}
/// <summary>
/// Represents Wasm data types that Extism can understand
/// </summary>
public enum ExtismValType : byte
{
/// <summary>
/// Signed 32 bit integer. Equivalent of <see cref="int"/> or <see cref="uint"/>
/// </summary>
I32,
/// <summary>
/// Signed 64 bit integer. Equivalent of <see cref="long"/> or <see cref="ulong"/>
/// </summary>
I64,
/// <summary>
/// Floating point 32 bit integer. Equivalent of <see cref="float"/>
/// </summary>
F32,
/// <summary>
/// Floating point 64 bit integer. Equivalent of <see cref="double"/>
/// </summary>
F64,
/// <summary>
/// A 128 bit number.
/// </summary>
V128,
/// <summary>
/// A reference to opaque data in the Wasm instance.
/// </summary>
FuncRef,
/// <summary>
/// A reference to opaque data in the Wasm instance.
/// </summary>
ExternRef
}
/// <summary>
/// `ExtismVal` holds the type and value of a function argument/return
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct ExtismVal
{
/// <summary>
/// The type for the argument
/// </summary>
public ExtismValType t;
/// <summary>
/// The value for the argument
/// </summary>
public ExtismValUnion v;
}
/// <summary>
/// Functions exposed by the native Extism library.
/// </summary>
internal static class LibExtism
{
/// <summary>
/// An Extism Plugin
/// </summary>
[StructLayout(LayoutKind.Sequential)]
internal struct ExtismPlugin { }
/// <summary>
/// Host function signature
/// </summary>
/// <param name="plugin"></param>
/// <param name="inputs"></param>
/// <param name="n_inputs"></param>
/// <param name="outputs"></param>
/// <param name="n_outputs"></param>
/// <param name="data"></param>
unsafe internal delegate void InternalExtismFunction(nint plugin, ExtismVal* inputs, uint n_inputs, ExtismVal* outputs, uint n_outputs, IntPtr data);
/// <summary>
/// Returns a pointer to the memory of the currently running plugin.
/// NOTE: this should only be called from host functions.
/// </summary>
/// <param name="plugin"></param>
/// <returns></returns>
[DllImport("extism", EntryPoint = "extism_current_plugin_memory")]
internal static extern IntPtr extism_current_plugin_memory(nint plugin);
/// <summary>
/// Allocate a memory block in the currently running plugin
/// </summary>
/// <param name="plugin"></param>
/// <param name="n"></param>
/// <returns></returns>
[DllImport("extism", EntryPoint = "extism_current_plugin_memory_alloc")]
internal static extern IntPtr extism_current_plugin_memory_alloc(nint plugin, long n);
/// <summary>
/// Get the length of an allocated block.
/// NOTE: this should only be called from host functions.
/// </summary>
/// <param name="plugin"></param>
/// <param name="n"></param>
/// <returns></returns>
[DllImport("extism", EntryPoint = "extism_current_plugin_memory_length")]
internal static extern long extism_current_plugin_memory_length(nint plugin, long n);
/// <summary>
/// Get the length of an allocated block.
/// NOTE: this should only be called from host functions.
/// </summary>
/// <param name="plugin"></param>
/// <param name="ptr"></param>
[DllImport("extism", EntryPoint = "extism_current_plugin_memory_free")]
internal static extern void extism_current_plugin_memory_free(nint plugin, IntPtr ptr);
/// <summary>
/// Create a new host function.
/// </summary>
/// <param name="name">function name, this should be valid UTF-8</param>
/// <param name="inputs">argument types</param>
/// <param name="nInputs">number of argument types</param>
/// <param name="outputs">return types</param>
/// <param name="nOutputs">number of return types</param>
/// <param name="func">the function to call</param>
/// <param name="userData">a pointer that will be passed to the function when it's called this value should live as long as the function exists</param>
/// <param name="freeUserData">a callback to release the `user_data` value when the resulting `ExtismFunction` is freed.</param>
/// <returns></returns>
[DllImport("extism", EntryPoint = "extism_function_new")]
unsafe internal static extern IntPtr extism_function_new(string name, ExtismValType* inputs, long nInputs, ExtismValType* outputs, long nOutputs, InternalExtismFunction func, IntPtr userData, IntPtr freeUserData);
/// <summary>
/// Set the namespace of an <see cref="ExtismFunction"/>
/// </summary>
/// <param name="ptr"></param>
/// <param name="namespace"></param>
[DllImport("extism", EntryPoint = "extism_function_set_namespace")]
internal static extern void extism_function_set_namespace(IntPtr ptr, string @namespace);
/// <summary>
/// Free an <see cref="ExtismFunction"/>
/// </summary>
/// <param name="ptr"></param>
[DllImport("extism", EntryPoint = "extism_function_free")]
internal static extern void extism_function_free(IntPtr ptr);
/// <summary>
/// Load a WASM plugin.
/// </summary>
/// <param name="wasm">A WASM module (wat or wasm) or a JSON encoded manifest.</param>
/// <param name="wasmSize">The length of the `wasm` parameter.</param>
/// <param name="functions">Array of host function pointers.</param>
/// <param name="nFunctions">Number of host functions.</param>
/// <param name="withWasi">Enables/disables WASI.</param>
/// <param name="errmsg"></param>
/// <returns></returns>
[DllImport("extism")]
unsafe internal static extern ExtismPlugin* extism_plugin_new(byte* wasm, ulong wasmSize, IntPtr* functions, ulong nFunctions, [MarshalAs(UnmanagedType.I1)] bool withWasi, out char** errmsg);
/// <summary>
/// Frees a plugin error message.
/// </summary>
/// <param name="errorMessage"></param>
[DllImport("extism")]
unsafe internal static extern void extism_plugin_new_error_free(IntPtr errorMessage);
/// <summary>
/// Remove a plugin from the registry and free associated memory.
/// </summary>
/// <param name="plugin">Pointer to the plugin you want to free.</param>
[DllImport("extism")]
unsafe internal static extern void extism_plugin_free(ExtismPlugin* plugin);
/// <summary>
/// Update plugin config values, this will merge with the existing values.
/// </summary>
/// <param name="plugin">Pointer to the plugin you want to update the configurations for.</param>
/// <param name="json">The configuration JSON encoded in UTF8.</param>
/// <param name="jsonLength">The length of the `json` parameter.</param>
/// <returns></returns>
[DllImport("extism")]
unsafe internal static extern bool extism_plugin_config(ExtismPlugin* plugin, byte* json, int jsonLength);
/// <summary>
/// Returns true if funcName exists.
/// </summary>
/// <param name="plugin"></param>
/// <param name="funcName"></param>
/// <returns></returns>
[DllImport("extism")]
unsafe internal static extern bool extism_plugin_function_exists(ExtismPlugin* plugin, string funcName);
/// <summary>
/// Call a function.
/// </summary>
/// <param name="plugin"></param>
/// <param name="funcName">The function to call.</param>
/// <param name="data">Input data.</param>
/// <param name="dataLen">The length of the `data` parameter.</param>
/// <returns></returns>
[DllImport("extism")]
unsafe internal static extern int extism_plugin_call(ExtismPlugin* plugin, string funcName, byte* data, int dataLen);
/// <summary>
/// Get the error associated with a Plugin
/// </summary>
/// <param name="plugin">A plugin pointer</param>
/// <returns></returns>
[DllImport("extism")]
unsafe internal static extern IntPtr extism_plugin_error(ExtismPlugin* plugin);
/// <summary>
/// Get the length of a plugin's output data.
/// </summary>
/// <param name="plugin"></param>
/// <returns></returns>
[DllImport("extism")]
unsafe internal static extern long extism_plugin_output_length(ExtismPlugin* plugin);
/// <summary>
/// Get the plugin's output data.
/// </summary>
/// <param name="plugin"></param>
/// <returns></returns>
[DllImport("extism")]
unsafe internal static extern IntPtr extism_plugin_output_data(ExtismPlugin* plugin);
/// <summary>
/// Set log file and level.
/// </summary>
/// <param name="filename"></param>
/// <param name="logLevel"></param>
/// <returns></returns>
[DllImport("extism")]
internal static extern bool extism_log_file(string filename, string logLevel);
/// <summary>
/// Get Extism Runtime version.
/// </summary>
/// <returns></returns>
[DllImport("extism")]
internal static extern IntPtr extism_version();
/// <summary>
/// Extism Log Levels
/// </summary>
internal static class LogLevels
{
/// <summary>
/// Designates very serious errors.
/// </summary>
internal const string Error = "Error";
/// <summary>
/// Designates hazardous situations.
/// </summary>
internal const string Warn = "Warn";
/// <summary>
/// Designates useful information.
/// </summary>
internal const string Info = "Info";
/// <summary>
/// Designates lower priority information.
/// </summary>
internal const string Debug = "Debug";
/// <summary>
/// Designates very low priority, often extremely verbose, information.
/// </summary>
internal const string Trace = "Trace";
}
}

View File

@@ -0,0 +1,32 @@
namespace Extism.Sdk.Native;
/// <summary>
/// Extism Log Levels
/// </summary>
public enum LogLevel
{
/// <summary>
/// Designates very serious errors.
/// </summary>
Error,
/// <summary>
/// Designates hazardous situations.
/// </summary>
Warning,
/// <summary>
/// Designates useful information.
/// </summary>
Info,
/// <summary>
/// Designates lower priority information.
/// </summary>
Debug,
/// <summary>
/// Designates very low priority, often extremely verbose, information.
/// </summary>
Trace
}

View File

@@ -0,0 +1,221 @@
using System.Security.Cryptography;
using System.Text.Json.Serialization;
using System.Text.Json;
using System.Text;
using System.Xml.Linq;
namespace Extism.Sdk
{
/// <summary>
/// The manifest is a description of your plugin and some of the runtime constraints to apply to it.
/// You can think of it as a blueprint to build your plugin.
/// </summary>
public class Manifest
{
/// <summary>
/// Create an empty manifest.
/// </summary>
public Manifest()
{
AllowedPaths = new Dictionary<string, string>
{
{ "/usr/plugins/1/data", "/data" }, // src, dest
{ "d:/plugins/1/data", "/data" } // src, dest
};
}
/// <summary>
/// Create a manifest from one or more Wasm sources.
/// </summary>
/// <param name="sources"></param>
public Manifest(params WasmSource[] sources)
{
Sources.AddRange(sources);
}
/// <summary>
/// List of Wasm sources. See <see cref="PathWasmSource"/> and <see cref="ByteArrayWasmSource"/>.
/// </summary>
[JsonPropertyName("wasm")]
public List<WasmSource> Sources { get; set; } = new();
/// <summary>
/// Configures memory for the Wasm runtime.
/// Memory is described in units of pages (64KB) and represent contiguous chunks of addressable memory.
/// </summary>
[JsonPropertyName("memory")]
public MemoryOptions? MemoryOptions { get; set; }
/// <summary>
/// List of host names the plugins can access. Example:
/// <code>
/// AllowedHosts = new List&lt;string&gt; {
/// "www.example.com",
/// "api.*.com",
/// "example.*",
/// }
/// </code>
/// </summary>
[JsonPropertyName("allowed_hosts")]
public List<string> AllowedHosts { get; set; } = new();
/// <summary>
/// List of directories that can be accessed by the plugins. Examples:
/// <code>
/// AllowedPaths = new Dictionary&lt;string, string&gt;
/// {
/// { "/usr/plugins/1/data", "/data" }, // src, dest
/// { "d:/plugins/1/data", "/data" } // src, dest
/// };
/// </code>
/// </summary>
[JsonPropertyName("allowed_paths")]
public Dictionary<string, string> AllowedPaths { get; set; } = new();
/// <summary>
/// Configurations available to the plugins. Examples:
/// <code>
/// Config = new Dictionary&lt;string, string&gt;
/// {
/// { "userId", "55" }, // key, value
/// { "mySecret", "super-secret-key" } // key, value
/// };
/// </code>
/// </summary>
[JsonPropertyName("config")]
public Dictionary<string, string> Config { get; set; } = new();
}
/// <summary>
/// Configures memory for the Wasm runtime.
/// Memory is described in units of pages (64KB) and represent contiguous chunks of addressable memory.
/// </summary>
public class MemoryOptions
{
/// <summary>
/// Max number of pages. Each page is 64KB.
/// </summary>
[JsonPropertyName("max")]
public int MaxPages { get; set; }
}
/// <summary>
/// A named Wasm source.
/// </summary>
public abstract class WasmSource
{
/// <summary>
/// Logical name of the Wasm source
/// </summary>
[JsonPropertyName("name")]
public string? Name { get; set; }
/// <summary>
/// Hash of the WASM source
/// </summary>
[JsonPropertyName("hash")]
public string? Hash { get; set; }
}
/// <summary>
/// Wasm Source represented by a file referenced by a path.
/// </summary>
public class PathWasmSource : WasmSource
{
/// <summary>
/// Constructor
/// </summary>
/// <param name="path">path to wasm plugin.</param>
/// <param name="name"></param>
/// <param name="hash"></param>
public PathWasmSource(string path, string? name = null, string? hash = null)
{
Path = System.IO.Path.GetFullPath(path);
Name = name ?? System.IO.Path.GetFileNameWithoutExtension(path);
Hash = hash;
if (Hash is null)
{
using var file = File.OpenRead(Path);
Hash = Helpers.ComputeSha256Hash(file);
}
}
/// <summary>
/// Path to wasm plugin.
/// </summary>
[JsonPropertyName("path")]
public string Path { get; }
}
/// <summary>
/// Wasm Source represented by raw bytes.
/// </summary>
public class ByteArrayWasmSource : WasmSource
{
/// <summary>
/// Constructor
/// </summary>
/// <param name="data">the byte array representing the Wasm code</param>
/// <param name="name"></param>
/// <param name="hash"></param>
public ByteArrayWasmSource(byte[] data, string? name, string? hash = null)
{
Data = data;
Name = name;
Hash = hash;
if (Hash is null)
{
using var memory = new MemoryStream(data);
Hash = Helpers.ComputeSha256Hash(memory);
}
}
/// <summary>
/// The byte array representing the Wasm code
/// </summary>
[JsonPropertyName("data")]
[JsonConverter(typeof(Base64EncodedStringConverter))]
public byte[] Data { get; }
}
static class Helpers
{
public static string ComputeSha256Hash(Stream stream)
{
using (SHA256 sha256 = SHA256.Create())
{
byte[] hashBytes = sha256.ComputeHash(stream);
return BitConverter.ToString(hashBytes).Replace("-", "").ToLowerInvariant();
}
}
}
class Base64EncodedStringConverter : JsonConverter<string>
{
public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) =>
Encoding.UTF8.GetString(reader.GetBytesFromBase64());
public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options) =>
writer.WriteBase64StringValue(Encoding.UTF8.GetBytes(value));
}
class WasmSourceConverter : JsonConverter<WasmSource>
{
public override WasmSource Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
throw new NotImplementedException();
}
public override void Write(Utf8JsonWriter writer, WasmSource value, JsonSerializerOptions options)
{
if (value is PathWasmSource path)
JsonSerializer.Serialize(writer, path, typeof(PathWasmSource), options);
else if (value is ByteArrayWasmSource bytes)
JsonSerializer.Serialize(writer, bytes, typeof(ByteArrayWasmSource), options);
else
throw new ArgumentOutOfRangeException(nameof(value), "Unknown Wasm Source");
}
}
}

View File

@@ -0,0 +1,254 @@
using System.Diagnostics.CodeAnalysis;
using System.Runtime.InteropServices;
using System.Text;
using System.Text.Json;
namespace Extism.Sdk.Native;
/// <summary>
/// Represents a WASM Extism plugin.
/// </summary>
public unsafe class Plugin : IDisposable
{
private const int DisposedMarker = 1;
private readonly HostFunction[] _functions;
private int _disposed;
/// <summary>
/// Native pointer to the Extism Plugin.
/// </summary>
internal LibExtism.ExtismPlugin* NativeHandle { get; }
/// <summary>
/// Create a plugin from a Manifest.
/// </summary>
/// <param name="manifest"></param>
/// <param name="functions"></param>
/// <param name="withWasi"></param>
public Plugin(Manifest manifest, HostFunction[] functions, bool withWasi)
{
_functions = functions;
var options = new JsonSerializerOptions
{
DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull,
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
};
options.Converters.Add(new WasmSourceConverter());
var json = JsonSerializer.Serialize(manifest, options);
var bytes = Encoding.UTF8.GetBytes(json);
var functionHandles = functions.Select(f => f.NativeHandle).ToArray();
fixed (byte* wasmPtr = bytes)
fixed (IntPtr* functionsPtr = functionHandles)
{
NativeHandle = Initialize(wasmPtr, bytes.Length, functions, withWasi, functionsPtr);
}
}
/// <summary>
/// Create and load a plugin from a byte array.
/// </summary>
/// <param name="wasm">A WASM module (wat or wasm) or a JSON encoded manifest.</param>
/// <param name="functions">List of host functions expected by the plugin.</param>
/// <param name="withWasi">Enable/Disable WASI.</param>
public Plugin(ReadOnlySpan<byte> wasm, HostFunction[] functions, bool withWasi)
{
_functions = functions;
var functionHandles = functions.Select(f => f.NativeHandle).ToArray();
fixed (byte* wasmPtr = wasm)
fixed (IntPtr* functionsPtr = functionHandles)
{
NativeHandle = Initialize(wasmPtr, wasm.Length, functions, withWasi, functionsPtr);
}
}
private unsafe LibExtism.ExtismPlugin* Initialize(byte* wasmPtr, int wasmLength, HostFunction[] functions, bool withWasi, IntPtr* functionsPtr)
{
char** errorMsgPtr;
var handle = LibExtism.extism_plugin_new(wasmPtr, (ulong)wasmLength, functionsPtr, (ulong)functions.Length, withWasi, out errorMsgPtr);
if (handle == null)
{
var msg = "Unable to create plugin";
if (errorMsgPtr is not null)
{
msg = Marshal.PtrToStringAnsi(new IntPtr(errorMsgPtr));
}
throw new ExtismException(msg);
}
return handle;
}
/// <summary>
/// Update plugin config values, this will merge with the existing values.
/// </summary>
/// <param name="json">The configuration JSON encoded in UTF8.</param>
unsafe public bool SetConfig(ReadOnlySpan<byte> json)
{
CheckNotDisposed();
fixed (byte* jsonPtr = json)
{
return LibExtism.extism_plugin_config(NativeHandle, jsonPtr, json.Length);
}
}
/// <summary>
/// Checks if a specific function exists in the current plugin.
/// </summary>
unsafe public bool FunctionExists(string name)
{
CheckNotDisposed();
return LibExtism.extism_plugin_function_exists(NativeHandle, name);
}
/// <summary>
/// Calls a function in the current plugin and returns a status.
/// If the status represents an error, call <see cref="GetError"/> to get the error.
/// Othewise, call <see cref="OutputData"/> to get the function's output data.
/// </summary>
/// <param name="functionName">Name of the function in the plugin to invoke.</param>
/// <param name="data">A buffer to provide as input to the function.</param>
/// <returns>The exit code of the function.</returns>
/// <exception cref="ExtismException"></exception>
unsafe public ReadOnlySpan<byte> CallFunction(string functionName, ReadOnlySpan<byte> data)
{
CheckNotDisposed();
fixed (byte* dataPtr = data)
{
int response = LibExtism.extism_plugin_call(NativeHandle, functionName, dataPtr, data.Length);
if (response == 0)
{
return OutputData();
}
else
{
var errorMsg = GetError();
if (errorMsg != null)
{
throw new ExtismException(errorMsg);
}
else
{
throw new ExtismException("Call to Extism failed");
}
}
}
}
/// <summary>
/// Get the length of a plugin's output data.
/// </summary>
/// <returns></returns>
unsafe internal int OutputLength()
{
CheckNotDisposed();
return (int)LibExtism.extism_plugin_output_length(NativeHandle);
}
/// <summary>
/// Get the plugin's output data.
/// </summary>
internal ReadOnlySpan<byte> OutputData()
{
CheckNotDisposed();
var length = OutputLength();
unsafe
{
var ptr = LibExtism.extism_plugin_output_data(NativeHandle).ToPointer();
return new Span<byte>(ptr, length);
}
}
/// <summary>
/// Get the error associated with the current plugin.
/// </summary>
/// <returns></returns>
unsafe internal string? GetError()
{
CheckNotDisposed();
var result = LibExtism.extism_plugin_error(NativeHandle);
return Marshal.PtrToStringUTF8(result);
}
/// <summary>
/// Frees all resources held by this Plugin.
/// </summary>
public void Dispose()
{
if (Interlocked.Exchange(ref _disposed, DisposedMarker) == DisposedMarker)
{
// Already disposed.
return;
}
Dispose(true);
GC.SuppressFinalize(this);
}
/// <summary>
/// Throw an appropriate exception if the plugin has been disposed.
/// </summary>
/// <exception cref="ObjectDisposedException"></exception>
protected void CheckNotDisposed()
{
Interlocked.MemoryBarrier();
if (_disposed == DisposedMarker)
{
ThrowDisposedException();
}
}
[DoesNotReturn]
private static void ThrowDisposedException()
{
throw new ObjectDisposedException(nameof(Plugin));
}
/// <summary>
/// Frees all resources held by this Plugin.
/// </summary>
unsafe protected virtual void Dispose(bool disposing)
{
if (disposing)
{
// Free up any managed resources here
}
// Free up unmanaged resources
LibExtism.extism_plugin_free(NativeHandle);
}
/// <summary>
/// Destructs the current Plugin and frees all resources used by it.
/// </summary>
~Plugin()
{
Dispose(false);
}
/// <summary>
/// Get Extism Runtime version.
/// </summary>
/// <returns></returns>
public static string ExtismVersion()
{
var version = LibExtism.extism_version();
return Marshal.PtrToStringAnsi(version);
}
}

View File

@@ -0,0 +1,2 @@
## Extism.Sdk
Extism SDK that allows hosting Extism plugins in .NET apps.

View File

@@ -0,0 +1,58 @@
using Extism.Sdk.Native;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using Xunit;
namespace Extism.Sdk.Tests;
public class BasicTests
{
[Fact]
public void CountHelloWorldVowels()
{
var binDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!;
var wasm = File.ReadAllBytes(Path.Combine(binDirectory, "code.wasm"));
using var plugin = new Plugin(wasm, Array.Empty<HostFunction>(), withWasi: true);
var response = plugin.CallFunction("count_vowels", Encoding.UTF8.GetBytes("Hello World"));
Assert.Equal("{\"count\": 3}", Encoding.UTF8.GetString(response));
}
[Fact]
public void CountVowelsHostFunctions()
{
var userData = Marshal.StringToHGlobalAnsi("Hello again!");
using var helloWorld = new HostFunction(
"hello_world",
"env",
new[] { ExtismValType.I64 },
new[] { ExtismValType.I64 },
userData,
HelloWorld);
var binDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!;
var wasm = File.ReadAllBytes(Path.Combine(binDirectory, "code-functions.wasm"));
using var plugin = new Plugin(wasm, new[] { helloWorld }, withWasi: true);
var response = plugin.CallFunction("count_vowels", Encoding.UTF8.GetBytes("Hello World"));
Assert.Equal("{\"count\": 3}", Encoding.UTF8.GetString(response));
void HelloWorld(CurrentPlugin plugin, Span<ExtismVal> inputs, Span<ExtismVal> outputs, nint data)
{
Console.WriteLine("Hello from .NET!");
var text = Marshal.PtrToStringAnsi(data);
Console.WriteLine(text);
var input = plugin.ReadString(new nint(inputs[0].v.i64));
Console.WriteLine($"Input: {input}");
var output = new string(input); // clone the string
outputs[0].v.i64 = plugin.WriteString(output);
}
}
}

View File

@@ -0,0 +1,42 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2" />
<PackageReference Include="xunit" Version="2.4.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="3.1.2">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<None Include="..\..\..\wasm\code.wasm" Link="code.wasm">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="..\..\..\wasm\code-functions.wasm" Link="code-functions.wasm">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Extism.Sdk\Extism.Sdk.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Extism.runtime.win-x64" Version="0.7.0" />
</ItemGroup>
</Project>

View File

@@ -19,6 +19,31 @@
(name extism)
(synopsis "Extism bindings")
(description "Bindings to Extism, the universal plugin system")
(depends ocaml dune ctypes-foreign bigstringaf ppx_yojson_conv base64 ppx_inline_test)
(depends
(ocaml (>= 4.14.1))
dune
(ctypes (>= 0.18.0))
(ctypes-foreign (>= 0.18.0))
(bigstringaf (>= 0.9.0))
(ppx_yojson_conv (>= v0.15.0))
(extism-manifest (= :version))
(ppx_inline_test (>= v0.15.0))
(cmdliner (>= 1.1.1))
(uuidm (>= 0.9.0))
)
(tags
(topics wasm plugin)))
(package
(name extism-manifest)
(synopsis "Extism manifest bindings")
(description "Bindings to the Extism manifest format")
(depends
(ocaml (>= 4.14.1))
dune
(ppx_yojson_conv (>= v0.15.0))
(ppx_inline_test (>= v0.15.0))
(base64 (>= 3.5.0))
)
(tags
(topics wasm plugin)))

View File

@@ -5,7 +5,7 @@ prepare:
mix compile
test: prepare
mix test
mix test -v
clean:
mix clean

View File

@@ -13,7 +13,7 @@ You can find this package on [hex.pm](https://hex.pm/packages/extism).
```elixir
def deps do
[
{:extism, "~> 0.0.1-rc.6"}
{:extism, "~> 0.1.0"}
]
end
```
@@ -23,12 +23,9 @@ end
### Example
```elixir
# Create a context for which plugins can be allocated and cleaned
ctx = Extism.Context.new()
# point to some wasm code, this is the count_vowels example that ships with extism
manifest = %{ wasm: [ %{ path: "/Users/ben/code/extism/wasm/code.wasm" } ]}
{:ok, plugin} = Extism.Context.new_plugin(ctx, manifest, false)
{:ok, plugin} = Extism.Plugin.new(manifest, false)
# {:ok,
# %Extism.Plugin{
# resource: 0,
@@ -38,36 +35,20 @@ manifest = %{ wasm: [ %{ path: "/Users/ben/code/extism/wasm/code.wasm" } ]}
# {:ok, "{\"count\": 4}"}
{:ok, result} = JSON.decode(output)
# {:ok, %{"count" => 4}}
# free up the context and any plugins we allocated
Extism.Context.free(ctx)
```
### Modules
The two primary modules you should learn are:
The primary modules you should learn is:
* [Extism.Context](Extism.Context.html)
* [Extism.Plugin](Extism.Plugin.html)
#### Context
The [Context](Extism.Context.html) can be thought of as a session. You need a context to interact with the Extism runtime. The context holds your plugins and when you free the context, it frees your plugins. It's important to free up your context and plugins when you are done with them.
```elixir
ctx = Extism.Context.new()
# frees all the plugins
Extism.Context.reset(ctx)
# frees the context and all its plugins
Extism.Context.free(ctx)
```
#### Plugin
The [Plugin](Extism.Plugin.html) represents an instance of your WASM program from the given manifest.
The key method to know here is [Extism.Plugin#call](Extism.Plugin.html#call/3) which takes a function name to invoke and some input data, and returns the results from the plugin.
```elixir
{:ok, plugin} = Extism.Context.new_plugin(ctx, manifest, false)
{:ok, plugin} = Extism.Plugin.new(manifest, false)
{:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "this is a test")
```
```

View File

@@ -0,0 +1,31 @@
defmodule Extism.CancelHandle do
@moduledoc """
A CancelHandle is a handle generated by a plugin that allows it to be cancelled from another
thread while running.
"""
defstruct [
# The actual NIF Resource
handle: nil
]
def wrap_resource(handle) do
%__MODULE__{
handle: handle
}
end
@doc """
Cancel plugin execution
"""
def cancel(handle) do
Extism.Native.plugin_cancel(handle.handle)
end
end
defimpl Inspect, for: Extim.CancelHandle do
import Inspect.Algebra
def inspect(dict, opts) do
concat(["#Extism.CancelHandle<", to_doc(dict.handle, opts), ">"])
end
end

View File

@@ -1,64 +0,0 @@
defmodule Extism.Context do
@moduledoc """
A Context is needed to create plugins. The Context is where your plugins
live. Freeing the context frees all of the plugins in its scope.
"""
defstruct [
# The actual NIF Resource. A pointer in this case
ptr: nil
]
def wrap_resource(ptr) do
%__MODULE__{
ptr: ptr
}
end
@doc """
Creates a new context.
"""
def new() do
ptr = Extism.Native.context_new()
Extism.Context.wrap_resource(ptr)
end
@doc """
Resets the context. This has the effect of freeing all the plugins created so far.
"""
def reset(ctx) do
Extism.Native.context_reset(ctx.ptr)
end
@doc """
Frees the context from memory and all of its plugins.
"""
def free(ctx) do
Extism.Native.context_free(ctx.ptr)
end
@doc """
Create a new plugin from a WASM module or manifest
## Examples:
iex> ctx = Extism.Context.new()
iex> manifest = %{ wasm: [ %{ path: "/Users/ben/code/extism/wasm/code.wasm" } ]}
iex> {:ok, plugin} = Extism.Context.new_plugin(ctx, manifest, false)
## Parameters
- ctx: The Context to manage this plugin
- manifest: The String or Map of the WASM module or [manifest](https://extism.org/docs/concepts/manifest)
- wasi: A bool you set to true if you want WASI support
"""
def new_plugin(ctx, manifest, wasi \\ false) do
{:ok, manifest_payload} = JSON.encode(manifest)
case Extism.Native.plugin_new_with_manifest(ctx.ptr, manifest_payload, wasi) do
{:error, err} -> {:error, err}
res -> {:ok, Extism.Plugin.wrap_resource(ctx, res)}
end
end
end

View File

@@ -7,15 +7,13 @@ defmodule Extism.Native do
otp_app: :extism,
crate: :extism_nif
def context_new(), do: error()
def context_reset(_ctx), do: error()
def context_free(_ctx), do: error()
def plugin_new_with_manifest(_ctx, _manifest, _wasi), do: error()
def plugin_call(_ctx, _plugin_id, _name, _input), do: error()
def plugin_update_manifest(_ctx, _plugin_id, _manifest, _wasi), do: error()
def plugin_has_function(_ctx, _plugin_id, _function_name), do: error()
def plugin_free(_ctx, _plugin_id), do: error()
def plugin_new_with_manifest(_manifest, _wasi), do: error()
def plugin_call(_plugin, _name, _input), do: error()
def plugin_has_function(_plugin, _function_name), do: error()
def plugin_free(_plugin), do: error()
def set_log_file(_filename, _level), do: error()
def plugin_cancel_handle(_plugin), do: error()
def plugin_cancel(_handle), do: error()
defp error, do: :erlang.nif_error(:nif_not_loaded)
end

View File

@@ -3,24 +3,34 @@ defmodule Extism.Plugin do
A Plugin represents an instance of your WASM program from the given manifest.
"""
defstruct [
# The actual NIF Resource. PluginIndex and the context
plugin_id: nil,
ctx: nil
# The actual NIF Resource
plugin: nil,
]
def wrap_resource(ctx, plugin_id) do
def wrap_resource(plugin) do
%__MODULE__{
ctx: ctx,
plugin_id: plugin_id
plugin: plugin
}
end
@doc """
Creates a new plugin
"""
def new(manifest, wasi \\ false) do
{:ok, manifest_payload} = JSON.encode(manifest)
case Extism.Native.plugin_new_with_manifest(manifest_payload, wasi) do
{:error, err} -> {:error, err}
res -> {:ok, Extism.Plugin.wrap_resource(res)}
end
end
@doc """
Call a plugin's function by name
## Examples
iex> {:ok, plugin} = Extism.Context.new_plugin(ctx, manifest, false)
iex> {:ok, plugin} = Extism.Plugin.new(manifest, false)
iex> {:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "this is a test")
# {:ok, "{\"count\": 4}"}
@@ -36,49 +46,24 @@ defmodule Extism.Plugin do
"""
def call(plugin, name, input) do
case Extism.Native.plugin_call(plugin.ctx.ptr, plugin.plugin_id, name, input) do
case Extism.Native.plugin_call(plugin.plugin, name, input) do
{:error, err} -> {:error, err}
res -> {:ok, res}
end
end
@doc """
Updates the manifest of the given plugin
## Parameters
- ctx: The Context to manage this plugin
- manifest: The String or Map of the WASM module or [manifest](https://extism.org/docs/concepts/manifest)
- wasi: A bool you set to true if you want WASI support
"""
def update(plugin, manifest, wasi) when is_map(manifest) do
{:ok, manifest_payload} = JSON.encode(manifest)
case Extism.Native.plugin_update_manifest(
plugin.ctx.ptr,
plugin.plugin_id,
manifest_payload,
wasi
) do
{:error, err} -> {:error, err}
_ -> :ok
end
end
@doc """
Frees the plugin
"""
def free(plugin) do
Extism.Native.plugin_free(plugin.ctx.ptr, plugin.plugin_id)
Extism.Native.plugin_free(plugin.plugin)
end
@doc """
Returns true if the given plugin responds to the given function name
"""
def has_function(plugin, function_name) do
Extism.Native.plugin_has_function(plugin.ctx.ptr, plugin.plugin_id, function_name)
Extism.Native.plugin_has_function(plugin.plugin, function_name)
end
end
@@ -86,6 +71,6 @@ defimpl Inspect, for: Extim.Plugin do
import Inspect.Algebra
def inspect(dict, opts) do
concat(["#Extism.Plugin<", to_doc(dict.plugin_id, opts), ">"])
concat(["#Extism.Plugin<", to_doc(dict.plugin, opts), ">"])
end
end

View File

@@ -4,8 +4,8 @@ defmodule Extism.MixProject do
def project do
[
app: :extism,
version: "0.0.1",
elixir: "~> 1.14",
version: "0.5.0",
elixir: "~> 1.12",
start_permanent: Mix.env() == :prod,
deps: deps(),
package: package(),
@@ -23,7 +23,7 @@ defmodule Extism.MixProject do
defp deps do
[
{:rustler, "~> 0.26.0"},
{:rustler, "~> 0.29.1"},
{:json, "~> 1.4"},
{:ex_doc, "~> 0.21", only: :dev, runtime: false}
]
@@ -43,7 +43,7 @@ defmodule Extism.MixProject do
licenses: ["BSD-3-Clause"],
description: "Extism Host SDK for Elixir and Erlang",
name: "extism",
files: ~w(lib native priv .formatter.exs mix.exs README.md LICENSE),
files: ~w(lib native .formatter.exs mix.exs README.md LICENSE),
links: %{"GitHub" => "https://github.com/extism/extism"}
]
end

View File

@@ -1,12 +1,12 @@
%{
"earmark_parser": {:hex, :earmark_parser, "1.4.29", "149d50dcb3a93d9f3d6f3ecf18c918fb5a2d3c001b5d3305c926cddfbd33355b", [:mix], [], "hexpm", "4902af1b3eb139016aed210888748db8070b8125c2342ce3dcae4f38dcc63503"},
"ex_doc": {:hex, :ex_doc, "0.29.1", "b1c652fa5f92ee9cf15c75271168027f92039b3877094290a75abcaac82a9f77", [:mix], [{:earmark_parser, "~> 1.4.19", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "b7745fa6374a36daf484e2a2012274950e084815b936b1319aeebcf7809574f6"},
"earmark_parser": {:hex, :earmark_parser, "1.4.33", "3c3fd9673bb5dcc9edc28dd90f50c87ce506d1f71b70e3de69aa8154bc695d44", [:mix], [], "hexpm", "2d526833729b59b9fdb85785078697c72ac5e5066350663e5be6a1182da61b8f"},
"ex_doc": {:hex, :ex_doc, "0.30.6", "5f8b54854b240a2b55c9734c4b1d0dd7bdd41f71a095d42a70445c03cf05a281", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "bd48f2ddacf4e482c727f9293d9498e0881597eae6ddc3d9562bd7923375109f"},
"jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"},
"json": {:hex, :json, "1.4.1", "8648f04a9439765ad449bc56a3ff7d8b11dd44ff08ffcdefc4329f7c93843dfa", [:mix], [], "hexpm", "9abf218dbe4ea4fcb875e087d5f904ef263d012ee5ed21d46e9dbca63f053d16"},
"makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"},
"makeup_elixir": {:hex, :makeup_elixir, "0.16.0", "f8c570a0d33f8039513fbccaf7108c5d750f47d8defd44088371191b76492b0b", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "28b2cbdc13960a46ae9a8858c4bebdec3c9a6d7b4b9e7f4ed1502f8159f338e7"},
"makeup_erlang": {:hex, :makeup_erlang, "0.1.1", "3fcb7f09eb9d98dc4d208f49cc955a34218fc41ff6b84df7c75b3e6e533cc65f", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "174d0809e98a4ef0b3309256cbf97101c6ec01c4ab0b23e926a9e17df2077cbb"},
"nimble_parsec": {:hex, :nimble_parsec, "1.2.3", "244836e6e3f1200c7f30cb56733fd808744eca61fd182f731eac4af635cc6d0b", [:mix], [], "hexpm", "c8d789e39b9131acf7b99291e93dae60ab48ef14a7ee9d58c6964f59efb570b0"},
"rustler": {:hex, :rustler, "0.26.0", "06a2773d453ee3e9109efda643cf2ae633dedea709e2455ac42b83637c9249bf", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:toml, "~> 0.6", [hex: :toml, repo: "hexpm", optional: false]}], "hexpm", "42961e9d2083d004d5a53e111ad1f0c347efd9a05cb2eb2ffa1d037cdc74db91"},
"toml": {:hex, :toml, "0.6.2", "38f445df384a17e5d382befe30e3489112a48d3ba4c459e543f748c2f25dd4d1", [:mix], [], "hexpm", "d013e45126d74c0c26a38d31f5e8e9b83ea19fc752470feb9a86071ca5a672fa"},
"makeup_elixir": {:hex, :makeup_elixir, "0.16.1", "cc9e3ca312f1cfeccc572b37a09980287e243648108384b97ff2b76e505c3555", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "e127a341ad1b209bd80f7bd1620a15693a9908ed780c3b763bccf7d200c767c6"},
"makeup_erlang": {:hex, :makeup_erlang, "0.1.2", "ad87296a092a46e03b7e9b0be7631ddcf64c790fa68a9ef5323b6cbb36affc72", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "f3f5a1ca93ce6e092d92b6d9c049bcda58a3b617a8d888f8e7231c85630e8108"},
"nimble_parsec": {:hex, :nimble_parsec, "1.3.1", "2c54013ecf170e249e9291ed0a62e5832f70a476c61da16f6aac6dca0189f2af", [:mix], [], "hexpm", "2682e3c0b2eb58d90c6375fc0cc30bc7be06f365bf72608804fb9cffa5e1b167"},
"rustler": {:hex, :rustler, "0.29.1", "880f20ae3027bd7945def6cea767f5257bc926f33ff50c0d5d5a5315883c084d", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:toml, "~> 0.6", [hex: :toml, repo: "hexpm", optional: false]}], "hexpm", "109497d701861bfcd26eb8f5801fe327a8eef304f56a5b63ef61151ff44ac9b6"},
"toml": {:hex, :toml, "0.7.0", "fbcd773caa937d0c7a02c301a1feea25612720ac3fa1ccb8bfd9d30d822911de", [:mix], [], "hexpm", "0690246a2478c1defd100b0c9b89b4ea280a22be9a7b313a8a058a2408a2fa70"},
}

View File

@@ -1,6 +1,6 @@
[package]
name = "extism_nif"
version = "0.0.1-rc.6"
version = "0.3.0"
edition = "2021"
authors = ["Benjamin Eckel <bhelx@simst.im>"]
@@ -9,7 +9,10 @@ name = "extism_nif"
path = "src/lib.rs"
crate-type = ["cdylib"]
# need this to be here and be empty
[workspace]
[dependencies]
rustler = "0.26.0"
extism = { version = "0.0.1-rc.6" }
rustler = "0.28.0"
extism = {path = "../../../runtime"} # "0.5.0"
log = "0.4"

View File

@@ -1,10 +1,9 @@
use rustler::{Atom, Env, Term, ResourceArc};
use extism::{Plugin, Context};
use std::str;
use extism::Plugin;
use rustler::{Atom, Env, ResourceArc, Term};
use std::path::Path;
use std::str;
use std::str::FromStr;
use std::sync::RwLock;
use std::mem;
mod atoms {
rustler::atoms! {
@@ -14,98 +13,96 @@ mod atoms {
}
}
struct ExtismContext {
ctx: RwLock<Context>
struct ExtismPlugin {
plugin: RwLock<Option<Plugin>>,
}
unsafe impl Sync for ExtismPlugin {}
unsafe impl Send for ExtismPlugin {}
struct ExtismCancelHandle {
handle: RwLock<extism::CancelHandle>,
}
unsafe impl Sync for ExtismCancelHandle {}
unsafe impl Send for ExtismCancelHandle {}
fn load(env: Env, _: Term) -> bool {
rustler::resource!(ExtismContext, env);
rustler::resource!(ExtismPlugin, env);
rustler::resource!(ExtismCancelHandle, env);
true
}
fn to_rustler_error(extism_error: extism::Error) -> rustler::Error {
match extism_error {
extism::Error::UnableToLoadPlugin(msg) => rustler::Error::Term(Box::new(msg)),
extism::Error::Message(msg) => rustler::Error::Term(Box::new(msg)),
extism::Error::Json(json_err) => rustler::Error::Term(Box::new(json_err.to_string()))
rustler::Error::Term(Box::new(extism_error.to_string()))
}
fn freed_error() -> rustler::Error {
rustler::Error::Term(Box::new("Plugin has already been freed".to_string()))
}
#[rustler::nif]
fn plugin_new_with_manifest(
manifest_payload: String,
wasi: bool,
) -> Result<ResourceArc<ExtismPlugin>, rustler::Error> {
let result = match Plugin::new(manifest_payload, [], wasi) {
Err(e) => Err(to_rustler_error(e)),
Ok(plugin) => Ok(ResourceArc::new(ExtismPlugin {
plugin: RwLock::new(Some(plugin)),
})),
};
result
}
#[rustler::nif]
fn plugin_call(
plugin: ResourceArc<ExtismPlugin>,
name: String,
input: String,
) -> Result<String, rustler::Error> {
let mut plugin = plugin.plugin.write().unwrap();
if let Some(plugin) = &mut *plugin {
let result = match plugin.call(name, input) {
Err(e) => Err(to_rustler_error(e)),
Ok(result) => match str::from_utf8(result) {
Ok(output) => Ok(output.to_string()),
Err(_e) => Err(rustler::Error::Term(Box::new(
"Could not read output from plugin",
))),
},
};
result
} else {
Err(freed_error())
}
}
#[rustler::nif]
fn context_new() -> ResourceArc<ExtismContext> {
ResourceArc::new(
ExtismContext { ctx: RwLock::new(Context::new()) }
)
fn plugin_cancel_handle(
plugin: ResourceArc<ExtismPlugin>,
) -> Result<ResourceArc<ExtismCancelHandle>, rustler::Error> {
let mut plugin = plugin.plugin.write().unwrap();
if let Some(plugin) = &mut *plugin {
let handle = plugin.cancel_handle();
Ok(ResourceArc::new(ExtismCancelHandle {
handle: RwLock::new(handle),
}))
} else {
Err(freed_error())
}
}
#[rustler::nif]
fn context_reset(ctx: ResourceArc<ExtismContext>) {
let context = &mut ctx.ctx.write().unwrap();
context.reset()
fn plugin_cancel(handle: ResourceArc<ExtismCancelHandle>) -> bool {
handle.handle.read().unwrap().cancel().is_ok()
}
#[rustler::nif]
fn context_free(ctx: ResourceArc<ExtismContext>) {
let context = &ctx.ctx.read().unwrap();
std::mem::drop(context)
}
#[rustler::nif]
fn plugin_new_with_manifest(ctx: ResourceArc<ExtismContext>, manifest_payload: String, wasi: bool) -> Result<i32, rustler::Error> {
let context = &ctx.ctx.write().unwrap();
let result = match Plugin::new(context, manifest_payload, wasi) {
Err(e) => Err(to_rustler_error(e)),
Ok(plugin) => {
let plugin_id = plugin.as_i32();
// this forget should be safe because the context will clean up
// all it's plugins when it is dropped
mem::forget(plugin);
Ok(plugin_id)
}
};
result
}
#[rustler::nif]
fn plugin_call(ctx: ResourceArc<ExtismContext>, plugin_id: i32, name: String, input: String) -> Result<String, rustler::Error> {
let context = &ctx.ctx.read().unwrap();
let plugin = unsafe { Plugin::from_id(plugin_id, context) };
let result = match plugin.call(name, input) {
Err(e) => Err(to_rustler_error(e)),
Ok(result) => {
match str::from_utf8(&result) {
Ok(output) => Ok(output.to_string()),
Err(_e) => Err(rustler::Error::Term(Box::new("Could not read output from plugin")))
}
}
};
// this forget should be safe because the context will clean up
// all it's plugins when it is dropped
mem::forget(plugin);
result
}
#[rustler::nif]
fn plugin_update_manifest(ctx: ResourceArc<ExtismContext>, plugin_id: i32, manifest_payload: String, wasi: bool) -> Result<(), rustler::Error> {
let context = &ctx.ctx.read().unwrap();
let mut plugin = unsafe { Plugin::from_id(plugin_id, context) };
let result = match plugin.update(manifest_payload, wasi) {
Ok(()) => {
Ok(())
},
Err(e) => Err(to_rustler_error(e))
};
// this forget should be safe because the context will clean up
// all it's plugins when it is dropped
mem::forget(plugin);
result
}
#[rustler::nif]
fn plugin_free(ctx: ResourceArc<ExtismContext>, plugin_id: i32) -> Result<(), rustler::Error> {
let context = &ctx.ctx.read().unwrap();
let plugin = unsafe { Plugin::from_id(plugin_id, context) };
std::mem::drop(plugin);
fn plugin_free(plugin: ResourceArc<ExtismPlugin>) -> Result<(), rustler::Error> {
let mut plugin = plugin.plugin.write().unwrap();
if let Some(plugin) = plugin.take() {
drop(plugin);
}
Ok(())
}
@@ -113,38 +110,41 @@ fn plugin_free(ctx: ResourceArc<ExtismContext>, plugin_id: i32) -> Result<(), ru
fn set_log_file(filename: String, log_level: String) -> Result<Atom, rustler::Error> {
let path = Path::new(&filename);
match log::Level::from_str(&log_level) {
Err(_e) => Err(rustler::Error::Term(Box::new(format!("{} not a valid log level", log_level)))),
Ok(level) => {
if extism::set_log_file(path, Some(level)) {
Ok(atoms::ok())
} else {
Err(rustler::Error::Term(Box::new("Did not set log file, received false from the API.")))
}
}
Err(_e) => Err(rustler::Error::Term(Box::new(format!(
"{} not a valid log level",
log_level
)))),
Ok(level) => match extism::set_log_file(path, level) {
Ok(()) => Ok(atoms::ok()),
Err(e) => Err(rustler::Error::Term(Box::new(format!(
"Did not set log file: {e:?}"
)))),
},
}
}
#[rustler::nif]
fn plugin_has_function(ctx: ResourceArc<ExtismContext>, plugin_id: i32, function_name: String) -> Result<bool, rustler::Error> {
let context = &ctx.ctx.read().unwrap();
let plugin = unsafe { Plugin::from_id(plugin_id, context) };
let has_function = plugin.has_function(function_name);
// this forget should be safe because the context will clean up
// all it's plugins when it is dropped
mem::forget(plugin);
Ok(has_function)
fn plugin_has_function(
plugin: ResourceArc<ExtismPlugin>,
function_name: String,
) -> Result<bool, rustler::Error> {
let mut plugin = plugin.plugin.write().unwrap();
if let Some(plugin) = &mut *plugin {
let has_function = plugin.function_exists(function_name);
Ok(has_function)
} else {
Err(freed_error())
}
}
rustler::init!(
"Elixir.Extism.Native",
[
context_new,
context_reset,
context_free,
plugin_new_with_manifest,
plugin_call,
plugin_update_manifest,
plugin_has_function,
plugin_cancel_handle,
plugin_cancel,
plugin_free,
set_log_file,
],

View File

@@ -2,33 +2,21 @@ defmodule ExtismTest do
use ExUnit.Case
doctest Extism
test "context create & reset" do
ctx = Extism.Context.new()
path = Path.join([__DIR__, "../../wasm/code.wasm"])
manifest = %{wasm: [%{path: path}]}
{:ok, plugin} = Extism.Context.new_plugin(ctx, manifest, false)
Extism.Context.reset(ctx)
# we should expect an error after resetting context
{:error, _err} = Extism.Plugin.call(plugin, "count_vowels", "this is a test")
end
defp new_plugin() do
ctx = Extism.Context.new()
path = Path.join([__DIR__, "../../wasm/code.wasm"])
manifest = %{wasm: [%{path: path}]}
{:ok, plugin} = Extism.Context.new_plugin(ctx, manifest, false)
{ctx, plugin}
{:ok, plugin} = Extism.Plugin.new(manifest, false)
plugin
end
test "counts vowels" do
{ctx, plugin} = new_plugin()
plugin = new_plugin()
{:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "this is a test")
assert JSON.decode(output) == {:ok, %{"count" => 4}}
Extism.Context.free(ctx)
end
test "can make multiple calls on a plugin" do
{ctx, plugin} = new_plugin()
plugin = new_plugin()
{:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "this is a test")
assert JSON.decode(output) == {:ok, %{"count" => 4}}
{:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "this is a test again")
@@ -37,37 +25,24 @@ defmodule ExtismTest do
assert JSON.decode(output) == {:ok, %{"count" => 6}}
{:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "🌎hello🌎world🌎")
assert JSON.decode(output) == {:ok, %{"count" => 3}}
Extism.Context.free(ctx)
end
test "can free a plugin" do
{ctx, plugin} = new_plugin()
plugin = new_plugin()
{:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "this is a test")
assert JSON.decode(output) == {:ok, %{"count" => 4}}
Extism.Plugin.free(plugin)
# Expect an error when calling a plugin that was freed
{:error, _err} = Extism.Plugin.call(plugin, "count_vowels", "this is a test")
Extism.Context.free(ctx)
end
test "can update manifest" do
{ctx, plugin} = new_plugin()
path = Path.join([__DIR__, "../../wasm/code.wasm"])
manifest = %{wasm: [%{path: path}]}
assert Extism.Plugin.update(plugin, manifest, true) == :ok
Extism.Context.free(ctx)
end
test "errors on bad manifest" do
ctx = Extism.Context.new()
{:error, _msg} = Extism.Context.new_plugin(ctx, %{"wasm" => 123}, false)
Extism.Context.free(ctx)
{:error, _msg} = Extism.Plugin.new(%{"wasm" => 123}, false)
end
test "errors on unknown function" do
{ctx, plugin} = new_plugin()
plugin = new_plugin()
{:error, _msg} = Extism.Plugin.call(plugin, "unknown", "this is a test")
Extism.Context.free(ctx)
end
test "set_log_file" do
@@ -75,9 +50,8 @@ defmodule ExtismTest do
end
test "has_function" do
{ctx, plugin} = new_plugin()
plugin = new_plugin()
assert Extism.Plugin.has_function(plugin, "count_vowels")
assert !Extism.Plugin.has_function(plugin, "unknown")
Extism.Context.free(ctx)
end
end

34
extism-manifest.opam Normal file
View File

@@ -0,0 +1,34 @@
# This file is generated by dune, edit dune-project instead
opam-version: "2.0"
synopsis: "Extism manifest bindings"
description: "Bindings to the Extism manifest format"
maintainer: ["Extism Authors <oss@extism.org>"]
authors: ["Extism Authors <oss@extism.org>"]
license: "BSD-3-Clause"
tags: ["topics" "wasm" "plugin"]
homepage: "https://github.com/extism/extism"
doc: "https://github.com/extism/extism"
bug-reports: "https://github.com/extism/extism/issues"
depends: [
"ocaml" {>= "4.14.1"}
"dune" {>= "3.2"}
"ppx_yojson_conv" {>= "v0.15.0"}
"ppx_inline_test" {>= "v0.15.0"}
"base64" {>= "3.5.0"}
"odoc" {with-doc}
]
build: [
["dune" "subst"] {dev}
[
"dune"
"build"
"-p"
name
"-j"
jobs
"@install"
"@runtest" {with-test}
"@doc" {with-doc}
]
]
dev-repo: "git+https://github.com/extism/extism.git"

381
extism.go
View File

@@ -5,39 +5,161 @@ import (
"errors"
"fmt"
"io"
"runtime/cgo"
"unsafe"
)
/*
#cgo pkg-config: libextism.pc
#cgo CFLAGS: -I/usr/local/include
#cgo LDFLAGS: -L/usr/local/lib -lextism
#include <extism.h>
#include <stdlib.h>
int64_t extism_val_i64(ExtismValUnion* x){
return x->i64;
}
int32_t extism_val_i32(ExtismValUnion* x){
return x->i32;
}
float extism_val_f32(ExtismValUnion* x){
return x->f32;
}
double extism_val_f64(ExtismValUnion* x){
return x->f64;
}
void extism_val_set_i64(ExtismValUnion* x, int64_t i){
x->i64 = i;
}
void extism_val_set_i32(ExtismValUnion* x, int32_t i){
x->i32 = i;
}
void extism_val_set_f32(ExtismValUnion* x, float f){
x->f32 = f;
}
void extism_val_set_f64(ExtismValUnion* x, double f){
x->f64 = f;
}
*/
import "C"
// Context is used to manage Plugins
type Context struct {
pointer *C.ExtismContext
type ValType = C.ExtismValType
type Val = C.ExtismVal
type Size = C.ExtismSize
var (
I32 ValType = C.I32
I64 ValType = C.I64
F32 ValType = C.F32
F64 ValType = C.F64
V128 ValType = C.V128
FuncRef ValType = C.FuncRef
ExternRef ValType = C.ExternRef
)
// Function is used to define host functions
type Function struct {
pointer *C.ExtismFunction
userData cgo.Handle
}
// NewContext creates a new context, it should be freed using the `Free` method
func NewContext() Context {
p := C.extism_context_new()
return Context{
pointer: p,
// Free a function
func (f *Function) Free() {
if f.pointer != nil {
C.extism_function_free(f.pointer)
f.pointer = nil
f.userData.Delete()
}
}
// Free a context
func (ctx *Context) Free() {
C.extism_context_free(ctx.pointer)
ctx.pointer = nil
// NewFunction creates a new host function with the given name, input/outputs and optional user data, which can be an
// arbitrary `interface{}`
func NewFunction(name string, inputs []ValType, outputs []ValType, f unsafe.Pointer, userData interface{}) Function {
var function Function
function.userData = cgo.NewHandle(userData)
cname := C.CString(name)
ptr := unsafe.Pointer(function.userData)
var inputsPtr *C.ExtismValType = nil
if len(inputs) > 0 {
inputsPtr = (*C.ExtismValType)(&inputs[0])
}
var outputsPtr *C.ExtismValType = nil
if len(outputs) > 0 {
outputsPtr = (*C.ExtismValType)(&outputs[0])
}
function.pointer = C.extism_function_new(
cname,
inputsPtr,
C.uint64_t(len(inputs)),
outputsPtr,
C.uint64_t(len(outputs)),
(*[0]byte)(f),
ptr,
nil,
)
C.free(unsafe.Pointer(cname))
return function
}
func (f *Function) SetNamespace(s string) {
cstr := C.CString(s)
defer C.free(unsafe.Pointer(cstr))
C.extism_function_set_namespace(f.pointer, cstr)
}
func (f Function) WithNamespace(s string) Function {
f.SetNamespace(s)
return f
}
type CurrentPlugin struct {
pointer *C.ExtismCurrentPlugin
}
func GetCurrentPlugin(ptr unsafe.Pointer) CurrentPlugin {
return CurrentPlugin{
pointer: (*C.ExtismCurrentPlugin)(ptr),
}
}
type MemoryHandle = uint
func (p *CurrentPlugin) Memory(offs MemoryHandle) []byte {
length := C.extism_current_plugin_memory_length(p.pointer, C.uint64_t(offs))
data := unsafe.Pointer(C.extism_current_plugin_memory(p.pointer))
return unsafe.Slice((*byte)(unsafe.Add(data, offs)), C.int(length))
}
// Alloc a new memory block of the given length, returning its offset
func (p *CurrentPlugin) Alloc(n uint) MemoryHandle {
return uint(C.extism_current_plugin_memory_alloc(p.pointer, C.uint64_t(n)))
}
// Free the memory block specified by the given offset
func (p *CurrentPlugin) Free(offs MemoryHandle) {
C.extism_current_plugin_memory_free(p.pointer, C.uint64_t(offs))
}
// Length returns the number of bytes allocated at the specified offset
func (p *CurrentPlugin) Length(offs MemoryHandle) int {
return int(C.extism_current_plugin_memory_length(p.pointer, C.uint64_t(offs)))
}
// Plugin is used to call WASM functions
type Plugin struct {
ctx *Context
id int32
ptr *C.ExtismPlugin
functions []Function
}
type WasmData struct {
@@ -53,11 +175,11 @@ type WasmFile struct {
}
type WasmUrl struct {
Url string `json:"url"`
Hash string `json:"hash,omitempty"`
Header map[string]string `json:"header,omitempty"`
Name string `json:"name,omitempty"`
Method string `json:"method,omitempty"`
Url string `json:"url"`
Hash string `json:"hash,omitempty"`
Headers map[string]string `json:"headers,omitempty"`
Name string `json:"name,omitempty"`
Method string `json:"method,omitempty"`
}
type Wasm interface{}
@@ -65,10 +187,12 @@ type Wasm interface{}
type Manifest struct {
Wasm []Wasm `json:"wasm"`
Memory struct {
Max uint32 `json:"max,omitempty"`
MaxPages uint32 `json:"max_pages,omitempty"`
} `json:"memory,omitempty"`
Config map[string]string `json:"config,omitempty"`
AllowedHosts []string `json:"allowed_hosts,omitempty"`
AllowedPaths map[string]string `json:"allowed_paths,omitempty"`
Timeout uint `json:"timeout_ms,omitempty"`
}
func makePointer(data []byte) unsafe.Pointer {
@@ -94,121 +218,99 @@ func ExtismVersion() string {
return C.GoString(C.extism_version())
}
func register(ctx *Context, data []byte, wasi bool) (Plugin, error) {
func register(data []byte, functions []Function, wasi bool) (Plugin, error) {
ptr := makePointer(data)
plugin := C.extism_plugin_new(
ctx.pointer,
(*C.uchar)(ptr),
C.uint64_t(len(data)),
C._Bool(wasi),
)
functionPointers := []*C.ExtismFunction{}
for _, f := range functions {
functionPointers = append(functionPointers, f.pointer)
}
if plugin < 0 {
err := C.extism_error(ctx.pointer, C.int32_t(-1))
msg := "Unknown"
if err != nil {
msg = C.GoString(err)
}
var plugin *C.ExtismPlugin
errmsg := (*C.char)(nil)
if len(functions) == 0 {
plugin = C.extism_plugin_new(
(*C.uchar)(ptr),
C.uint64_t(len(data)),
nil,
0,
C._Bool(wasi),
&errmsg)
} else {
plugin = C.extism_plugin_new(
(*C.uchar)(ptr),
C.uint64_t(len(data)),
&functionPointers[0],
C.uint64_t(len(functions)),
C._Bool(wasi),
&errmsg,
)
}
return Plugin{id: -1}, errors.New(
if plugin == nil {
msg := C.GoString(errmsg)
C.extism_plugin_new_error_free(errmsg)
return Plugin{}, errors.New(
fmt.Sprintf("Unable to load plugin: %s", msg),
)
}
return Plugin{id: int32(plugin), ctx: ctx}, nil
return Plugin{ptr: plugin, functions: functions}, nil
}
func update(ctx *Context, plugin int32, data []byte, wasi bool) error {
ptr := makePointer(data)
b := bool(C.extism_plugin_update(
ctx.pointer,
C.int32_t(plugin),
(*C.uchar)(ptr),
C.uint64_t(len(data)),
C._Bool(wasi),
))
if b {
return nil
}
err := C.extism_error(ctx.pointer, C.int32_t(-1))
msg := "Unknown"
if err != nil {
msg = C.GoString(err)
}
return errors.New(
fmt.Sprintf("Unable to load plugin: %s", msg),
)
}
// PluginFromManifest creates a plugin from a `Manifest`
func (ctx *Context) PluginFromManifest(manifest Manifest, wasi bool) (Plugin, error) {
data, err := json.Marshal(manifest)
if err != nil {
return Plugin{id: -1}, err
}
return register(ctx, data, wasi)
}
// Plugin creates a plugin from a WASM module
func (ctx *Context) Plugin(module io.Reader, wasi bool) (Plugin, error) {
// NewPlugin creates a plugin
func NewPlugin(module io.Reader, functions []Function, wasi bool) (Plugin, error) {
wasm, err := io.ReadAll(module)
if err != nil {
return Plugin{id: -1}, err
return Plugin{}, err
}
return register(ctx, wasm, wasi)
return register(wasm, functions, wasi)
}
// Update a plugin with a new WASM module
func (p *Plugin) Update(module io.Reader, wasi bool) error {
wasm, err := io.ReadAll(module)
if err != nil {
return err
}
return update(p.ctx, p.id, wasm, wasi)
}
// Update a plugin with a new Manifest
func (p *Plugin) UpdateManifest(manifest Manifest, wasi bool) error {
// NewPlugin creates a plugin from a manifest
func NewPluginFromManifest(manifest Manifest, functions []Function, wasi bool) (Plugin, error) {
data, err := json.Marshal(manifest)
if err != nil {
return err
return Plugin{}, err
}
return update(p.ctx, p.id, data, wasi)
return register(data, functions, wasi)
}
// Set configuration values
func (plugin Plugin) SetConfig(data map[string][]byte) error {
if plugin.ptr == nil {
return errors.New("Cannot set config, Plugin already freed")
}
s, err := json.Marshal(data)
if err != nil {
return err
}
ptr := makePointer(s)
C.extism_plugin_config(plugin.ctx.pointer, C.int(plugin.id), (*C.uchar)(ptr), C.uint64_t(len(s)))
C.extism_plugin_config(plugin.ptr, (*C.uchar)(ptr), C.uint64_t(len(s)))
return nil
}
// FunctionExists returns true when the named function is present in the plugin
func (plugin Plugin) FunctionExists(functionName string) bool {
if plugin.ptr == nil {
return false
}
name := C.CString(functionName)
b := C.extism_plugin_function_exists(plugin.ctx.pointer, C.int(plugin.id), name)
b := C.extism_plugin_function_exists(plugin.ptr, name)
C.free(unsafe.Pointer(name))
return bool(b)
}
// Call a function by name with the given input, returning the output
func (plugin Plugin) Call(functionName string, input []byte) ([]byte, error) {
if plugin.ptr == nil {
return []byte{}, errors.New("Plugin has already been freed")
}
ptr := makePointer(input)
name := C.CString(functionName)
rc := C.extism_plugin_call(
plugin.ctx.pointer,
C.int32_t(plugin.id),
plugin.ptr,
name,
(*C.uchar)(ptr),
C.uint64_t(len(input)),
@@ -216,7 +318,7 @@ func (plugin Plugin) Call(functionName string, input []byte) ([]byte, error) {
C.free(unsafe.Pointer(name))
if rc != 0 {
err := C.extism_error(plugin.ctx.pointer, C.int32_t(plugin.id))
err := C.extism_plugin_error(plugin.ptr)
msg := "<unset by plugin>"
if err != nil {
msg = C.GoString(err)
@@ -227,12 +329,11 @@ func (plugin Plugin) Call(functionName string, input []byte) ([]byte, error) {
)
}
length := C.extism_plugin_output_length(plugin.ctx.pointer, C.int32_t(plugin.id))
length := C.extism_plugin_output_length(plugin.ptr)
if length > 0 {
x := C.extism_plugin_output_data(plugin.ctx.pointer, C.int32_t(plugin.id))
y := (*[]byte)(unsafe.Pointer(&x))
return []byte((*y)[0:length]), nil
x := C.extism_plugin_output_data(plugin.ptr)
return unsafe.Slice((*byte)(x), C.int(length)), nil
}
return []byte{}, nil
@@ -240,14 +341,86 @@ func (plugin Plugin) Call(functionName string, input []byte) ([]byte, error) {
// Free a plugin
func (plugin *Plugin) Free() {
if plugin.ctx.pointer == nil {
if plugin.ptr == nil {
return
}
C.extism_plugin_free(plugin.ctx.pointer, C.int32_t(plugin.id))
plugin.id = -1
C.extism_plugin_free(plugin.ptr)
plugin.ptr = nil
}
// Reset removes all registered plugins in a Context
func (ctx Context) Reset() {
C.extism_context_reset(ctx.pointer)
// ValGetI64 returns an I64 from an ExtismVal, it accepts a pointer to a C.ExtismVal
func ValGetI64(v unsafe.Pointer) int64 {
return int64(C.extism_val_i64(&(*Val)(v).v))
}
// ValGetUInt returns a uint from an ExtismVal, it accepts a pointer to a C.ExtismVal
func ValGetUInt(v unsafe.Pointer) uint {
return uint(C.extism_val_i64(&(*Val)(v).v))
}
// ValGetI32 returns an int32 from an ExtismVal, it accepts a pointer to a C.ExtismVal
func ValGetI32(v unsafe.Pointer) int32 {
return int32(C.extism_val_i32(&(*Val)(v).v))
}
// ValGetF32 returns a float32 from an ExtismVal, it accepts a pointer to a C.ExtismVal
func ValGetF32(v unsafe.Pointer) float32 {
return float32(C.extism_val_f32(&(*Val)(v).v))
}
// ValGetF32 returns a float64 from an ExtismVal, it accepts a pointer to a C.ExtismVal
func ValGetF64(v unsafe.Pointer) float64 {
return float64(C.extism_val_i64(&(*Val)(v).v))
}
// ValSetI64 stores an int64 in an ExtismVal, it accepts a pointer to a C.ExtismVal and the new value
func ValSetI64(v unsafe.Pointer, i int64) {
C.extism_val_set_i64(&(*Val)(v).v, C.int64_t(i))
}
// ValSetI32 stores an int32 in an ExtismVal, it accepts a pointer to a C.ExtismVal and the new value
func ValSetI32(v unsafe.Pointer, i int32) {
C.extism_val_set_i32(&(*Val)(v).v, C.int32_t(i))
}
// ValSetF32 stores a float32 in an ExtismVal, it accepts a pointer to a C.ExtismVal and the new value
func ValSetF32(v unsafe.Pointer, i float32) {
C.extism_val_set_f32(&(*Val)(v).v, C.float(i))
}
// ValSetF64 stores a float64 in an ExtismVal, it accepts a pointer to a C.ExtismVal and the new value
func ValSetF64(v unsafe.Pointer, f float64) {
C.extism_val_set_f64(&(*Val)(v).v, C.double(f))
}
func (p *CurrentPlugin) ReturnBytes(v unsafe.Pointer, b []byte) {
mem := p.Alloc(uint(len(b)))
ptr := p.Memory(mem)
copy(ptr, b)
ValSetI64(v, int64(mem))
}
func (p *CurrentPlugin) ReturnString(v unsafe.Pointer, s string) {
p.ReturnBytes(v, []byte(s))
}
func (p *CurrentPlugin) InputBytes(v unsafe.Pointer) []byte {
return p.Memory(ValGetUInt(v))
}
func (p *CurrentPlugin) InputString(v unsafe.Pointer) string {
return string(p.InputBytes(v))
}
type CancelHandle struct {
pointer *C.ExtismCancelHandle
}
func (p *Plugin) CancelHandle() CancelHandle {
pointer := C.extism_plugin_cancel_handle(p.ptr)
return CancelHandle{pointer}
}
func (c *CancelHandle) Cancel() bool {
return bool(C.extism_plugin_cancel(c.pointer))
}

View File

@@ -10,13 +10,16 @@ homepage: "https://github.com/extism/extism"
doc: "https://github.com/extism/extism"
bug-reports: "https://github.com/extism/extism/issues"
depends: [
"ocaml"
"ocaml" {>= "4.14.1"}
"dune" {>= "3.2"}
"ctypes-foreign"
"bigstringaf"
"ppx_yojson_conv"
"base64"
"ppx_inline_test"
"ctypes" {>= "0.18.0"}
"ctypes-foreign" {>= "0.18.0"}
"bigstringaf" {>= "0.9.0"}
"ppx_yojson_conv" {>= "v0.15.0"}
"extism-manifest" {= version}
"ppx_inline_test" {>= "v0.15.0"}
"cmdliner" {>= "1.1.1"}
"uuidm" {>= "0.9.0"}
"odoc" {with-doc}
]
build: [
@@ -34,3 +37,5 @@ build: [
]
]
dev-repo: "git+https://github.com/extism/extism.git"
build-env: [EXTISM_TEST_NO_LIB = ""]
post-messages: ["See https://extism.org/docs/install/ for information about installing libextism"]

2
extism.opam.template Normal file
View File

@@ -0,0 +1,2 @@
build-env: [EXTISM_TEST_NO_LIB = ""]
post-messages: ["See https://extism.org/docs/install/ for information about installing libextism"]

View File

@@ -4,13 +4,19 @@ import (
"encoding/json"
"fmt"
"testing"
"time"
)
func manifest() Manifest {
func manifest(functions bool) Manifest {
path := "./wasm/code.wasm"
if functions {
path = "./wasm/code-functions.wasm"
}
return Manifest{
Wasm: []Wasm{
WasmFile{
Path: "./wasm/code.wasm",
Path: path,
},
},
}
@@ -29,16 +35,8 @@ func expectVowelCount(plugin Plugin, input string, count int) error {
return nil
}
func TestCreateAndFreeContext(t *testing.T) {
ctx := NewContext()
ctx.Free()
}
func TestCallPlugin(t *testing.T) {
ctx := NewContext()
defer ctx.Free()
plugin, err := ctx.PluginFromManifest(manifest(), false)
plugin, err := NewPluginFromManifest(manifest(false), []Function{}, false)
if err != nil {
t.Error(err)
}
@@ -55,10 +53,7 @@ func TestCallPlugin(t *testing.T) {
}
func TestFreePlugin(t *testing.T) {
ctx := NewContext()
defer ctx.Free()
plugin, err := ctx.PluginFromManifest(manifest(), false)
plugin, err := NewPluginFromManifest(manifest(false), []Function{}, false)
if err != nil {
t.Error(err)
}
@@ -74,52 +69,8 @@ func TestFreePlugin(t *testing.T) {
}
}
func TestContextReset(t *testing.T) {
ctx := NewContext()
defer ctx.Free()
plugin, err := ctx.PluginFromManifest(manifest(), false)
if err != nil {
t.Error(err)
}
if err := expectVowelCount(plugin, "this is a test", 4); err != nil {
t.Error(err)
}
// reset the context dropping all plugins
ctx.Reset()
if err := expectVowelCount(plugin, "this is a test", 4); err == nil {
t.Fatal("Expected an error after plugin was freed")
}
}
func TestCanUpdateAManifest(t *testing.T) {
ctx := NewContext()
defer ctx.Free()
plugin, err := ctx.PluginFromManifest(manifest(), false)
if err != nil {
t.Error(err)
}
if err := expectVowelCount(plugin, "this is a test", 4); err != nil {
t.Error(err)
}
plugin.UpdateManifest(manifest(), false)
// can still call the plugin
if err := expectVowelCount(plugin, "this is a test", 4); err != nil {
t.Error(err)
}
}
func TestFunctionExists(t *testing.T) {
ctx := NewContext()
defer ctx.Free()
plugin, err := ctx.PluginFromManifest(manifest(), false)
plugin, err := NewPluginFromManifest(manifest(false), []Function{}, false)
if err != nil {
t.Error(err)
}
@@ -133,10 +84,7 @@ func TestFunctionExists(t *testing.T) {
}
func TestErrorsOnUnknownFunction(t *testing.T) {
ctx := NewContext()
defer ctx.Free()
plugin, err := ctx.PluginFromManifest(manifest(), false)
plugin, err := NewPluginFromManifest(manifest(false), []Function{}, false)
if err != nil {
t.Error(err)
}
@@ -146,3 +94,30 @@ func TestErrorsOnUnknownFunction(t *testing.T) {
t.Fatal("Was expecting call to unknown function to fail")
}
}
func TestCancel(t *testing.T) {
manifest := Manifest{
Wasm: []Wasm{
WasmFile{
Path: "./wasm/loop.wasm",
},
},
}
plugin, err := NewPluginFromManifest(manifest, []Function{}, false)
if err != nil {
t.Error(err)
}
cancelHandle := plugin.CancelHandle()
go func(handle CancelHandle) {
time.Sleep(time.Second * 1)
handle.Cancel()
}(cancelHandle)
_, err = plugin.Call("infinite_loop", []byte(""))
if err == nil {
t.Fail()
}
}

View File

@@ -4,17 +4,38 @@ import (
"encoding/json"
"fmt"
"os"
"runtime/cgo"
"unsafe"
"github.com/extism/extism"
)
/*
#include <extism.h>
EXTISM_GO_FUNCTION(hello_world);
*/
import "C"
//export hello_world
func hello_world(plugin unsafe.Pointer, inputs *C.ExtismVal, nInputs C.ExtismSize, outputs *C.ExtismVal, nOutputs C.ExtismSize, userData uintptr) {
fmt.Println("Hello from Go!")
s := cgo.Handle(userData)
fmt.Println(s.Value().(string))
inputSlice := unsafe.Slice(inputs, nInputs)
outputSlice := unsafe.Slice(outputs, nOutputs)
// Get memory pointed to by first element of input slice
p := extism.GetCurrentPlugin(plugin)
str := p.InputString(unsafe.Pointer(&inputSlice[0]))
fmt.Println(str)
outputSlice[0] = inputSlice[0]
}
func main() {
version := extism.ExtismVersion()
fmt.Println("Extism Version: ", version)
ctx := extism.NewContext()
defer ctx.Free() // this will free the context and all associated plugins
// set some input data to provide to the plugin module
var data []byte
if len(os.Args) > 1 {
@@ -22,9 +43,10 @@ func main() {
} else {
data = []byte("testing from go -> wasm shared memory...")
}
manifest := extism.Manifest{Wasm: []extism.Wasm{extism.WasmFile{Path: "../wasm/code.wasm"}}}
plugin, err := ctx.PluginFromManifest(manifest, false)
manifest := extism.Manifest{Wasm: []extism.Wasm{extism.WasmFile{Path: "../wasm/code-functions.wasm"}}}
f := extism.NewFunction("hello_world", []extism.ValType{extism.I64}, []extism.ValType{extism.I64}, C.hello_world, "Hello again!")
defer f.Free()
plugin, err := extism.NewPluginFromManifest(manifest, []extism.Function{f}, true)
if err != nil {
fmt.Println(err)
os.Exit(1)

View File

@@ -1,5 +1,5 @@
# Revision history for extism
## 0.1.0.0 -- YYYY-mm-dd
## 0.2.0.0 -- 2023-01-16
* First version. Released on an unsuspecting world.

View File

@@ -1,23 +1,21 @@
module Main where
import System.Exit (exitFailure, exitSuccess)
import qualified Data.ByteString as B
import Extism
import Extism.Manifest
import Extism.HostFunction
import Extism.Manifest(manifest, wasmFile)
try f (Right x) = f x
try f (Left (ErrorMessage msg)) = do
_ <- putStrLn msg
exitFailure
handlePlugin plugin = do
res <- Extism.call plugin "count_vowels" (Extism.toByteString "this is a test")
try (\bs -> do
_ <- putStrLn (Extism.fromByteString bs)
_ <- Extism.free plugin
exitSuccess) res
hello plugin params msg = do
putStrLn "Hello from Haskell!"
putStrLn msg
offs <- allocBytes plugin (toByteString "{\"count\": 999}")
return [toI64 offs]
main = do
context <- Extism.newContext ()
plugin <- Extism.pluginFromManifest context (manifest [wasmFile "../wasm/code.wasm"]) False
try handlePlugin plugin
setLogFile "stdout" LogError
let m = manifest [wasmFile "../wasm/code-functions.wasm"]
f <- hostFunction "hello_world" [I64] [I64] hello "Hello, again"
plugin <- unwrap <$> pluginFromManifest m [f] True
id <- pluginID plugin
print id
res <- unwrap <$> call plugin "count_vowels" (toByteString "this is a test")
putStrLn (fromByteString res)

33
haskell/Makefile Normal file
View File

@@ -0,0 +1,33 @@
.PHONY: test
prepare:
cabal update
build: prepare
cabal build
test: prepare
cabal test
clean:
cabal clean
publish: clean prepare
cabal v2-haddock --haddock-for-hackage ./manifest/extism-manifest.cabal
cabal v2-haddock --haddock-for-hackage
cabal sdist ./manifest/extism-manifest.cabal
cabal sdist
# TODO: upload
format:
# TODO
lint:
cabal check
hlint src manifest
docs:
# TODO
show-docs: docs
# TODO

1
haskell/cabal.project Normal file
View File

@@ -0,0 +1 @@
packages: extism.cabal manifest/extism-manifest.cabal

View File

@@ -1,54 +1,46 @@
cabal-version: 2.4
cabal-version: 3.0
name: extism
version: 0.0.1
-- A short (one-line) description of the package.
synopsis: Extism bindings
-- A longer description of the package.
description: Bindings to Extism, the universal plugin system
-- A URL where users can report bugs.
bug-reports: https://github.com/extism/extism
-- The license under which the package is released.
license: BSD-3-Clause
author: Extism authors
version: 0.5.0
license: BSD-3-Clause
maintainer: oss@extism.org
-- A copyright notice.
-- copyright:
category: Plugins, WebAssembly
extra-source-files: CHANGELOG.md
author: Extism authors
bug-reports: https://github.com/extism/extism
synopsis: Extism bindings
description: Bindings to Extism, the universal plugin system
category: Plugins, WebAssembly
extra-doc-files: CHANGELOG.md
library
exposed-modules: Extism Extism.Manifest
exposed-modules: Extism Extism.HostFunction
reexported-modules: Extism.Manifest
hs-source-dirs: src
other-modules: Extism.Bindings
default-language: Haskell2010
extra-libraries: extism
extra-lib-dirs: /usr/local/lib
build-depends:
base >= 4.16.1 && < 5,
bytestring >= 0.11.3 && <= 0.12,
json >= 0.10 && <= 0.11,
extism-manifest >= 0.0.0 && < 0.4.0,
uuid >= 1.3 && < 2
-- Modules included in this library but not exported.
other-modules:
test-suite extism-example
type: exitcode-stdio-1.0
main-is: Example.hs
default-language: Haskell2010
build-depends:
base,
extism,
bytestring
-- LANGUAGE extensions used by modules in this package.
-- other-extensions:
build-depends:
base ^>=4.16.1.0
, bytestring
, base64-bytestring
, json
hs-source-dirs: src
default-language: Haskell2010
extra-libraries: extism
extra-lib-dirs: /usr/local/lib
Test-Suite extism-example
type: exitcode-stdio-1.0
main-is: Example.hs
build-depends: base, extism, bytestring
default-language: Haskell2010
Test-Suite extism-test
type: exitcode-stdio-1.0
main-is: Test.hs
test-suite extism-test
type: exitcode-stdio-1.0
main-is: Test.hs
hs-source-dirs: test
build-depends: base, extism, bytestring, HUnit
default-language: Haskell2010
build-depends:
base,
extism,
bytestring,
HUnit

View File

@@ -0,0 +1,5 @@
# Revision history for extism-manifest
## 0.1.0.0 -- YYYY-mm-dd
* First version. Released on an unsuspecting world.

View File

@@ -0,0 +1,60 @@
module Extism.JSON (
module Extism.JSON,
module Text.JSON
) where
import Text.JSON
import qualified Data.ByteString as B
import Data.ByteString.Internal (c2w, w2c)
import qualified Data.ByteString.Base64 as B64
import qualified Data.ByteString.Char8 as BS (unpack)
data Nullable a = Null | NotNull a deriving Eq
makeArray x = JSArray [showJSON a | a <- x]
isNull JSNull = True
isNull _ = False
filterNulls obj = [(a, b) | (a, b) <- obj, not (isNull b)]
object x = makeObj $ filterNulls x
objectWithNulls = makeObj
nonNull = NotNull
null' = Null
(.=) a b = (a, showJSON b)
toNullable (Just x) = NotNull x
toNullable Nothing = Null
fromNullable (NotNull x) = Just x
fromNullable Null = Nothing
fromNotNull (NotNull x) = x
fromNotNull Null = error "Value is Null"
mapNullable f Null = Null
mapNullable f (NotNull x) = NotNull (f x)
(.?) (JSObject a) k =
case valFromObj k a of
Ok x -> NotNull x
Error _ -> Null
(.?) _ _ = Null
(.??) a k = toNullable $ lookup k a
find :: JSON a => String -> JSValue -> Nullable a
find k obj = obj .? k
update :: JSON a => String -> a -> JSValue -> JSValue
update k v (JSObject obj) = object $ fromJSObject obj ++ [k .= v]
instance JSON a => JSON (Nullable a) where
showJSON (NotNull x) = showJSON x
showJSON Null = JSNull
readJSON JSNull = Ok Null
readJSON x = readJSON x
newtype Base64 = Base64 B.ByteString deriving (Eq, Show)
instance JSON Base64 where
showJSON (Base64 bs) = showJSON (BS.unpack $ B64.encode bs)
readJSON (JSString s) =
let toByteString x = B.pack (Prelude.map c2w x) in
case B64.decode (toByteString (fromJSString s)) of
Left msg -> Error msg
Right d -> Ok (Base64 d)

View File

@@ -0,0 +1,249 @@
module Extism.Manifest where
import Extism.JSON
import qualified Data.ByteString as B
import qualified Data.ByteString.Char8 as BS (unpack)
-- | Memory options
newtype Memory = Memory
{
memoryMaxPages :: Nullable Int
}
deriving Eq
instance JSON Memory where
showJSON (Memory max) =
object [
"max_pages" .= max
]
readJSON obj =
let max = obj .? "max_pages" in
Ok (Memory max)
-- | HTTP request
data HTTPRequest = HTTPRequest
{
url :: String
, headers :: Nullable [(String, String)]
, method :: Nullable String
}
deriving Eq
makeKV x =
object [(k, showJSON v) | (k, v) <- x]
requestObj (HTTPRequest url headers method) =
[
"url" .= url,
"headers" .= mapNullable makeKV headers,
"method" .= method
]
instance JSON HTTPRequest where
showJSON req = object $ requestObj req
readJSON x =
let url = x .? "url" in
let headers = x .? "headers" in
let method = x .? "method" in
case url of
Null -> Error "Missing 'url' field"
NotNull url -> Ok (HTTPRequest url headers method)
-- | WASM from file
data WasmFile = WasmFile
{
filePath :: String
, fileName :: Nullable String
, fileHash :: Nullable String
}
deriving Eq
instance JSON WasmFile where
showJSON (WasmFile path name hash) =
object [
"path" .= path,
"name" .= name,
"hash" .= hash
]
readJSON x =
let path = x .? "url" in
let name = x .? "name" in
let hash = x .? "hash" in
case path of
Null -> Error "Missing 'path' field"
NotNull path -> Ok (WasmFile path name hash)
-- | WASM from raw bytes
data WasmData = WasmData
{
dataBytes :: Base64
, dataName :: Nullable String
, dataHash :: Nullable String
}
deriving Eq
instance JSON WasmData where
showJSON (WasmData bytes name hash) =
object [
"data" .= bytes,
"name" .= name,
"hash" .= hash
]
readJSON x =
let d = x .? "data" in
let name = x .? "name" in
let hash = x .? "hash" in
case d of
Null -> Error "Missing 'path' field"
NotNull d ->
case readJSON d of
Error msg -> Error msg
Ok d' -> Ok (WasmData d' name hash)
-- | WASM from a URL
data WasmURL = WasmURL
{
req :: HTTPRequest
, urlName :: Nullable String
, urlHash :: Nullable String
}
deriving Eq
instance JSON WasmURL where
showJSON (WasmURL req name hash) =
object (
"name" .= name :
"hash" .= hash :
requestObj req)
readJSON x =
let req = x .? "req" in
let name = x .? "name" in
let hash = x .? "hash" in
case fromNullable req of
Nothing -> Error "Missing 'req' field"
Just req -> Ok (WasmURL req name hash)
-- | Specifies where to get WASM module data
data Wasm = File WasmFile | Data WasmData | URL WasmURL deriving Eq
instance JSON Wasm where
showJSON x =
case x of
File f -> showJSON f
Data d -> showJSON d
URL u -> showJSON u
readJSON x =
let file = (readJSON x :: Result WasmFile) in
case file of
Ok x -> Ok (File x)
Error _ ->
let data' = (readJSON x :: Result WasmData) in
case data' of
Ok x -> Ok (Data x)
Error _ ->
let url = (readJSON x :: Result WasmURL) in
case url of
Ok x -> Ok (URL x)
Error _ -> Error "JSON does not match any of the Wasm types"
wasmFile :: String -> Wasm
wasmFile path =
File WasmFile { filePath = path, fileName = null', fileHash = null'}
wasmURL :: String -> String -> Wasm
wasmURL method url =
let r = HTTPRequest { url = url, headers = null', method = nonNull method } in
URL WasmURL { req = r, urlName = null', urlHash = null' }
wasmData :: B.ByteString -> Wasm
wasmData d =
Data WasmData { dataBytes = Base64 d, dataName = null', dataHash = null' }
withName :: Wasm -> String -> Wasm
withName (Data d) name = Data d { dataName = nonNull name }
withName (URL url) name = URL url { urlName = nonNull name }
withName (File f) name = File f { fileName = nonNull name }
withHash :: Wasm -> String -> Wasm
withHash (Data d) hash = Data d { dataHash = nonNull hash }
withHash (URL url) hash = URL url { urlHash = nonNull hash }
withHash (File f) hash = File f { fileHash = nonNull hash }
-- | The 'Manifest' type is used to provide WASM data and configuration to the
-- | Extism runtime
data Manifest = Manifest
{
wasm :: [Wasm]
, memory :: Nullable Memory
, config :: Nullable [(String, String)]
, allowedHosts :: Nullable [String]
, allowedPaths :: Nullable [(String, String)]
, timeout :: Nullable Int
}
instance JSON Manifest where
showJSON (Manifest wasm memory config hosts paths timeout) =
let w = makeArray wasm in
object [
"wasm" .= w,
"memory" .= memory,
"config" .= mapNullable makeKV config,
"allowed_hosts" .= hosts,
"allowed_paths" .= mapNullable makeKV paths,
"timeout_ms" .= timeout
]
readJSON x =
let wasm = x .? "wasm" in
let memory = x .? "memory" in
let config = x .? "config" in
let hosts = x .? "allowed_hosts" in
let paths = x .? "allowed_paths" in
let timeout = x .? "timeout_ms" in
case fromNullable wasm of
Nothing -> Error "Missing 'wasm' field"
Just wasm -> Ok (Manifest wasm memory config hosts paths timeout)
-- | Create a new 'Manifest' from a list of 'Wasm'
manifest :: [Wasm] -> Manifest
manifest wasm =
Manifest {
wasm = wasm,
memory = null',
config = null',
allowedHosts = null',
allowedPaths = null',
timeout = null'
}
-- | Update the config values
withConfig :: Manifest -> [(String, String)] -> Manifest
withConfig m config =
m { config = nonNull config }
-- | Update allowed hosts for `extism_http_request`
withHosts :: Manifest -> [String] -> Manifest
withHosts m hosts =
m { allowedHosts = nonNull hosts }
-- | Update allowed paths
withPaths :: Manifest -> [(String, String)] -> Manifest
withPaths m p =
m { allowedPaths = nonNull p }
-- | Update plugin timeout (in milliseconds)
withTimeout :: Manifest -> Int -> Manifest
withTimeout m t =
m { timeout = nonNull t }
toString :: (JSON a) => a -> String
toString v =
encode (showJSON v)

View File

@@ -0,0 +1,21 @@
cabal-version: 3.0
name: extism-manifest
version: 0.3.0
license: BSD-3-Clause
maintainer: oss@extism.org
author: Extism authors
bug-reports: https://github.com/extism/extism
synopsis: Extism manifest bindings
description: Bindings to Extism WebAssembly manifest
category: Plugins, WebAssembly
extra-doc-files: CHANGELOG.md
library
exposed-modules: Extism.Manifest Extism.JSON
hs-source-dirs: .
default-language: Haskell2010
build-depends:
base >= 4.16.1 && < 5,
bytestring >= 0.11.3 && <= 0.12,
json >= 0.10 && <= 0.11,
base64-bytestring >= 1.2.1 && < 1.3,

View File

@@ -1,155 +1,127 @@
{-# LANGUAGE ForeignFunctionInterface #-}
module Extism (
module Extism.Manifest,
Function(..),
Plugin(..),
CancelHandle(..),
LogLevel(..),
Error(..),
Result(..),
toByteString,
fromByteString,
extismVersion,
plugin,
pluginFromManifest,
isValid,
setConfig,
setLogFile,
functionExists,
call,
cancelHandle,
cancel,
pluginID,
unwrap
) where
module Extism (module Extism, module Extism.Manifest) where
import GHC.Int
import GHC.Word
import Foreign.C.Types
import Foreign.Ptr
import Foreign.ForeignPtr
import Foreign.C.String
import Control.Monad (void)
import Data.ByteString as B
import Foreign.Ptr
import Foreign.Marshal.Array
import Foreign.Marshal.Alloc
import Foreign.Storable
import Foreign.StablePtr
import Foreign.Concurrent
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as BL
import Data.ByteString.Internal (c2w, w2c)
import Data.ByteString.Unsafe (unsafeUseAsCString)
import Data.Bifunctor (second)
import Text.JSON (JSON, toJSObject, toJSString, encode, JSValue(JSNull, JSString))
import qualified Text.JSON (encode, toJSObject, showJSON)
import Extism.Manifest (Manifest, toString)
import Extism.Bindings
import qualified Data.UUID (UUID, fromByteString)
newtype ExtismContext = ExtismContext () deriving Show
-- | Host function, see 'Extism.HostFunction.hostFunction'
data Function = Function (ForeignPtr ExtismFunction) (StablePtr ()) deriving Eq
foreign import ccall unsafe "extism.h extism_context_new" extism_context_new :: IO (Ptr ExtismContext)
foreign import ccall unsafe "extism.h &extism_context_free" extism_context_free :: FunPtr (Ptr ExtismContext -> IO ())
foreign import ccall unsafe "extism.h extism_plugin_new" extism_plugin_new :: Ptr ExtismContext -> Ptr Word8 -> Word64 -> CBool -> IO Int32
foreign import ccall unsafe "extism.h extism_plugin_update" extism_plugin_update :: Ptr ExtismContext -> Int32 -> Ptr Word8 -> Word64 -> CBool -> IO CBool
foreign import ccall unsafe "extism.h extism_plugin_call" extism_plugin_call :: Ptr ExtismContext -> Int32 -> CString -> Ptr Word8 -> Word64 -> IO Int32
foreign import ccall unsafe "extism.h extism_plugin_function_exists" extism_plugin_function_exists :: Ptr ExtismContext -> Int32 -> CString -> IO CBool
foreign import ccall unsafe "extism.h extism_error" extism_error :: Ptr ExtismContext -> Int32 -> IO CString
foreign import ccall unsafe "extism.h extism_plugin_output_length" extism_plugin_output_length :: Ptr ExtismContext -> Int32 -> IO Word64
foreign import ccall unsafe "extism.h extism_plugin_output_data" extism_plugin_output_data :: Ptr ExtismContext -> Int32 -> IO (Ptr Word8)
foreign import ccall unsafe "extism.h extism_log_file" extism_log_file :: CString -> CString -> IO CBool
foreign import ccall unsafe "extism.h extism_plugin_config" extism_plugin_config :: Ptr ExtismContext -> Int32 -> Ptr Word8 -> Int64 -> IO CBool
foreign import ccall unsafe "extism.h extism_plugin_free" extism_plugin_free :: Ptr ExtismContext -> Int32 -> IO ()
foreign import ccall unsafe "extism.h extism_context_reset" extism_context_reset :: Ptr ExtismContext -> IO ()
foreign import ccall unsafe "extism.h extism_version" extism_version :: IO CString
-- | Plugins can be used to call WASM function
newtype Plugin = Plugin (ForeignPtr ExtismPlugin) deriving Eq
-- Context manages plugins
newtype Context = Context (ForeignPtr ExtismContext)
-- | Cancellation handle for Plugins
newtype CancelHandle = CancelHandle (Ptr ExtismCancelHandle)
-- Plugins can be used to call WASM function
data Plugin = Plugin Context Int32
-- | Log level
data LogLevel = LogError | LogWarn | LogInfo | LogDebug | LogTrace deriving (Show, Eq)
-- Log level
data LogLevel = Error | Warn | Info | Debug | Trace deriving (Show)
-- | Extism error
newtype Error = ExtismError String deriving (Show, Eq)
-- Extism error
newtype Error = ErrorMessage String deriving Show
-- | Result type
type Result a = Either Error a
-- Helper function to convert a string to a bytestring
toByteString :: String -> ByteString
toByteString x = B.pack (Prelude.map c2w x)
-- | Helper function to convert a 'String' to a 'ByteString'
toByteString :: String -> B.ByteString
toByteString x = B.pack (map c2w x)
-- Helper function to convert a bytestring to a string
fromByteString :: ByteString -> String
fromByteString bs = Prelude.map w2c $ B.unpack bs
-- | Helper function to convert a 'ByteString' to a 'String'
fromByteString :: B.ByteString -> String
fromByteString bs = map w2c $ B.unpack bs
-- Get the Extism version string
-- | Get the Extism version string
extismVersion :: () -> IO String
extismVersion () = do
v <- extism_version
peekCString v
-- Remove all registered plugins in a Context
reset :: Context -> IO ()
reset (Context ctx) =
withForeignPtr ctx extism_context_reset
-- Create a new context
newContext :: () -> IO Context
newContext () = do
ptr <- extism_context_new
fptr <- newForeignPtr extism_context_free ptr
return (Context fptr)
-- Execute a function with a new context that is destroyed when it returns
withContext :: (Context -> IO a) -> IO a
withContext f = do
ctx <- newContext ()
f ctx
-- Create a plugin from a WASM module, `useWasi` determines if WASI should
-- be linked
plugin :: Context -> B.ByteString -> Bool -> IO (Either Error Plugin)
plugin c wasm useWasi =
-- | Create a 'Plugin' from a WASM module, `useWasi` determines if WASI should
-- | be linked
plugin :: B.ByteString -> [Function] -> Bool -> IO (Result Plugin)
plugin wasm functions useWasi =
let nfunctions = fromIntegral (length functions) in
let length = fromIntegral (B.length wasm) in
let wasi = fromInteger (if useWasi then 1 else 0) in
let Context ctx = c in
do
withForeignPtr ctx (\ctx -> do
funcs <- mapM (\(Function ptr _) -> withForeignPtr ptr (\x -> do return x)) functions
alloca (\e-> do
let errmsg = (e :: Ptr CString)
p <- unsafeUseAsCString wasm (\s ->
extism_plugin_new ctx (castPtr s) length wasi)
if p < 0 then do
err <- extism_error ctx (-1)
e <- peekCString err
return $ Left (ErrorMessage e)
else
return $ Right (Plugin c p))
withArray funcs (\funcs ->
extism_plugin_new (castPtr s) length funcs nfunctions wasi errmsg ))
if p == nullPtr then do
err <- peek errmsg
e <- peekCString err
extism_plugin_new_error_free err
return $ Left (ExtismError e)
else do
ptr <- Foreign.Concurrent.newForeignPtr p (extism_plugin_free p)
return $ Right (Plugin ptr))
-- Create a plugin from a Manifest
pluginFromManifest :: Context -> Manifest -> Bool -> IO (Either Error Plugin)
pluginFromManifest ctx manifest useWasi =
-- | Create a 'Plugin' from a 'Manifest'
pluginFromManifest :: Manifest -> [Function] -> Bool -> IO (Result Plugin)
pluginFromManifest manifest functions useWasi =
let wasm = toByteString $ toString manifest in
plugin ctx wasm useWasi
plugin wasm functions useWasi
-- Update a plugin with a new WASM module
update :: Plugin -> B.ByteString -> Bool -> IO (Either Error ())
update (Plugin (Context ctx) id) wasm useWasi =
let length = fromIntegral (B.length wasm) in
let wasi = fromInteger (if useWasi then 1 else 0) in
do
withForeignPtr ctx (\ctx -> do
b <- unsafeUseAsCString wasm (\s ->
extism_plugin_update ctx id (castPtr s) length wasi)
if b <= 0 then do
err <- extism_error ctx (-1)
e <- peekCString err
return $ Left (ErrorMessage e)
else
return (Right ()))
-- | Check if a 'Plugin' is valid
isValid :: Plugin -> IO Bool
isValid (Plugin p) = withForeignPtr p (\x -> return (x /= nullPtr))
-- Update a plugin with a new Manifest
updateManifest :: Plugin -> Manifest -> Bool -> IO (Either Error ())
updateManifest plugin manifest useWasi =
let wasm = toByteString $ toString manifest in
update plugin wasm useWasi
-- Check if a plugin is value
isValid :: Plugin -> Bool
isValid (Plugin _ p) = p >= 0
convertMaybeString Nothing = JSNull
convertMaybeString (Just s) = JSString (toJSString s)
-- Set configuration values for a plugin
-- | Set configuration values for a plugin
setConfig :: Plugin -> [(String, Maybe String)] -> IO Bool
setConfig (Plugin (Context ctx) plugin) x =
if plugin < 0
then return False
else
let obj = toJSObject [(k, convertMaybeString v) | (k, v) <- x] in
let bs = toByteString (encode obj) in
let length = fromIntegral (B.length bs) in
unsafeUseAsCString bs (\s -> do
withForeignPtr ctx (\ctx -> do
b <- extism_plugin_config ctx plugin (castPtr s) length
return $ b /= 0))
setConfig (Plugin plugin) x =
let obj = Text.JSON.toJSObject [(k, Text.JSON.showJSON v) | (k, v) <- x] in
let bs = toByteString (Text.JSON.encode obj) in
let length = fromIntegral (B.length bs) in
unsafeUseAsCString bs (\s -> do
withForeignPtr plugin (\plugin-> do
b <- extism_plugin_config plugin (castPtr s) length
return $ b /= 0))
levelStr Error = "error"
levelStr Debug = "debug"
levelStr Warn = "warn"
levelStr Trace = "trace"
levelStr Info = "info"
levelStr LogError = "error"
levelStr LogDebug = "debug"
levelStr LogWarn = "warn"
levelStr LogTrace = "trace"
levelStr LogInfo = "info"
-- Set the log file and level, this is a global configuration
-- | Set the log file and level, this is a global configuration
setLogFile :: String -> LogLevel -> IO Bool
setLogFile filename level =
let s = levelStr level in
@@ -158,35 +130,65 @@ setLogFile filename level =
b <- extism_log_file f l
return $ b /= 0))
-- Check if a function exists in the given plugin
-- | Check if a function exists in the given plugin
functionExists :: Plugin -> String -> IO Bool
functionExists (Plugin (Context ctx) plugin) name = do
withForeignPtr ctx (\ctx -> do
b <- withCString name (extism_plugin_function_exists ctx plugin)
functionExists (Plugin plugin) name = do
withForeignPtr plugin (\plugin -> do
b <- withCString name (extism_plugin_function_exists plugin)
if b == 1 then return True else return False)
--- Call a function provided by the given plugin
call :: Plugin -> String -> B.ByteString -> IO (Either Error B.ByteString)
call (Plugin (Context ctx) plugin) name input =
--- | Call a function provided by the given plugin
call :: Plugin -> String -> B.ByteString -> IO (Result B.ByteString)
call (Plugin plugin) name input =
let length = fromIntegral (B.length input) in
do
withForeignPtr ctx (\ctx -> do
withForeignPtr plugin (\plugin -> do
rc <- withCString name (\name ->
unsafeUseAsCString input (\input ->
extism_plugin_call ctx plugin name (castPtr input) length))
err <- extism_error ctx plugin
extism_plugin_call plugin name (castPtr input) length))
err <- extism_error plugin
if err /= nullPtr
then do e <- peekCString err
return $ Left (ErrorMessage e)
return $ Left (ExtismError e)
else if rc == 0
then do
length <- extism_plugin_output_length ctx plugin
ptr <- extism_plugin_output_data ctx plugin
buf <- packCStringLen (castPtr ptr, fromIntegral length)
length <- extism_plugin_output_length plugin
ptr <- extism_plugin_output_data plugin
buf <- B.packCStringLen (castPtr ptr, fromIntegral length)
return $ Right buf
else return $ Left (ErrorMessage "Call failed"))
else return $ Left (ExtismError "Call failed"))
-- Free a plugin
free :: Plugin -> IO ()
free (Plugin (Context ctx) plugin) =
withForeignPtr ctx (`extism_plugin_free` plugin)
-- | Call a function with a string argument and return a string
callString :: Plugin -> String -> String -> IO (Result String)
callString p name input = do
res <- call p name (toByteString input)
case res of
Left x -> return $ Left x
Right x -> return $ Right (fromByteString x)
-- | Create a new 'CancelHandle' that can be used to cancel a running plugin
-- | from another thread.
cancelHandle :: Plugin -> IO CancelHandle
cancelHandle (Plugin plugin) = do
handle <- withForeignPtr plugin extism_plugin_cancel_handle
return (CancelHandle handle)
-- | Cancel a running plugin using a 'CancelHandle'
cancel :: CancelHandle -> IO Bool
cancel (CancelHandle handle) =
extism_plugin_cancel handle
pluginID :: Plugin -> IO Data.UUID.UUID
pluginID (Plugin plugin) =
withForeignPtr plugin (\plugin -> do
ptr <- extism_plugin_id plugin
buf <- B.packCStringLen (castPtr ptr, 16)
case Data.UUID.fromByteString (BL.fromStrict buf) of
Nothing -> error "Invalid Plugin ID"
Just x -> return x)
unwrap (Right x) = x
unwrap (Left (ExtismError msg)) = do
error msg

View File

@@ -0,0 +1,120 @@
{-# LANGUAGE ForeignFunctionInterface #-}
module Extism.Bindings where
import Foreign.C.Types
import Foreign.Ptr
import Foreign.C.String
import Data.Int
import Data.Word
import Foreign.Storable
import Foreign.Marshal.Array
import Foreign.StablePtr
type FreeCallback = Ptr () -> IO ()
newtype ExtismPlugin = ExtismPlugin () deriving Show
newtype ExtismFunction = ExtismFunction () deriving Show
newtype ExtismCancelHandle = ExtismCancelHandle () deriving Show
newtype ExtismCurrentPlugin = ExtismCurrentPlugin () deriving Show
data ValType = I32 | I64 | F32 | F64 | V128 | FuncRef | ExternRef deriving (Show, Eq)
data Val = ValI32 Int32 | ValI64 Int64 | ValF32 Float | ValF64 Double deriving (Show, Eq)
typeOfVal (ValI32 _) = I32
typeOfVal (ValI64 _) = I64
typeOfVal (ValF32 _) = F32
typeOfVal (ValF64 _) = F64
type CCallback = Ptr ExtismCurrentPlugin -> Ptr Val -> Word64 -> Ptr Val -> Word64 -> Ptr () -> IO ()
_32Bit = sizeOf (undefined :: Int) == 4
instance Storable Val where
sizeOf _ =
if _32Bit then 12 else 16
alignment _ = 1
peek ptr = do
let offs = if _32Bit then 4 else 8
t <- valTypeOfInt <$> peekByteOff ptr 0
case t of
I32 -> ValI32 <$> peekByteOff ptr offs
I64 -> ValI64 <$> peekByteOff ptr offs
F32 -> ValF32 <$> peekByteOff ptr offs
F64 -> ValF64 <$> peekByteOff ptr offs
poke ptr x = do
let offs = if _32Bit then 4 else 8
pokeByteOff ptr 0 (typeOfVal x)
case x of
ValI32 x -> pokeByteOff ptr offs x
ValI64 x -> pokeByteOff ptr offs x
ValF32 x -> pokeByteOff ptr offs x
ValF64 x -> pokeByteOff ptr offs x
intOfValType :: ValType -> CInt
intOfValType I32 = 0
intOfValType I64 = 1
intOfValType F32 = 2
intOfValType F64 = 3
intOfValType V128 = 4
intOfValType FuncRef = 5
intOfValType ExternRef = 6
valTypeOfInt :: CInt -> ValType
valTypeOfInt 0 = I32
valTypeOfInt 1 = I64
valTypeOfInt 2 = F32
valTypeOfInt 3 = F64
valTypeOfInt 4 = V128
valTypeOfInt 5 = FuncRef
valTypeOfInt 6 = ExternRef
valTypeOfInt _ = error "Invalid ValType"
instance Storable ValType where
sizeOf _ = 4
alignment _ = 1
peek ptr = do
x <- peekByteOff ptr 0
return $ valTypeOfInt (x :: CInt)
poke ptr x = do
pokeByteOff ptr 0 (intOfValType x)
foreign import ccall safe "extism.h extism_plugin_new" extism_plugin_new :: Ptr Word8 -> Word64 -> Ptr (Ptr ExtismFunction) -> Word64 -> CBool -> Ptr CString -> IO (Ptr ExtismPlugin)
foreign import ccall safe "extism.h extism_plugin_call" extism_plugin_call :: Ptr ExtismPlugin -> CString -> Ptr Word8 -> Word64 -> IO Int32
foreign import ccall safe "extism.h extism_plugin_function_exists" extism_plugin_function_exists :: Ptr ExtismPlugin -> CString -> IO CBool
foreign import ccall safe "extism.h extism_plugin_error" extism_error :: Ptr ExtismPlugin -> IO CString
foreign import ccall safe "extism.h extism_plugin_output_length" extism_plugin_output_length :: Ptr ExtismPlugin -> IO Word64
foreign import ccall safe "extism.h extism_plugin_output_data" extism_plugin_output_data :: Ptr ExtismPlugin -> IO (Ptr Word8)
foreign import ccall safe "extism.h extism_log_file" extism_log_file :: CString -> CString -> IO CBool
foreign import ccall safe "extism.h extism_plugin_config" extism_plugin_config :: Ptr ExtismPlugin -> Ptr Word8 -> Int64 -> IO CBool
foreign import ccall safe "extism.h extism_plugin_free" extism_plugin_free :: Ptr ExtismPlugin -> IO ()
foreign import ccall safe "extism.h extism_plugin_new_error_free" extism_plugin_new_error_free :: CString -> IO ()
foreign import ccall safe "extism.h extism_version" extism_version :: IO CString
foreign import ccall safe "extism.h extism_plugin_id" extism_plugin_id :: Ptr ExtismPlugin -> IO (Ptr Word8)
foreign import ccall safe "extism.h extism_plugin_cancel_handle" extism_plugin_cancel_handle :: Ptr ExtismPlugin -> IO (Ptr ExtismCancelHandle)
foreign import ccall safe "extism.h extism_plugin_cancel" extism_plugin_cancel :: Ptr ExtismCancelHandle -> IO Bool
foreign import ccall safe "extism.h extism_function_new" extism_function_new :: CString -> Ptr ValType -> Word64 -> Ptr ValType -> Word64 -> FunPtr CCallback -> Ptr () -> FunPtr FreeCallback -> IO (Ptr ExtismFunction)
foreign import ccall safe "extism.h extism_function_free" extism_function_free :: Ptr ExtismFunction -> IO ()
foreign import ccall safe "extism.h extism_current_plugin_memory" extism_current_plugin_memory :: Ptr ExtismCurrentPlugin -> IO (Ptr Word8)
foreign import ccall safe "extism.h extism_current_plugin_memory_alloc" extism_current_plugin_memory_alloc :: Ptr ExtismCurrentPlugin -> Word64 -> IO Word64
foreign import ccall safe "extism.h extism_current_plugin_memory_length" extism_current_plugin_memory_length :: Ptr ExtismCurrentPlugin -> Word64 -> IO Word64
foreign import ccall safe "extism.h extism_current_plugin_memory_free" extism_current_plugin_memory_free :: Ptr ExtismCurrentPlugin -> Word64 -> IO ()
freePtr ptr = do
let s = castPtrToStablePtr ptr
(a, b, c) <- deRefStablePtr s
freeHaskellFunPtr b
freeHaskellFunPtr c
freeStablePtr s
foreign import ccall "wrapper" freePtrWrap :: FreeCallback -> IO (FunPtr FreeCallback)
foreign import ccall "wrapper" callbackWrap :: CCallback -> IO (FunPtr CCallback)
callback :: (Ptr ExtismCurrentPlugin -> [Val] -> a -> IO [Val]) -> (Ptr ExtismCurrentPlugin -> Ptr Val -> Word64 -> Ptr Val -> Word64 -> Ptr () -> IO ())
callback f plugin params nparams results nresults ptr = do
p <- peekArray (fromIntegral nparams) params
(userData, _, _) <- deRefStablePtr (castPtrToStablePtr ptr)
res <- f plugin p userData
pokeArray results res

View File

@@ -0,0 +1,157 @@
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Extism.HostFunction(
CurrentPlugin(..),
ValType(..),
Val(..),
MemoryHandle,
memoryAlloc,
memoryLength,
memoryFree,
memory,
memoryOffset,
memoryBytes,
memoryString,
allocBytes,
allocString,
toI32,
toI64,
toF32,
toF64,
fromI32,
fromI64,
fromF32,
fromF64,
hostFunction
) where
import Extism
import Extism.Bindings
import Data.Word
import qualified Data.ByteString as B
import Foreign.Ptr
import Foreign.ForeignPtr
import Foreign.C.String
import Foreign.StablePtr
import Foreign.Concurrent
import Foreign.Marshal.Array
import qualified Data.ByteString.Internal as BS (c2w)
-- | Access the plugin that is currently executing from inside a host function
type CurrentPlugin = Ptr ExtismCurrentPlugin
-- | A memory handle represents an allocated block of Extism memory
newtype MemoryHandle = MemoryHandle Word64 deriving (Num, Enum, Eq, Ord, Real, Integral, Show)
-- | Allocate a new handle of the given size
memoryAlloc :: CurrentPlugin -> Word64 -> IO MemoryHandle
memoryAlloc p n = MemoryHandle <$> extism_current_plugin_memory_alloc p n
-- | Get the length of a handle, returns 0 if the handle is invalid
memoryLength :: CurrentPlugin -> MemoryHandle -> IO Word64
memoryLength p (MemoryHandle offs) = extism_current_plugin_memory_length p offs
-- | Free allocated memory
memoryFree :: CurrentPlugin -> MemoryHandle -> IO ()
memoryFree p (MemoryHandle offs) = extism_current_plugin_memory_free p offs
-- | Access a pointer to the entire memory region
memory :: CurrentPlugin -> IO (Ptr Word8)
memory = extism_current_plugin_memory
-- | Access the pointer for the given 'MemoryHandle'
memoryOffset :: CurrentPlugin -> MemoryHandle -> IO (Ptr Word8)
memoryOffset plugin (MemoryHandle offs) = do
x <- extism_current_plugin_memory plugin
return $ plusPtr x (fromIntegral offs)
-- | Access the data associated with a handle as a 'ByteString'
memoryBytes :: CurrentPlugin -> MemoryHandle -> IO B.ByteString
memoryBytes plugin offs = do
ptr <- memoryOffset plugin offs
len <- memoryLength plugin offs
arr <- peekArray (fromIntegral len) ptr
return $ B.pack arr
-- | Access the data associated with a handle as a 'String'
memoryString :: CurrentPlugin -> MemoryHandle -> IO String
memoryString plugin offs = do
ptr <- memoryOffset plugin offs
len <- memoryLength plugin offs
arr <- peekArray (fromIntegral len) ptr
return $ fromByteString $ B.pack arr
-- | Allocate memory and copy an existing 'ByteString' into it
allocBytes :: CurrentPlugin -> B.ByteString -> IO MemoryHandle
allocBytes plugin s = do
let length = B.length s
offs <- memoryAlloc plugin (fromIntegral length)
ptr <- memoryOffset plugin offs
pokeArray ptr (B.unpack s)
return offs
-- | Allocate memory and copy an existing 'String' into it
allocString :: CurrentPlugin -> String -> IO MemoryHandle
allocString plugin s = do
let length = Prelude.length s
offs <- memoryAlloc plugin (fromIntegral length)
ptr <- memoryOffset plugin offs
pokeArray ptr (Prelude.map BS.c2w s)
return offs
-- | Create a new I32 'Val'
toI32 :: Integral a => a -> Val
toI32 x = ValI32 (fromIntegral x)
-- | Create a new I64 'Val'
toI64 :: Integral a => a -> Val
toI64 x = ValI64 (fromIntegral x)
-- | Create a new F32 'Val'
toF32 :: Float -> Val
toF32 = ValF32
-- | Create a new F64 'Val'
toF64 :: Double -> Val
toF64 = ValF64
-- | Get I32 'Val'
fromI32 :: Integral a => Val -> Maybe a
fromI32 (ValI32 x) = Just (fromIntegral x)
fromI32 _ = Nothing
-- | Get I64 'Val'
fromI64 :: Integral a => Val -> Maybe a
fromI64 (ValI64 x) = Just (fromIntegral x)
fromI64 _ = Nothing
-- | Get F32 'Val'
fromF32 :: Val -> Maybe Float
fromF32 (ValF32 x) = Just x
fromF32 _ = Nothing
-- | Get F64 'Val'
fromF64 :: Val -> Maybe Double
fromF64 (ValF64 x) = Just x
fromF64 _ = Nothing
-- | Create a new 'Function' that can be called from a 'Plugin'
hostFunction :: String -> [ValType] -> [ValType] -> (CurrentPlugin -> [Val] -> a -> IO [Val]) -> a -> IO Function
hostFunction name params results f v =
let nparams = fromIntegral $ length params in
let nresults = fromIntegral $ length results in
do
cb <- callbackWrap (callback f :: CCallback)
free <- freePtrWrap freePtr
userData <- newStablePtr (v, free, cb)
let userDataPtr = castStablePtrToPtr userData
x <- withCString name (\name -> do
withArray params (\params ->
withArray results (\results -> do
extism_function_new name params nparams results nresults cb userDataPtr free)))
let freeFn = extism_function_free x
fptr <- Foreign.Concurrent.newForeignPtr x freeFn
return $ Function fptr (castPtrToStablePtr userDataPtr)

View File

@@ -1,183 +0,0 @@
module Extism.Manifest where
import Text.JSON
(
JSValue(JSNull, JSString, JSArray),
toJSString, showJSON, makeObj, encode
)
import qualified Data.ByteString as B
import qualified Data.ByteString.Base64 as B64
import qualified Data.ByteString.Char8 as BS (unpack)
valueOrNull f Nothing = JSNull
valueOrNull f (Just x) = f x
makeString s = JSString (toJSString s)
stringOrNull = valueOrNull makeString
makeArray f [] = JSNull
makeArray f x = JSArray [f a | a <- x]
filterNulls obj = [(a, b) | (a, b) <- obj, not (isNull b)]
mapObj f x = makeObj (filterNulls [(a, f b) | (a, b) <- x])
isNull JSNull = True
isNull _ = False
newtype Memory = Memory
{
memoryMax :: Maybe Int
}
class JSONValue a where
toJSONValue :: a -> JSValue
instance JSONValue Memory where
toJSONValue x =
case memoryMax x of
Nothing -> makeObj []
Just max -> makeObj [("max", showJSON max)]
data HttpRequest = HttpRequest
{
url :: String
, header :: [(String, String)]
, method :: Maybe String
}
requestObj x =
let meth = stringOrNull $ method x in
let h = mapObj makeString $ header x in
filterNulls [
("url", makeString $ url x),
("header", h),
("method", meth)
]
instance JSONValue HttpRequest where
toJSONValue x =
makeObj $ requestObj x
data WasmFile = WasmFile
{
filePath :: String
, fileName :: Maybe String
, fileHash :: Maybe String
}
instance JSONValue WasmFile where
toJSONValue x =
let path = makeString $ filePath x in
let name = stringOrNull $ fileName x in
let hash = stringOrNull $ fileHash x in
makeObj $ filterNulls [
("path", path),
("name", name),
("hash", hash)
]
data WasmCode = WasmCode
{
codeBytes :: B.ByteString
, codeName :: Maybe String
, codeHash :: Maybe String
}
instance JSONValue WasmCode where
toJSONValue x =
let bytes = makeString $ BS.unpack $ B64.encode $ codeBytes x in
let name = stringOrNull $ codeName x in
let hash = stringOrNull $ codeHash x in
makeObj $ filterNulls [
("data", bytes),
("name", name),
("hash", hash)
]
data WasmURL = WasmURL
{
req :: HttpRequest
, urlName :: Maybe String
, urlHash :: Maybe String
}
instance JSONValue WasmURL where
toJSONValue x =
let request = requestObj $ req x in
let name = stringOrNull $ urlName x in
let hash = stringOrNull $ urlHash x in
makeObj $ filterNulls $ ("name", name) : ("hash", hash) : request
data Wasm = File WasmFile | Code WasmCode | URL WasmURL
instance JSONValue Wasm where
toJSONValue x =
case x of
File f -> toJSONValue f
Code d -> toJSONValue d
URL u -> toJSONValue u
wasmFile :: String -> Wasm
wasmFile path =
File WasmFile { filePath = path, fileName = Nothing, fileHash = Nothing}
wasmURL :: String -> String -> Wasm
wasmURL method url =
let r = HttpRequest { url = url, header = [], method = Just method } in
URL WasmURL { req = r, urlName = Nothing, urlHash = Nothing }
wasmCode :: B.ByteString -> Wasm
wasmCode code =
Code WasmCode { codeBytes = code, codeName = Nothing, codeHash = Nothing }
withName :: Wasm -> String -> Wasm
withName (Code code) name = Code code { codeName = Just name }
withName (URL url) name = URL url { urlName = Just name }
withName (File f) name = File f { fileName = Just name }
withHash :: Wasm -> String -> Wasm
withHash (Code code) hash = Code code { codeHash = Just hash }
withHash (URL url) hash = URL url { urlHash = Just hash }
withHash (File f) hash = File f { fileHash = Just hash }
data Manifest = Manifest
{
wasm :: [Wasm]
, memory :: Maybe Memory
, config :: [(String, String)]
, allowed_hosts :: [String]
}
manifest :: [Wasm] -> Manifest
manifest wasm =
Manifest {
wasm = wasm,
memory = Nothing,
config = [],
allowed_hosts = []
}
withConfig :: Manifest -> [(String, String)] -> Manifest
withConfig m config =
m { config = config }
withHosts :: Manifest -> [String] -> Manifest
withHosts m hosts =
m { allowed_hosts = hosts }
instance JSONValue Manifest where
toJSONValue x =
let w = makeArray toJSONValue $ wasm x in
let mem = valueOrNull toJSONValue $ memory x in
let c = mapObj makeString $ config x in
let hosts = makeArray makeString $ allowed_hosts x in
makeObj $ filterNulls [
("wasm", w),
("memory", mem),
("config", c),
("allowed_hosts", hosts)
]
toString :: Manifest -> String
toString manifest =
encode (toJSONValue manifest)

View File

@@ -1,67 +0,0 @@
# This file was automatically generated by 'stack init'
#
# Some commonly used options have been documented as comments in this file.
# For advanced use and comprehensive documentation of the format, please see:
# https://docs.haskellstack.org/en/stable/yaml_configuration/
# Resolver to choose a 'specific' stackage snapshot or a compiler version.
# A snapshot resolver dictates the compiler version and the set of packages
# to be used for project dependencies. For example:
#
# resolver: lts-3.5
# resolver: nightly-2015-09-21
# resolver: ghc-7.10.2
#
# The location of a snapshot can be provided as a file or url. Stack assumes
# a snapshot provided as a file might change, whereas a url resource does not.
#
# resolver: ./custom-snapshot.yaml
# resolver: https://example.com/snapshots/2018-01-01.yaml
resolver:
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/nightly/2022/8/30.yaml
# User packages to be built.
# Various formats can be used as shown in the example below.
#
# packages:
# - some-directory
# - https://example.com/foo/bar/baz-0.0.2.tar.gz
# subdirs:
# - auto-update
# - wai
packages:
- .
# Dependency packages to be pulled from upstream that are not in the resolver.
# These entries can reference officially published versions as well as
# forks / in-progress versions pinned to a git hash. For example:
#
# extra-deps:
# - acme-missiles-0.3
# - git: https://github.com/commercialhaskell/stack.git
# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a
#
# extra-deps: []
# Override default flag values for local packages and extra-deps
# flags: {}
# Extra package databases containing global packages
# extra-package-dbs: []
# Control whether we use the GHC we find on the path
# system-ghc: true
#
# Require a specific version of stack, using version ranges
# require-stack-version: -any # Default
# require-stack-version: ">=2.7"
#
# Override the architecture used by stack, especially useful on Windows
# arch: i386
# arch: x86_64
#
# Extra directories used by stack for building
# extra-include-dirs: [/path/to/dir]
# extra-lib-dirs: [/path/to/dir]
#
# Allow a newer minor version of GHC than the snapshot specifies
# compiler-check: newer-minor

View File

@@ -1,13 +0,0 @@
# This file was autogenerated by Stack.
# You should not edit this file by hand.
# For more information, please see the documentation at:
# https://docs.haskellstack.org/en/stable/lock_files
packages: []
snapshots:
- completed:
size: 632828
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/nightly/2022/8/30.yaml
sha256: 5b02c2ce430ac62843fb884126765628da2ca2280bb9de0c6635c723e32a9f6b
original:
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/nightly/2022/8/30.yaml

Some files were not shown because too many files have changed in this diff Show More