diff --git a/packages/connect/deno/mod.ts b/packages/connect/deno/mod.ts index 0e9512dc..d49c00ec 100644 --- a/packages/connect/deno/mod.ts +++ b/packages/connect/deno/mod.ts @@ -214,6 +214,16 @@ export function connect(CONNECTION_STRING: string, domain = 'default'): Hyper { .then(storage.remove(name)) .then($fetch) .then(handleResponse), + create: () => + Promise.resolve(h) + .then(storage.create()) + .then($fetch) + .then(handleResponse), + destroy: (confirm) => + Promise.resolve(h) + .then(storage.destroy(confirm)) + .then($fetch) + .then(handleResponse), }, queue: { enqueue: (job) => diff --git a/packages/connect/deno/services/cache.ts b/packages/connect/deno/services/cache.ts index 52e11be9..3aa7610a 100644 --- a/packages/connect/deno/services/cache.ts +++ b/packages/connect/deno/services/cache.ts @@ -46,7 +46,7 @@ export const query = (pattern = '*') => (h: HyperRequestFunction) => export const create = () => (hyper: HyperRequestFunction) => hyper({ service, method: Method.PUT }) -export const destroy = (confirm = true) => (hyper: HyperRequestFunction) => +export const destroy = (confirm?: boolean) => (hyper: HyperRequestFunction) => confirm ? hyper({ service, method: Method.DELETE }) : Promise.reject({ ok: false, msg: 'request not confirmed!' }) diff --git a/packages/connect/deno/services/data.ts b/packages/connect/deno/services/data.ts index e63fcbbc..bc0a9d83 100644 --- a/packages/connect/deno/services/data.ts +++ b/packages/connect/deno/services/data.ts @@ -65,7 +65,7 @@ export const index = ( export const create = () => (hyper: HyperRequestFunction) => hyper({ service, method: Method.PUT }) -export const destroy = (confirm = true) => (hyper: HyperRequestFunction) => +export const destroy = (confirm?: boolean) => (hyper: HyperRequestFunction) => confirm ? hyper({ service, method: Method.DELETE }) : Promise.reject({ ok: false, msg: 'request not confirmed!' }) diff --git a/packages/connect/deno/services/search.ts b/packages/connect/deno/services/search.ts index 3244581a..b1b1e43e 100644 --- a/packages/connect/deno/services/search.ts +++ b/packages/connect/deno/services/search.ts @@ -36,7 +36,7 @@ export const load = (docs: unknown[]) => (hyper: HyperRequestFunction) => export const create = (fields: string[], storeFields?: string[]) => (hyper: HyperRequestFunction) => hyper({ service, method: Method.PUT, body: { fields, storeFields } }) -export const destroy = (confirm = true) => (hyper: HyperRequestFunction) => +export const destroy = (confirm?: boolean) => (hyper: HyperRequestFunction) => confirm ? hyper({ service, method: Method.DELETE }) : Promise.reject({ ok: false, msg: 'request not confirmed!' }) diff --git a/packages/connect/deno/services/storage.ts b/packages/connect/deno/services/storage.ts index 942fc310..589bd367 100644 --- a/packages/connect/deno/services/storage.ts +++ b/packages/connect/deno/services/storage.ts @@ -63,3 +63,10 @@ export const signedUrl = export const remove = (name: string) => (h: HyperRequestFunction) => h({ service, method: Method.DELETE, resource: name }) + +export const create = () => (hyper: HyperRequestFunction) => hyper({ service, method: Method.PUT }) + +export const destroy = (confirm?: boolean) => (hyper: HyperRequestFunction) => + confirm + ? hyper({ service, method: Method.DELETE }) + : Promise.reject({ ok: false, msg: 'request not confirmed!' }) diff --git a/packages/connect/deno/tests/cache.test.ts b/packages/connect/deno/tests/cache.test.ts index bbeada41..5875aae0 100644 --- a/packages/connect/deno/tests/cache.test.ts +++ b/packages/connect/deno/tests/cache.test.ts @@ -1,5 +1,5 @@ import { HyperRequest } from '../types.ts' -import { assertEquals } from '../dev_deps.ts' +import { assert, assertEquals } from '../dev_deps.ts' import { add, create, destroy, get, query, remove, set } from '../services/cache.ts' import { HYPER_LEGACY_GET_HEADER } from '../utils/hyper-request.ts' @@ -96,4 +96,10 @@ test('cache.destroy', async () => { } await destroy(true)(mockRequest) + + const noConfirmRequest = (_h: HyperRequest) => { + assert(false, 'unreachable') + } + + await destroy()(noConfirmRequest).catch(assert) }) diff --git a/packages/connect/deno/tests/data.test.ts b/packages/connect/deno/tests/data.test.ts index d264c565..8b330b01 100644 --- a/packages/connect/deno/tests/data.test.ts +++ b/packages/connect/deno/tests/data.test.ts @@ -1,6 +1,6 @@ import { HyperRequest } from '../types.ts' -import { assertEquals } from '../dev_deps.ts' +import { assert, assertEquals } from '../dev_deps.ts' import { add, bulk, create, destroy, get, index, query, remove, update } from '../services/data.ts' import { HYPER_LEGACY_GET_HEADER } from '../utils/hyper-request.ts' @@ -154,4 +154,10 @@ test('data.destroy', async () => { } await destroy(true)(mockRequest) + + const noConfirmRequest = (_h: HyperRequest) => { + assert(false, 'unreachable') + } + + await destroy()(noConfirmRequest).catch(assert) }) diff --git a/packages/connect/deno/tests/search.test.ts b/packages/connect/deno/tests/search.test.ts index 0a89c159..d7e87fa7 100644 --- a/packages/connect/deno/tests/search.test.ts +++ b/packages/connect/deno/tests/search.test.ts @@ -1,6 +1,6 @@ import { HyperRequest } from '../types.ts' -import { assertEquals } from '../dev_deps.ts' +import { assert, assertEquals } from '../dev_deps.ts' import { add, create, destroy, get, load, query, remove, update } from '../services/search.ts' @@ -127,4 +127,10 @@ test('search.destroy', async () => { } await destroy(true)(mockRequest) + + const noConfirmRequest = (_h: HyperRequest) => { + assert(false, 'unreachable') + } + + await destroy()(noConfirmRequest).catch(assert) }) diff --git a/packages/connect/deno/tests/storage.test.ts b/packages/connect/deno/tests/storage.test.ts index 5c8243ac..9b00e403 100644 --- a/packages/connect/deno/tests/storage.test.ts +++ b/packages/connect/deno/tests/storage.test.ts @@ -1,7 +1,7 @@ import { HyperRequest } from '../types.ts' -import { assertEquals } from '../dev_deps.ts' +import { assert, assertEquals } from '../dev_deps.ts' -import { download, remove, signedUrl, upload } from '../services/storage.ts' +import { create, destroy, download, remove, signedUrl, upload } from '../services/storage.ts' const test = Deno.test @@ -99,3 +99,31 @@ test('storage.remove', async () => { const req = await remove('avatar.png')(mockRequest) assertEquals(req.url, 'http://localhost/storage/bucket/avatar.png') }) + +test('storage.create', async () => { + const mockRequest = (h: HyperRequest) => { + assertEquals(h.service, 'storage') + assertEquals(h.method, 'PUT') + return Promise.resolve(new Request('http://localhost', { method: 'PUT' })) + } + + await create()(mockRequest) +}) + +test('storage.destroy', async () => { + const mockRequest = (h: HyperRequest) => { + assertEquals(h.service, 'storage') + assertEquals(h.method, 'DELETE') + return Promise.resolve( + new Request('http://localhost', { method: 'DELETE' }), + ) + } + + await destroy(true)(mockRequest) + + const noConfirmRequest = (_h: HyperRequest) => { + assert(false, 'unreachable') + } + + await destroy()(noConfirmRequest).catch(assert) +}) diff --git a/packages/connect/deno/types.ts b/packages/connect/deno/types.ts index 7d8ae80b..2801c695 100644 --- a/packages/connect/deno/types.ts +++ b/packages/connect/deno/types.ts @@ -164,6 +164,8 @@ export interface HyperStorage { options: StorageSignedUrlOptions, ) => Promise remove: (name: string) => Promise + create: () => Promise + destroy: (confirm: boolean) => Promise } export interface HyperQueue {