From 6fa31e9e114e619defc383648c29d802422e8ad5 Mon Sep 17 00:00:00 2001 From: Tyler Hall Date: Fri, 26 Jan 2024 14:13:04 +0000 Subject: [PATCH 1/3] chore: force image rebuild --- .gitpod.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile index d82736e7..b81435f0 100644 --- a/.gitpod.Dockerfile +++ b/.gitpod.Dockerfile @@ -2,7 +2,7 @@ FROM gitpod/workspace-full USER gitpod -RUN echo "force image rebuild: 123" +RUN echo "force image rebuild: 456" RUN curl -fsSL https://deno.land/x/install/install.sh | sh RUN /home/gitpod/.deno/bin/deno completions bash > /home/gitpod/.bashrc.d/90-deno && echo 'export DENO_INSTALL="/home/gitpod/.deno"' >> /home/gitpod/.bashrc.d/90-deno && echo 'export PATH="$DENO_INSTALL/bin:$PATH"' >> /home/gitpod/.bashrc.d/90-deno From acc9cf54a6af4912b72f1cd5ffa559d239461345 Mon Sep 17 00:00:00 2001 From: Tyler Hall Date: Fri, 26 Jan 2024 14:14:04 +0000 Subject: [PATCH 2/3] feat(connect): add queue.create and queue.destroy #619 --- packages/connect/deno/mod.ts | 10 +++++ packages/connect/deno/services/queue.ts | 8 ++++ packages/connect/deno/tests/queue.test.ts | 46 ++++++++++++++++++++++- packages/connect/deno/types.ts | 5 +++ 4 files changed, 68 insertions(+), 1 deletion(-) diff --git a/packages/connect/deno/mod.ts b/packages/connect/deno/mod.ts index c40313a0..e4ba991c 100644 --- a/packages/connect/deno/mod.ts +++ b/packages/connect/deno/mod.ts @@ -247,6 +247,16 @@ export function connect(CONNECTION_STRING: string, domain = 'default'): Hyper { .then(queue.queued()) .then($fetch) .then(handleResponse), + create: (target, secret) => + Promise.resolve(h) + .then(queue.create(target, secret)) + .then($fetch) + .then(handleResponse), + destroy: (confirm) => + Promise.resolve(h) + .then(queue.destroy(confirm)) + .then($fetch) + .then(handleResponse), }, info: { services: () => diff --git a/packages/connect/deno/services/queue.ts b/packages/connect/deno/services/queue.ts index d151287f..71935172 100644 --- a/packages/connect/deno/services/queue.ts +++ b/packages/connect/deno/services/queue.ts @@ -10,3 +10,11 @@ export const errors = () => (h: HyperRequestFunction) => export const queued = () => (h: HyperRequestFunction) => h({ service, method: Method.GET, params: { status: QueueStatus.READY } }) + +export const create = (target: string, secret?: string) => (hyper: HyperRequestFunction) => + hyper({ service, method: Method.PUT, body: { target, secret } }) + +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/queue.test.ts b/packages/connect/deno/tests/queue.test.ts index add79982..598c6216 100644 --- a/packages/connect/deno/tests/queue.test.ts +++ b/packages/connect/deno/tests/queue.test.ts @@ -1,7 +1,9 @@ import { HyperRequest } from '../types.ts' -import { assertEquals } from '../dev_deps.ts' +import { assert, assertEquals } from '../dev_deps.ts' import { enqueue, errors, queued } from '../services/queue.ts' +import { create } from '../services/queue.ts' +import { destroy } from '../services/queue.ts' const test = Deno.test @@ -57,3 +59,45 @@ test('queue.queued', async () => { const request = await queued()(mockRequest) assertEquals(request.url, 'http://localhost/?status=READY') }) + +test('queue.create', async () => { + const mockRequest = (h: HyperRequest) => { + assertEquals(h.service, 'queue') + assertEquals(h.method, 'PUT') + return Promise.resolve( + new Request('http://localhost', { + method: 'PUT', + body: JSON.stringify(h.body), + }), + ) + } + + const result = await create('https://foo.bar', 'shhhh')(mockRequest) + const body = await result.json() + assertEquals(body, { target: 'https://foo.bar', secret: 'shhhh' }) + + const noSecret = await create('https://foo.bar')(mockRequest) + const noSecertBody = await noSecret.json() + assertEquals(noSecertBody, { target: 'https://foo.bar' }) +}) + +test('queue.destroy', async () => { + const mockRequest = (h: HyperRequest) => { + assertEquals(h.service, 'queue') + assertEquals(h.method, 'DELETE') + return Promise.resolve( + new Request('http://localhost', { method: 'DELETE' }), + ) + } + + await destroy(true)(mockRequest) + + const noConfirmRequest = (_h: HyperRequest) => { + assert(false, 'unreachable') + return Promise.resolve( + new Request('http://localhost', { method: 'DELETE' }), + ) + } + + await destroy()(noConfirmRequest).catch(assert) +}) diff --git a/packages/connect/deno/types.ts b/packages/connect/deno/types.ts index f511e693..00530dff 100644 --- a/packages/connect/deno/types.ts +++ b/packages/connect/deno/types.ts @@ -175,6 +175,11 @@ export interface HyperQueue { enqueue: (job: Job) => Promise errors: () => Promise queued: () => Promise + create: ( + target: string, + secret?: string, + ) => Promise + destroy: (confirm: boolean) => Promise } export interface HyperRequest { From fab1df56475210eeb37b045eb77dd0a173697dc4 Mon Sep 17 00:00:00 2001 From: Tyler Hall Date: Fri, 26 Jan 2024 14:15:34 +0000 Subject: [PATCH 3/3] chore(connect): ts error in tests and formatting --- packages/connect/deno.json | 2 +- packages/connect/deno/tests/cache.test.ts | 3 +++ packages/connect/deno/tests/data.test.ts | 3 +++ packages/connect/deno/tests/hyper-verify.test.ts | 2 +- packages/connect/deno/tests/search.test.ts | 3 +++ packages/connect/deno/tests/storage.test.ts | 3 +++ packages/connect/node/tests/hyper-verify.js | 2 +- 7 files changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/connect/deno.json b/packages/connect/deno.json index 5c7164f8..38eb1dae 100644 --- a/packages/connect/deno.json +++ b/packages/connect/deno.json @@ -1,7 +1,7 @@ { "tasks": { "cache": "deno cache --lock=deno.lock --lock-write deno/deps.deno.ts deno/dev_deps.ts", - "test": "deno lint && deno fmt && deno test -A --no-lock --unstable deno/tests", + "test": "deno lint && deno fmt && deno test -A --no-lock deno/tests", "test:integration": "make test-integration", "to-node": "make clean to-node" }, diff --git a/packages/connect/deno/tests/cache.test.ts b/packages/connect/deno/tests/cache.test.ts index 5875aae0..699dad5a 100644 --- a/packages/connect/deno/tests/cache.test.ts +++ b/packages/connect/deno/tests/cache.test.ts @@ -99,6 +99,9 @@ test('cache.destroy', async () => { const noConfirmRequest = (_h: HyperRequest) => { assert(false, 'unreachable') + return Promise.resolve( + new Request('http://localhost', { method: 'DELETE' }), + ) } await destroy()(noConfirmRequest).catch(assert) diff --git a/packages/connect/deno/tests/data.test.ts b/packages/connect/deno/tests/data.test.ts index 8b330b01..2f212891 100644 --- a/packages/connect/deno/tests/data.test.ts +++ b/packages/connect/deno/tests/data.test.ts @@ -157,6 +157,9 @@ test('data.destroy', async () => { const noConfirmRequest = (_h: HyperRequest) => { assert(false, 'unreachable') + return Promise.resolve( + new Request('http://localhost', { method: 'DELETE' }), + ) } await destroy()(noConfirmRequest).catch(assert) diff --git a/packages/connect/deno/tests/hyper-verify.test.ts b/packages/connect/deno/tests/hyper-verify.test.ts index 78165499..bbaa831b 100644 --- a/packages/connect/deno/tests/hyper-verify.test.ts +++ b/packages/connect/deno/tests/hyper-verify.test.ts @@ -18,7 +18,7 @@ Deno.test('Verify: Compare Secret Signatures Successfully', () => { assertEquals(result.ok, true) }) -Deno.test('Verify: Compare Signatures that don\'t match ', () => { +Deno.test("Verify: Compare Signatures that don't match ", () => { const time = new Date() const s = hmac( 'sha256', diff --git a/packages/connect/deno/tests/search.test.ts b/packages/connect/deno/tests/search.test.ts index d7e87fa7..43cb92cc 100644 --- a/packages/connect/deno/tests/search.test.ts +++ b/packages/connect/deno/tests/search.test.ts @@ -130,6 +130,9 @@ test('search.destroy', async () => { const noConfirmRequest = (_h: HyperRequest) => { assert(false, 'unreachable') + return Promise.resolve( + new Request('http://localhost', { method: 'DELETE' }), + ) } await destroy()(noConfirmRequest).catch(assert) diff --git a/packages/connect/deno/tests/storage.test.ts b/packages/connect/deno/tests/storage.test.ts index 589272e2..c7f62f85 100644 --- a/packages/connect/deno/tests/storage.test.ts +++ b/packages/connect/deno/tests/storage.test.ts @@ -123,6 +123,9 @@ test('storage.destroy', async () => { const noConfirmRequest = (_h: HyperRequest) => { assert(false, 'unreachable') + return Promise.resolve( + new Request('http://localhost', { method: 'DELETE' }), + ) } await destroy()(noConfirmRequest).catch(assert) diff --git a/packages/connect/node/tests/hyper-verify.js b/packages/connect/node/tests/hyper-verify.js index e4b55fcc..f7367cae 100644 --- a/packages/connect/node/tests/hyper-verify.js +++ b/packages/connect/node/tests/hyper-verify.js @@ -19,7 +19,7 @@ test('Verify: Compare Secret Signatures Successfully', () => { assert.equal(result.ok, true) }) -test('Verify: Compare Signatures that don\'t match ', () => { +test("Verify: Compare Signatures that don't match ", () => { const time = new Date() const s = hmac( 'sha256',