(
bindingConfig: { name: string },
store: Map<string, any> = new Map(),
metadata: Map<string, any> = new Map(),
)
| 165 | } |
| 166 | |
| 167 | export const NewKVNamespace = ( |
| 168 | bindingConfig: { name: string }, |
| 169 | store: Map<string, any> = new Map(), |
| 170 | metadata: Map<string, any> = new Map(), |
| 171 | ) => { |
| 172 | let binding = Namespace() |
| 173 | binding.get = (key: string, type: string) => { |
| 174 | const m = store.has(key) |
| 175 | if (m) { |
| 176 | const val = store.get(key) |
| 177 | return Promise.resolve(type === 'json' ? JSON.parse(val) : val) |
| 178 | } |
| 179 | return Promise.resolve(null) |
| 180 | } |
| 181 | binding.delete = (key: string) => { |
| 182 | store.delete(key) |
| 183 | metadata.delete(key) |
| 184 | return Promise.resolve() |
| 185 | } |
| 186 | binding.put = (key: string, value: any, m: any) => { |
| 187 | store.set(key, value) |
| 188 | metadata.set(key, m) |
| 189 | return Promise.resolve() |
| 190 | } |
| 191 | binding.getWithMetadata = async ( |
| 192 | key: string, |
| 193 | options: { metadata: boolean; type: string }, |
| 194 | ) => { |
| 195 | const m = metadata.get(key) |
| 196 | return { |
| 197 | value: await binding.get(key, options.type), |
| 198 | metadata: m?.metadata, |
| 199 | } |
| 200 | } |
| 201 | // @ts-ignore |
| 202 | globalThis[bindingConfig.name] = binding |
| 203 | |
| 204 | return { store, metadata } |
| 205 | } |
| 206 | |
| 207 | // @ts-ignore - faking it |
| 208 | globalThis.Headers = class Headers extends Map { |
no test coverage detected