Helper library for running a Run on Slack Deno function. The goal of this project is to provide modules for:
src/parse-payload.ts
)src/load-function-module.ts
)src/dispatch-payload.ts
)This library has two modes of operation:
mod.ts
as the entrypoint, a directory containing function code filescallback_id
ofreverse
, the provided directory argument must contain a reverse.ts
or areverse.js
.local-run.ts
as the entrypoint, the current working directory mustmanifest.json
, manifest.ts
or manifest.js
file, which in turnsource_file
property. ThisRegardless of which mode of operation used, each runtime definition for a function is specified in its own file and must be the default export.
By default, your Slack app has a /slack.json
file that defines a get-hooks
hook. The Slack CLI will automatically use the version of the
deno-slack-runtime
that is specified by the version of the get-hooks
script
that you're using. To use this library via the Slack CLI out of the box, use the
slack run
command in your terminal. This will automatically run the start
hook and wait for events to parse the payload.
You also have the option to
override this hook!
You can change the script that runs by specifying a new script for the start
command. For instance, if you wanted to point to your local instance of this
repo, you could accomplish that by adding a start
command to your
/slack.json
file and setting it to the following:
{
"hooks": {
/* ... */
"start": "deno run -q --config=deno.jsonc --allow-read --allow-net file:///<path-to-your-local-repo>/local-run.ts"
}
}
The script may be one of the following, depending on which mode you are operating this library in:
deno run -q --config=deno.jsonc --allow-read --allow-net https://deno.land/x/[email protected]/mod.ts ./<required-function-directory>
deno run -q --config=deno.jsonc --allow-read --allow-net https://deno.land/x/[email protected]/local-run.ts
⚠️ Don't forget to update the version specifier in the URL inside the above
commands to match the version you want to test! You can also drop the @
and
the version specifier to use the latest released version. You can also use the
file:///
protocol to point to a version present on your local filesystem.
You can also invoke this library directly from the command line:
deno run -q --config=deno.jsonc --allow-read --allow-net https://deno.land/x/[email protected]/mod.ts [-p <port>]
Which will start an API Server that will exectue user provided code
Returns 200 OK
when called, the runtime will use this route to ensure the
server is ready to handle requests
Post Body contains the event payload that used to be read via stdout. Returns
200 OK
when there are no errors with finding and executing the expected user
code. Will return a 500
otherwise.
If you make changes to this repo, or just want to make sure things are working as desired, you can run:
deno task test
To get a full test coverage report, run:
deno task coverage
We welcome contributions from everyone! Please check out our Contributor's Guide for how to contribute in a helpful and collaborative way.