mirror of
https://github.com/extism/extism.git
synced 2026-01-09 13:57:55 -05:00
- Adds `memory.max_var_bytes` to the manifest to limit the number of bytes allowed to be stored in Extism vars - if `max_var_bytes` is set to 0 then vars are disabled. - Adds some builder functions to `MemoryOptions` struct - Sets the default var store size to 1mb - Includes a test to make sure `var_set` returns an error when the limit is reached
231 lines
6.4 KiB
JSON
231 lines
6.4 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"title": "Manifest",
|
|
"description": "The `Manifest` type is used to configure the runtime and specify how to load modules.",
|
|
"type": "object",
|
|
"properties": {
|
|
"allowed_hosts": {
|
|
"description": "Specifies which hosts may be accessed via HTTP, if this is empty then no hosts may be accessed. Wildcards may be used.",
|
|
"default": null,
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
],
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"allowed_paths": {
|
|
"description": "Specifies which paths should be made available on disk when using WASI. This is a mapping from the path on disk to the path it should be available inside the plugin. For example, `\".\": \"/tmp\"` would mount the current directory as `/tmp` inside the module",
|
|
"default": null,
|
|
"type": [
|
|
"object",
|
|
"null"
|
|
],
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"config": {
|
|
"description": "Config values are made accessible using the PDK `extism_config_get` function",
|
|
"default": {},
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"memory": {
|
|
"description": "Memory options",
|
|
"default": {
|
|
"max_http_response_bytes": null,
|
|
"max_pages": null,
|
|
"max_var_bytes": null
|
|
},
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/MemoryOptions"
|
|
}
|
|
]
|
|
},
|
|
"timeout_ms": {
|
|
"description": "The plugin timeout in milliseconds",
|
|
"default": null,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
],
|
|
"format": "uint64",
|
|
"minimum": 0.0
|
|
},
|
|
"wasm": {
|
|
"description": "WebAssembly modules, the `main` module should be named `main` or listed last",
|
|
"default": [],
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/Wasm"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"definitions": {
|
|
"MemoryOptions": {
|
|
"description": "Configure memory settings",
|
|
"type": "object",
|
|
"properties": {
|
|
"max_http_response_bytes": {
|
|
"description": "The maximum number of bytes allowed in an HTTP response",
|
|
"default": null,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
],
|
|
"format": "uint64",
|
|
"minimum": 0.0
|
|
},
|
|
"max_pages": {
|
|
"description": "The max number of WebAssembly pages that should be allocated",
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
],
|
|
"format": "uint32",
|
|
"minimum": 0.0
|
|
},
|
|
"max_var_bytes": {
|
|
"description": "The maximum number of bytes allowed to be used by plugin vars. Setting this to 0 will disable Extism vars. The default value is 1mb.",
|
|
"default": 1048576,
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
],
|
|
"format": "uint64",
|
|
"minimum": 0.0
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"Wasm": {
|
|
"description": "The `Wasm` type specifies how to access a WebAssembly module",
|
|
"anyOf": [
|
|
{
|
|
"description": "From disk",
|
|
"type": "object",
|
|
"required": [
|
|
"path"
|
|
],
|
|
"properties": {
|
|
"hash": {
|
|
"description": "Module hash, if the data loaded from disk or via HTTP doesn't match an error will be raised",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"name": {
|
|
"description": "Module name, this is used by Extism to determine which is the `main` module",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"description": "From memory",
|
|
"type": "object",
|
|
"required": [
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"data": {
|
|
"type": [
|
|
"string",
|
|
"object"
|
|
],
|
|
"required": [
|
|
"len",
|
|
"ptr"
|
|
],
|
|
"properties": {
|
|
"len": {
|
|
"type": "integer",
|
|
"format": "uint64",
|
|
"minimum": 0.0
|
|
},
|
|
"ptr": {
|
|
"type": "integer",
|
|
"format": "uint64",
|
|
"minimum": 0.0
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"hash": {
|
|
"description": "Module hash, if the data loaded from disk or via HTTP doesn't match an error will be raised",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"name": {
|
|
"description": "Module name, this is used by Extism to determine which is the `main` module",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"description": "Via HTTP",
|
|
"type": "object",
|
|
"required": [
|
|
"url"
|
|
],
|
|
"properties": {
|
|
"hash": {
|
|
"description": "Module hash, if the data loaded from disk or via HTTP doesn't match an error will be raised",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"headers": {
|
|
"description": "Request headers",
|
|
"default": {},
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"method": {
|
|
"description": "Request method",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"name": {
|
|
"description": "Module name, this is used by Extism to determine which is the `main` module",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"url": {
|
|
"description": "The request URL",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|