Enable LLMs to handle webhooks with plaintext files
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

scaffold monorepo

+609
+1
.gitignore
··· 1 + node_modules
+4
.oxfmtrc.json
··· 1 + { 2 + "$schema": "./node_modules/oxfmt/configuration_schema.json", 3 + "ignorePatterns": [] 4 + }
+86
README.md
··· 1 + # Lure 2 + 3 + Lure is a library for processing webhook events into LLM-consumable prompts. It 4 + looks something like this: 5 + 6 + 1. An HTTP request is received at a path like `/webhooks/tangled` 7 + 2. Lure matches the path to a template file on disk, e.g. 8 + `./lures/tangled.lure`. The `.lure` file is part config, part template (more 9 + on this later). 10 + 3. According to the config, Lure validates the webhook according to the 11 + specified strategy (e.g. API key or HMAC verification) 12 + 4. If validation succeeds, Lure executes some callback with the string result of 13 + evaluating the template contents with the webhook payload. 14 + 15 + The goal is to trigger LLM executions in response to webhook events, but without 16 + the requirement for Zapier/IFTTT and with as little HTTP endpoint exposure as 17 + possible. Consumers of the Lure library provide their own HTTP server--no server 18 + is provided by Lure. 19 + 20 + ## `.lure` file format 21 + 22 + Lures are intended to be written by LLMs, so a `.lure` file is essentially a 23 + Markdown file with frontmatter. Here is a contrived example: 24 + 25 + ```md 26 + --- 27 + register: manual 28 + verify: 29 + hmac: 30 + location: header 31 + name: X-My-Header-Signature 32 + secret: $MY_WEBHOOK_SECRET 33 + payload: 34 + contentType: json 35 + schema: https://example.com/schema 36 + config: 37 + arbitrary: true 38 + someValue: 3 39 + --- 40 + 41 + You have received information about a <%= it.payload.event => event on My 42 + Service. Read the following payload and respond according to your skills: 43 + 44 + <%= it.payload.body %> 45 + ``` 46 + 47 + Different registration and verification methods can be supported, for generic 48 + implementations or vendor-specific requirements. Only one verification method 49 + can be specified per lure. 50 + 51 + ## Usage 52 + 53 + Use either the `@lure/fetch` or `@lure/express` packages to construct an 54 + endpoint handler that suits your HTTP server of choice. 55 + 56 + Both handler constructors take the following parameters: 57 + 58 + - `configSchema`: A Standard Schema for validating any extra config you would 59 + like to allow in the `config` frontmatter key 60 + - `luresDir`: A path to a directory of lures 61 + - `callback`: A function that you want to run in response to incoming webhooks. 62 + It will be called with the templated prompt `prompt` and the value of the 63 + `config` frontmatter value. 64 + 65 + ## Lifecycle 66 + 67 + ### At Startup 68 + 69 + 1. The parent program creates either a fetch or an Express lure handler, as 70 + described above. 71 + 2. Lure traverses the specified directory and discovers any `.lure` files. 72 + 3. Each `.lure` file has their frontmatter validated. The parsed config and 73 + template content are cached. 74 + 75 + ### Per Request 76 + 77 + 1. The requested path is checked against registered lure paths. 78 + 2. On a hit, we immediately return a 204 response, to keep the response 79 + time as low as possible. 80 + 3. Webhook requests are copied and added to a queue for processing. 81 + 3. The queue processor removes requests from the queue FIFO. If verification 82 + fails, the request is dropped. 83 + 4. On successful verification, the lure template is evaluated using the 84 + request. 85 + 5. Finally, the provided `callback` is executed with the fully-formed prompt, 86 + and the config object from the original `.lure` frontmatter.
+22
package.json
··· 1 + { 2 + "name": "lure", 3 + "version": "1.0.0", 4 + "description": "", 5 + "keywords": [], 6 + "license": "ISC", 7 + "author": "", 8 + "type": "module", 9 + "main": "index.js", 10 + "scripts": { 11 + "fmt": "oxfmt", 12 + "fmt:check": "oxfmt --check", 13 + "lint": "oxlint", 14 + "lint:fix": "oxlint --fix", 15 + "test": "echo \"Error: no test specified\" && exit 1" 16 + }, 17 + "devDependencies": { 18 + "oxfmt": "^0.41.0", 19 + "oxlint": "^1.56.0" 20 + }, 21 + "packageManager": "pnpm@11.0.0-dev.1005" 22 + }
+9
packages/core/README.md
··· 1 + # `@lure/core` 2 + 3 + Core implementation for working with lures. This includes: 4 + 5 + - Frontmatter validation 6 + - Verification logic 7 + - Template management 8 + 9 + Not intended to be used directly; use `@lure/fetch` or `@lure/express` instead.
+14
packages/core/package.json
··· 1 + { 2 + "name": "@lure/core", 3 + "version": "1.0.0", 4 + "description": "", 5 + "keywords": [], 6 + "license": "ISC", 7 + "author": "", 8 + "type": "module", 9 + "main": "index.js", 10 + "scripts": { 11 + "test": "echo \"Error: no test specified\" && exit 1" 12 + }, 13 + "packageManager": "pnpm@11.0.0-dev.1005" 14 + }
+4
packages/express/README.md
··· 1 + # `@lure/express` 2 + 3 + Provides an Express-compatible middleware function for handling webhook 4 + requests.
+14
packages/express/package.json
··· 1 + { 2 + "name": "@lure/express", 3 + "version": "1.0.0", 4 + "description": "", 5 + "keywords": [], 6 + "license": "ISC", 7 + "author": "", 8 + "type": "module", 9 + "main": "index.js", 10 + "scripts": { 11 + "test": "echo \"Error: no test specified\" && exit 1" 12 + }, 13 + "packageManager": "pnpm@11.0.0-dev.1005" 14 + }
+4
packages/fetch/README.md
··· 1 + # `@lure/fetch` 2 + 3 + Provides a fetch-compatible `Request -> Response` function for handling 4 + webhooks.
+14
packages/fetch/package.json
··· 1 + { 2 + "name": "@lure/fetch", 3 + "version": "1.0.0", 4 + "description": "", 5 + "keywords": [], 6 + "license": "ISC", 7 + "author": "", 8 + "type": "module", 9 + "main": "index.js", 10 + "scripts": { 11 + "test": "echo \"Error: no test specified\" && exit 1" 12 + }, 13 + "packageManager": "pnpm@11.0.0-dev.1005" 14 + }
+435
pnpm-lock.yaml
··· 1 + lockfileVersion: '9.0' 2 + 3 + settings: 4 + autoInstallPeers: true 5 + excludeLinksFromLockfile: false 6 + 7 + importers: 8 + 9 + .: 10 + devDependencies: 11 + oxfmt: 12 + specifier: ^0.41.0 13 + version: 0.41.0 14 + oxlint: 15 + specifier: ^1.56.0 16 + version: 1.56.0 17 + 18 + packages/core: {} 19 + 20 + packages/express: {} 21 + 22 + packages/fetch: {} 23 + 24 + packages: 25 + 26 + '@oxfmt/binding-android-arm-eabi@0.41.0': 27 + resolution: {integrity: sha512-REfrqeMKGkfMP+m/ScX4f5jJBSmVNYcpoDF8vP8f8eYPDuPGZmzp56NIUsYmx3h7f6NzC6cE3gqh8GDWrJHCKw==} 28 + engines: {node: ^20.19.0 || >=22.12.0} 29 + cpu: [arm] 30 + os: [android] 31 + 32 + '@oxfmt/binding-android-arm64@0.41.0': 33 + resolution: {integrity: sha512-s0b1dxNgb2KomspFV2LfogC2XtSJB42POXF4bMCLJyvQmAGos4ZtjGPfQreToQEaY0FQFjz3030ggI36rF1q5g==} 34 + engines: {node: ^20.19.0 || >=22.12.0} 35 + cpu: [arm64] 36 + os: [android] 37 + 38 + '@oxfmt/binding-darwin-arm64@0.41.0': 39 + resolution: {integrity: sha512-EGXGualADbv/ZmamE7/2DbsrYmjoPlAmHEpTL4vapLF4EfVD6fr8/uQDFnPJkUBjiSWFJZtFNsGeN1B6V3owmA==} 40 + engines: {node: ^20.19.0 || >=22.12.0} 41 + cpu: [arm64] 42 + os: [darwin] 43 + 44 + '@oxfmt/binding-darwin-x64@0.41.0': 45 + resolution: {integrity: sha512-WxySJEvdQQYMmyvISH3qDpTvoS0ebnIP63IMxLLWowJyPp/AAH0hdWtlo+iGNK5y3eVfa5jZguwNaQkDKWpGSw==} 46 + engines: {node: ^20.19.0 || >=22.12.0} 47 + cpu: [x64] 48 + os: [darwin] 49 + 50 + '@oxfmt/binding-freebsd-x64@0.41.0': 51 + resolution: {integrity: sha512-Y2kzMkv3U3oyuYaR4wTfGjOTYTXiFC/hXmG0yVASKkbh02BJkvD98Ij8bIevr45hNZ0DmZEgqiXF+9buD4yMYQ==} 52 + engines: {node: ^20.19.0 || >=22.12.0} 53 + cpu: [x64] 54 + os: [freebsd] 55 + 56 + '@oxfmt/binding-linux-arm-gnueabihf@0.41.0': 57 + resolution: {integrity: sha512-ptazDjdUyhket01IjPTT6ULS1KFuBfTUU97osTP96X5y/0oso+AgAaJzuH81oP0+XXyrWIHbRzozSAuQm4p48g==} 58 + engines: {node: ^20.19.0 || >=22.12.0} 59 + cpu: [arm] 60 + os: [linux] 61 + 62 + '@oxfmt/binding-linux-arm-musleabihf@0.41.0': 63 + resolution: {integrity: sha512-UkoL2OKxFD+56bPEBcdGn+4juTW4HRv/T6w1dIDLnvKKWr6DbarB/mtHXlADKlFiJubJz8pRkttOR7qjYR6lTA==} 64 + engines: {node: ^20.19.0 || >=22.12.0} 65 + cpu: [arm] 66 + os: [linux] 67 + 68 + '@oxfmt/binding-linux-arm64-gnu@0.41.0': 69 + resolution: {integrity: sha512-gofu0PuumSOHYczD8p62CPY4UF6ee+rSLZJdUXkpwxg6pILiwSDBIouPskjF/5nF3A7QZTz2O9KFNkNxxFN9tA==} 70 + engines: {node: ^20.19.0 || >=22.12.0} 71 + cpu: [arm64] 72 + os: [linux] 73 + 74 + '@oxfmt/binding-linux-arm64-musl@0.41.0': 75 + resolution: {integrity: sha512-VfVZxL0+6RU86T8F8vKiDBa+iHsr8PAjQmKGBzSCAX70b6x+UOMFl+2dNihmKmUwqkCazCPfYjt6SuAPOeQJ3g==} 76 + engines: {node: ^20.19.0 || >=22.12.0} 77 + cpu: [arm64] 78 + os: [linux] 79 + 80 + '@oxfmt/binding-linux-ppc64-gnu@0.41.0': 81 + resolution: {integrity: sha512-bwzokz2eGvdfJbc0i+zXMJ4BBjQPqg13jyWpEEZDOrBCQ91r8KeY2Mi2kUeuMTZNFXju+jcAbAbpyJxRGla0eg==} 82 + engines: {node: ^20.19.0 || >=22.12.0} 83 + cpu: [ppc64] 84 + os: [linux] 85 + 86 + '@oxfmt/binding-linux-riscv64-gnu@0.41.0': 87 + resolution: {integrity: sha512-POLM//PCH9uqDeNDwWL3b3DkMmI3oI2cU6hwc2lnztD1o7dzrQs3R9nq555BZ6wI7t2lyhT9CS+CRaz5X0XqLA==} 88 + engines: {node: ^20.19.0 || >=22.12.0} 89 + cpu: [riscv64] 90 + os: [linux] 91 + 92 + '@oxfmt/binding-linux-riscv64-musl@0.41.0': 93 + resolution: {integrity: sha512-NNK7PzhFqLUwx/G12Xtm6scGv7UITvyGdAR5Y+TlqsG+essnuRWR4jRNODWRjzLZod0T3SayRbnkSIWMBov33w==} 94 + engines: {node: ^20.19.0 || >=22.12.0} 95 + cpu: [riscv64] 96 + os: [linux] 97 + 98 + '@oxfmt/binding-linux-s390x-gnu@0.41.0': 99 + resolution: {integrity: sha512-qVf/zDC5cN9eKe4qI/O/m445er1IRl6swsSl7jHkqmOSVfknwCe5JXitYjZca+V/cNJSU/xPlC5EFMabMMFDpw==} 100 + engines: {node: ^20.19.0 || >=22.12.0} 101 + cpu: [s390x] 102 + os: [linux] 103 + 104 + '@oxfmt/binding-linux-x64-gnu@0.41.0': 105 + resolution: {integrity: sha512-ojxYWu7vUb6ysYqVCPHuAPVZHAI40gfZ0PDtZAMwVmh2f0V8ExpPIKoAKr7/8sNbAXJBBpZhs2coypIo2jJX4w==} 106 + engines: {node: ^20.19.0 || >=22.12.0} 107 + cpu: [x64] 108 + os: [linux] 109 + 110 + '@oxfmt/binding-linux-x64-musl@0.41.0': 111 + resolution: {integrity: sha512-O2exZLBxoCMIv2vlvcbkdedazJPTdG0VSup+0QUCfYQtx751zCZNboX2ZUOiQ/gDTdhtXvSiot0h6GEGkOyalA==} 112 + engines: {node: ^20.19.0 || >=22.12.0} 113 + cpu: [x64] 114 + os: [linux] 115 + 116 + '@oxfmt/binding-openharmony-arm64@0.41.0': 117 + resolution: {integrity: sha512-N+31/VoL+z+NNBt8viy3I4NaIdPbiYeOnB884LKqvXldaE2dRztdPv3q5ipfZYv0RwFp7JfqS4I27K/DSHCakg==} 118 + engines: {node: ^20.19.0 || >=22.12.0} 119 + cpu: [arm64] 120 + os: [openharmony] 121 + 122 + '@oxfmt/binding-win32-arm64-msvc@0.41.0': 123 + resolution: {integrity: sha512-Z7NAtu/RN8kjCQ1y5oDD0nTAeRswh3GJ93qwcW51srmidP7XPBmZbLlwERu1W5veCevQJtPS9xmkpcDTYsGIwQ==} 124 + engines: {node: ^20.19.0 || >=22.12.0} 125 + cpu: [arm64] 126 + os: [win32] 127 + 128 + '@oxfmt/binding-win32-ia32-msvc@0.41.0': 129 + resolution: {integrity: sha512-uNxxP3l4bJ6VyzIeRqCmBU2Q0SkCFgIhvx9/9dJ9V8t/v+jP1IBsuaLwCXGR8JPHtkj4tFp+RHtUmU2ZYAUpMA==} 130 + engines: {node: ^20.19.0 || >=22.12.0} 131 + cpu: [ia32] 132 + os: [win32] 133 + 134 + '@oxfmt/binding-win32-x64-msvc@0.41.0': 135 + resolution: {integrity: sha512-49ZSpbZ1noozyPapE8SUOSm3IN0Ze4b5nkO+4+7fq6oEYQQJFhE0saj5k/Gg4oewVPdjn0L3ZFeWk2Vehjcw7A==} 136 + engines: {node: ^20.19.0 || >=22.12.0} 137 + cpu: [x64] 138 + os: [win32] 139 + 140 + '@oxlint/binding-android-arm-eabi@1.56.0': 141 + resolution: {integrity: sha512-IyfYPthZyiSKwAv/dLjeO18SaK8MxLI9Yss2JrRDyweQAkuL3LhEy7pwIwI7uA3KQc1Vdn20kdmj3q0oUIQL6A==} 142 + engines: {node: ^20.19.0 || >=22.12.0} 143 + cpu: [arm] 144 + os: [android] 145 + 146 + '@oxlint/binding-android-arm64@1.56.0': 147 + resolution: {integrity: sha512-Ga5zYrzH6vc/VFxhn6MmyUnYEfy9vRpwTIks99mY3j6Nz30yYpIkWryI0QKPCgvGUtDSXVLEaMum5nA+WrNOSg==} 148 + engines: {node: ^20.19.0 || >=22.12.0} 149 + cpu: [arm64] 150 + os: [android] 151 + 152 + '@oxlint/binding-darwin-arm64@1.56.0': 153 + resolution: {integrity: sha512-ogmbdJysnw/D4bDcpf1sPLpFThZ48lYp4aKYm10Z/6Nh1SON6NtnNhTNOlhEY296tDFItsZUz+2tgcSYqh8Eyw==} 154 + engines: {node: ^20.19.0 || >=22.12.0} 155 + cpu: [arm64] 156 + os: [darwin] 157 + 158 + '@oxlint/binding-darwin-x64@1.56.0': 159 + resolution: {integrity: sha512-x8QE1h+RAtQ2g+3KPsP6Fk/tdz6zJQUv5c7fTrJxXV3GHOo+Ry5p/PsogU4U+iUZg0rj6hS+E4xi+mnwwlDCWQ==} 160 + engines: {node: ^20.19.0 || >=22.12.0} 161 + cpu: [x64] 162 + os: [darwin] 163 + 164 + '@oxlint/binding-freebsd-x64@1.56.0': 165 + resolution: {integrity: sha512-6G+WMZvwJpMvY7my+/SHEjb7BTk/PFbePqLpmVmUJRIsJMy/UlyYqjpuh0RCgYYkPLcnXm1rUM04kbTk8yS1Yg==} 166 + engines: {node: ^20.19.0 || >=22.12.0} 167 + cpu: [x64] 168 + os: [freebsd] 169 + 170 + '@oxlint/binding-linux-arm-gnueabihf@1.56.0': 171 + resolution: {integrity: sha512-YYHBsk/sl7fYwQOok+6W5lBPeUEvisznV/HZD2IfZmF3Bns6cPC3Z0vCtSEOaAWTjYWN3jVsdu55jMxKlsdlhg==} 172 + engines: {node: ^20.19.0 || >=22.12.0} 173 + cpu: [arm] 174 + os: [linux] 175 + 176 + '@oxlint/binding-linux-arm-musleabihf@1.56.0': 177 + resolution: {integrity: sha512-+AZK8rOUr78y8WT6XkDb04IbMRqauNV+vgT6f8ZLOH8wnpQ9i7Nol0XLxAu+Cq7Sb+J9wC0j6Km5hG8rj47/yQ==} 178 + engines: {node: ^20.19.0 || >=22.12.0} 179 + cpu: [arm] 180 + os: [linux] 181 + 182 + '@oxlint/binding-linux-arm64-gnu@1.56.0': 183 + resolution: {integrity: sha512-urse2SnugwJRojUkGSSeH2LPMaje5Q50yQtvtL9HFckiyeqXzoFwOAZqD5TR29R2lq7UHidfFDM9EGcchcbb8A==} 184 + engines: {node: ^20.19.0 || >=22.12.0} 185 + cpu: [arm64] 186 + os: [linux] 187 + 188 + '@oxlint/binding-linux-arm64-musl@1.56.0': 189 + resolution: {integrity: sha512-rkTZkBfJ4TYLjansjSzL6mgZOdN5IvUnSq3oNJSLwBcNvy3dlgQtpHPrRxrCEbbcp7oQ6If0tkNaqfOsphYZ9g==} 190 + engines: {node: ^20.19.0 || >=22.12.0} 191 + cpu: [arm64] 192 + os: [linux] 193 + 194 + '@oxlint/binding-linux-ppc64-gnu@1.56.0': 195 + resolution: {integrity: sha512-uqL1kMH3u69/e1CH2EJhP3CP28jw2ExLsku4o8RVAZ7fySo9zOyI2fy9pVlTAp4voBLVgzndXi3SgtdyCTa2aA==} 196 + engines: {node: ^20.19.0 || >=22.12.0} 197 + cpu: [ppc64] 198 + os: [linux] 199 + 200 + '@oxlint/binding-linux-riscv64-gnu@1.56.0': 201 + resolution: {integrity: sha512-j0CcMBOgV6KsRaBdsebIeiy7hCjEvq2KdEsiULf2LZqAq0v1M1lWjelhCV57LxsqaIGChXFuFJ0RiFrSRHPhSg==} 202 + engines: {node: ^20.19.0 || >=22.12.0} 203 + cpu: [riscv64] 204 + os: [linux] 205 + 206 + '@oxlint/binding-linux-riscv64-musl@1.56.0': 207 + resolution: {integrity: sha512-7VDOiL8cDG3DQ/CY3yKjbV1c4YPvc4vH8qW09Vv+5ukq3l/Kcyr6XGCd5NvxUmxqDb2vjMpM+eW/4JrEEsUetA==} 208 + engines: {node: ^20.19.0 || >=22.12.0} 209 + cpu: [riscv64] 210 + os: [linux] 211 + 212 + '@oxlint/binding-linux-s390x-gnu@1.56.0': 213 + resolution: {integrity: sha512-JGRpX0M+ikD3WpwJ7vKcHKV6Kg0dT52BW2Eu2BupXotYeqGXBrbY+QPkAyKO6MNgKozyTNaRh3r7g+VWgyAQYQ==} 214 + engines: {node: ^20.19.0 || >=22.12.0} 215 + cpu: [s390x] 216 + os: [linux] 217 + 218 + '@oxlint/binding-linux-x64-gnu@1.56.0': 219 + resolution: {integrity: sha512-dNaICPvtmuxFP/VbqdofrLqdS3bM/AKJN3LMJD52si44ea7Be1cBk6NpfIahaysG9Uo+L98QKddU9CD5L8UHnQ==} 220 + engines: {node: ^20.19.0 || >=22.12.0} 221 + cpu: [x64] 222 + os: [linux] 223 + 224 + '@oxlint/binding-linux-x64-musl@1.56.0': 225 + resolution: {integrity: sha512-pF1vOtM+GuXmbklM1hV8WMsn6tCNPvkUzklj/Ej98JhlanbmA2RB1BILgOpwSuCTRTIYx2MXssmEyQQ90QF5aA==} 226 + engines: {node: ^20.19.0 || >=22.12.0} 227 + cpu: [x64] 228 + os: [linux] 229 + 230 + '@oxlint/binding-openharmony-arm64@1.56.0': 231 + resolution: {integrity: sha512-bp8NQ4RE6fDIFLa4bdBiOA+TAvkNkg+rslR+AvvjlLTYXLy9/uKAYLQudaQouWihLD/hgkrXIKKzXi5IXOewwg==} 232 + engines: {node: ^20.19.0 || >=22.12.0} 233 + cpu: [arm64] 234 + os: [openharmony] 235 + 236 + '@oxlint/binding-win32-arm64-msvc@1.56.0': 237 + resolution: {integrity: sha512-PxT4OJDfMOQBzo3OlzFb9gkoSD+n8qSBxyVq2wQSZIHFQYGEqIRTo9M0ZStvZm5fdhMqaVYpOnJvH2hUMEDk/g==} 238 + engines: {node: ^20.19.0 || >=22.12.0} 239 + cpu: [arm64] 240 + os: [win32] 241 + 242 + '@oxlint/binding-win32-ia32-msvc@1.56.0': 243 + resolution: {integrity: sha512-PTRy6sIEPqy2x8PTP1baBNReN/BNEFmde0L+mYeHmjXE1Vlcc9+I5nsqENsB2yAm5wLkzPoTNCMY/7AnabT4/A==} 244 + engines: {node: ^20.19.0 || >=22.12.0} 245 + cpu: [ia32] 246 + os: [win32] 247 + 248 + '@oxlint/binding-win32-x64-msvc@1.56.0': 249 + resolution: {integrity: sha512-ZHa0clocjLmIDr+1LwoWtxRcoYniAvERotvwKUYKhH41NVfl0Y4LNbyQkwMZzwDvKklKGvGZ5+DAG58/Ik47tQ==} 250 + engines: {node: ^20.19.0 || >=22.12.0} 251 + cpu: [x64] 252 + os: [win32] 253 + 254 + oxfmt@0.41.0: 255 + resolution: {integrity: sha512-sKLdJZdQ3bw6x9qKiT7+eID4MNEXlDHf5ZacfIircrq6Qwjk0L6t2/JQlZZrVHTXJawK3KaMuBoJnEJPcqCEdg==} 256 + engines: {node: ^20.19.0 || >=22.12.0} 257 + hasBin: true 258 + 259 + oxlint@1.56.0: 260 + resolution: {integrity: sha512-Q+5Mj5PVaH/R6/fhMMFzw4dT+KPB+kQW4kaL8FOIq7tfhlnEVp6+3lcWqFruuTNlUo9srZUW3qH7Id4pskeR6g==} 261 + engines: {node: ^20.19.0 || >=22.12.0} 262 + hasBin: true 263 + peerDependencies: 264 + oxlint-tsgolint: '>=0.15.0' 265 + peerDependenciesMeta: 266 + oxlint-tsgolint: 267 + optional: true 268 + 269 + tinypool@2.1.0: 270 + resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} 271 + engines: {node: ^20.0.0 || >=22.0.0} 272 + 273 + snapshots: 274 + 275 + '@oxfmt/binding-android-arm-eabi@0.41.0': 276 + optional: true 277 + 278 + '@oxfmt/binding-android-arm64@0.41.0': 279 + optional: true 280 + 281 + '@oxfmt/binding-darwin-arm64@0.41.0': 282 + optional: true 283 + 284 + '@oxfmt/binding-darwin-x64@0.41.0': 285 + optional: true 286 + 287 + '@oxfmt/binding-freebsd-x64@0.41.0': 288 + optional: true 289 + 290 + '@oxfmt/binding-linux-arm-gnueabihf@0.41.0': 291 + optional: true 292 + 293 + '@oxfmt/binding-linux-arm-musleabihf@0.41.0': 294 + optional: true 295 + 296 + '@oxfmt/binding-linux-arm64-gnu@0.41.0': 297 + optional: true 298 + 299 + '@oxfmt/binding-linux-arm64-musl@0.41.0': 300 + optional: true 301 + 302 + '@oxfmt/binding-linux-ppc64-gnu@0.41.0': 303 + optional: true 304 + 305 + '@oxfmt/binding-linux-riscv64-gnu@0.41.0': 306 + optional: true 307 + 308 + '@oxfmt/binding-linux-riscv64-musl@0.41.0': 309 + optional: true 310 + 311 + '@oxfmt/binding-linux-s390x-gnu@0.41.0': 312 + optional: true 313 + 314 + '@oxfmt/binding-linux-x64-gnu@0.41.0': 315 + optional: true 316 + 317 + '@oxfmt/binding-linux-x64-musl@0.41.0': 318 + optional: true 319 + 320 + '@oxfmt/binding-openharmony-arm64@0.41.0': 321 + optional: true 322 + 323 + '@oxfmt/binding-win32-arm64-msvc@0.41.0': 324 + optional: true 325 + 326 + '@oxfmt/binding-win32-ia32-msvc@0.41.0': 327 + optional: true 328 + 329 + '@oxfmt/binding-win32-x64-msvc@0.41.0': 330 + optional: true 331 + 332 + '@oxlint/binding-android-arm-eabi@1.56.0': 333 + optional: true 334 + 335 + '@oxlint/binding-android-arm64@1.56.0': 336 + optional: true 337 + 338 + '@oxlint/binding-darwin-arm64@1.56.0': 339 + optional: true 340 + 341 + '@oxlint/binding-darwin-x64@1.56.0': 342 + optional: true 343 + 344 + '@oxlint/binding-freebsd-x64@1.56.0': 345 + optional: true 346 + 347 + '@oxlint/binding-linux-arm-gnueabihf@1.56.0': 348 + optional: true 349 + 350 + '@oxlint/binding-linux-arm-musleabihf@1.56.0': 351 + optional: true 352 + 353 + '@oxlint/binding-linux-arm64-gnu@1.56.0': 354 + optional: true 355 + 356 + '@oxlint/binding-linux-arm64-musl@1.56.0': 357 + optional: true 358 + 359 + '@oxlint/binding-linux-ppc64-gnu@1.56.0': 360 + optional: true 361 + 362 + '@oxlint/binding-linux-riscv64-gnu@1.56.0': 363 + optional: true 364 + 365 + '@oxlint/binding-linux-riscv64-musl@1.56.0': 366 + optional: true 367 + 368 + '@oxlint/binding-linux-s390x-gnu@1.56.0': 369 + optional: true 370 + 371 + '@oxlint/binding-linux-x64-gnu@1.56.0': 372 + optional: true 373 + 374 + '@oxlint/binding-linux-x64-musl@1.56.0': 375 + optional: true 376 + 377 + '@oxlint/binding-openharmony-arm64@1.56.0': 378 + optional: true 379 + 380 + '@oxlint/binding-win32-arm64-msvc@1.56.0': 381 + optional: true 382 + 383 + '@oxlint/binding-win32-ia32-msvc@1.56.0': 384 + optional: true 385 + 386 + '@oxlint/binding-win32-x64-msvc@1.56.0': 387 + optional: true 388 + 389 + oxfmt@0.41.0: 390 + dependencies: 391 + tinypool: 2.1.0 392 + optionalDependencies: 393 + '@oxfmt/binding-android-arm-eabi': 0.41.0 394 + '@oxfmt/binding-android-arm64': 0.41.0 395 + '@oxfmt/binding-darwin-arm64': 0.41.0 396 + '@oxfmt/binding-darwin-x64': 0.41.0 397 + '@oxfmt/binding-freebsd-x64': 0.41.0 398 + '@oxfmt/binding-linux-arm-gnueabihf': 0.41.0 399 + '@oxfmt/binding-linux-arm-musleabihf': 0.41.0 400 + '@oxfmt/binding-linux-arm64-gnu': 0.41.0 401 + '@oxfmt/binding-linux-arm64-musl': 0.41.0 402 + '@oxfmt/binding-linux-ppc64-gnu': 0.41.0 403 + '@oxfmt/binding-linux-riscv64-gnu': 0.41.0 404 + '@oxfmt/binding-linux-riscv64-musl': 0.41.0 405 + '@oxfmt/binding-linux-s390x-gnu': 0.41.0 406 + '@oxfmt/binding-linux-x64-gnu': 0.41.0 407 + '@oxfmt/binding-linux-x64-musl': 0.41.0 408 + '@oxfmt/binding-openharmony-arm64': 0.41.0 409 + '@oxfmt/binding-win32-arm64-msvc': 0.41.0 410 + '@oxfmt/binding-win32-ia32-msvc': 0.41.0 411 + '@oxfmt/binding-win32-x64-msvc': 0.41.0 412 + 413 + oxlint@1.56.0: 414 + optionalDependencies: 415 + '@oxlint/binding-android-arm-eabi': 1.56.0 416 + '@oxlint/binding-android-arm64': 1.56.0 417 + '@oxlint/binding-darwin-arm64': 1.56.0 418 + '@oxlint/binding-darwin-x64': 1.56.0 419 + '@oxlint/binding-freebsd-x64': 1.56.0 420 + '@oxlint/binding-linux-arm-gnueabihf': 1.56.0 421 + '@oxlint/binding-linux-arm-musleabihf': 1.56.0 422 + '@oxlint/binding-linux-arm64-gnu': 1.56.0 423 + '@oxlint/binding-linux-arm64-musl': 1.56.0 424 + '@oxlint/binding-linux-ppc64-gnu': 1.56.0 425 + '@oxlint/binding-linux-riscv64-gnu': 1.56.0 426 + '@oxlint/binding-linux-riscv64-musl': 1.56.0 427 + '@oxlint/binding-linux-s390x-gnu': 1.56.0 428 + '@oxlint/binding-linux-x64-gnu': 1.56.0 429 + '@oxlint/binding-linux-x64-musl': 1.56.0 430 + '@oxlint/binding-openharmony-arm64': 1.56.0 431 + '@oxlint/binding-win32-arm64-msvc': 1.56.0 432 + '@oxlint/binding-win32-ia32-msvc': 1.56.0 433 + '@oxlint/binding-win32-x64-msvc': 1.56.0 434 + 435 + tinypool@2.1.0: {}
+2
pnpm-workspace.yaml
··· 1 + packages: 2 + - "packages/*"