From a576ecf25a9df09d52923e97921de33ed469a9a5 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Thu, 31 Oct 2024 18:50:55 +0000 Subject: [PATCH 01/10] feat: `PUT /projects` Co-Authored-By: Gregor MacLennan --- comapeo-core-2.0.1.tgz | Bin 0 -> 176629 bytes eslint.config.js | 1 - package-lock.json | 71 ++++++++--- package.json | 6 +- src/allowed-hosts-plugin.js | 23 ++++ src/app.js | 25 +++- src/base-url-plugin.js | 19 +++ src/comapeo-plugin.js | 4 +- src/routes.js | 131 +++++++++++++++++++- src/types/types.ts | 3 + test/add-project-endpoint.js | 225 +++++++++++++++++++++++++++++++++++ test/test-helpers.js | 17 ++- 12 files changed, 495 insertions(+), 30 deletions(-) create mode 100644 comapeo-core-2.0.1.tgz create mode 100644 src/allowed-hosts-plugin.js create mode 100644 src/base-url-plugin.js create mode 100644 test/add-project-endpoint.js diff --git a/comapeo-core-2.0.1.tgz b/comapeo-core-2.0.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..2de4a4a418897295d5c79d3219dfe8bf631294d7 GIT binary patch literal 176629 zcmV(^K-Iq=iwFP!00002|LlGHd)qd$=>Dv~0!?#DGNCBHnx3P?PW@`@ZEWY-PP)53 zJ~kynHXDjmNy@hB=>F~Zn;AU$kexKm?zx-p_iZc!7z}{HU@$Y7nS{f4;U(`C`LH+4 za^4+>X?V%=-XJbVF;Ajyp77w;;xB*Tzon(6XKQP$>HE^s^2+M!8vD!Yx6hWAm!Cab zT4R4%TK;x*d4>ID=`Ww*ziCm1`Cpd)a9=o>C8qxUU-DnC$F9n9QuKSh%ecIn4uWAe z?v2AyoR(Q}WsyN|kYt12>T(Fn){E1K-v+-HonDW<6==bT;?Pzr71%v5m#B=X->5Q$fuQT|nU~a{i5+M7^?xF*O2$T3S zg%PZ=!K~y38)dnPJIki!WLgS%0A;Py875&-u;Vf;IlJpH)_d}#!x*FgW8Y80JRGyT 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≦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 M0u`4!mjIj*0CRp&LjV8( literal 0 HcmV?d00001 diff --git a/eslint.config.js b/eslint.config.js index 5256c24..498234b 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -83,7 +83,6 @@ export default [ 'prefer-spread': 'error', radix: 'error', 'require-atomic-updates': 'error', - 'require-await': 'error', 'require-unicode-regexp': 'error', strict: 'error', 'symbol-description': 'error', diff --git a/package-lock.json b/package-lock.json index 05748e7..cafc06e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,12 @@ "version": "0.0.0", "license": "MIT", "dependencies": { - "@comapeo/core": "^2.0.1", + "@comapeo/core": "file:comapeo-core-2.0.1.tgz", "@fastify/sensible": "^5.6.0", + "@mapeo/crypto": "^1.0.0-alpha.10", "@sinclair/typebox": "^0.33.17", - "fastify": "^4.28.1" + "fastify": "^4.28.1", + "string-timing-safe-equal": "^0.1.0" }, "bin": { "mapeo-server": "src/bin/mapeo-server.js" @@ -420,12 +422,11 @@ }, "node_modules/@comapeo/core": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-2.0.1.tgz", - "integrity": "sha512-6ZUb5umzitYKZx28bYFMxQfpE2B6pdC2ukCd9rcM1l+EgNUAcL+1NWeo/YRlXPnbzhltZ7kr0LvmZtXoMb/ing==", - "license": "MIT", + "resolved": "file:comapeo-core-2.0.1.tgz", + "integrity": "sha512-88QlfEgxTew1Mw8FjzR6MjlUVTeFFfj1+F5evtvoI8T+tb1clDIeTIFmLTF6mhZwwXJduZyQxG49rto5ANhAHg==", "dependencies": { "@comapeo/fallback-smp": "^1.0.0", - "@comapeo/schema": "1.0.0", + "@comapeo/schema": "1.2.0", "@digidem/types": "^2.3.0", "@fastify/error": "^3.4.1", "@fastify/type-provider-typebox": "^4.1.0", @@ -443,7 +444,7 @@ "debug": "^4.3.4", "dot-prop": "^9.0.0", "drizzle-orm": "^0.30.8", - "fastify": ">= 4", + "fastify": "^4.0.0", "fastify-plugin": "^4.5.1", "hyperblobs": "2.3.0", "hypercore": "10.17.0", @@ -453,7 +454,7 @@ "magic-bytes.js": "^1.10.0", "map-obj": "^5.0.2", "mime": "^4.0.3", - "multi-core-indexer": "^1.0.0-alpha.10", + "multi-core-indexer": "^1.0.0", "p-defer": "^4.0.0", "p-event": "^6.0.1", "p-timeout": "^6.1.2", @@ -463,6 +464,7 @@ "sodium-universal": "^4.0.0", "start-stop-state-machine": "^1.2.0", "streamx": "^2.19.0", + "string-timing-safe-equal": "^0.1.0", "styled-map-package": "^2.0.0", "sub-encoder": "^2.1.1", "throttle-debounce": "^5.0.0", @@ -470,6 +472,7 @@ "type-fest": "^4.5.0", "undici": "^6.13.0", "varint": "^6.0.0", + "ws": "^8.18.0", "yauzl-promise": "^4.0.0" } }, @@ -541,12 +544,20 @@ "integrity": "sha512-6wLTtBOdlwtYMyrynBq6ZQ7S1aVABXQSwR/1QENkFkc7WyLLs4wLd9ny7WfSUQdHn6E2zfvA7WfKH7R06Zy3gQ==", "license": "MIT" }, + "node_modules/@comapeo/geometry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@comapeo/geometry/-/geometry-1.0.2.tgz", + "integrity": "sha512-q6zadJA3lr85GZPTZ+lol9F6ERRq2Rt4upON7HhcwPPBiCLN696SY03OJZCE6xkXHxjJY98FF5DxVX3W0IftLQ==", + "dependencies": { + "protobufjs": "^7.4.0" + } + }, "node_modules/@comapeo/schema": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@comapeo/schema/-/schema-1.0.0.tgz", - "integrity": "sha512-dK227I+0yg9D2y5/O5NGywx50tgeNYyUkl1uYnSmNAPlbv+r2KX9aaC9m4dEjIja2aR2VFnYn6z537ERZiahqQ==", - "license": "MIT", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@comapeo/schema/-/schema-1.2.0.tgz", + "integrity": "sha512-LWrUSqtXmrEmE/B9V/zffKBbJmMo37AlvjXczvGx1+BbCAjOYCPDX6GCtnSKNsvtnNS2KQZDm9apg3mp92tFGA==", "dependencies": { + "@comapeo/geometry": "^1.0.2", "compact-encoding": "^2.12.0", "protobufjs": "^7.2.5", "type-fest": "^4.26.0" @@ -1101,6 +1112,7 @@ "version": "1.0.0-alpha.10", "resolved": "https://registry.npmjs.org/@mapeo/crypto/-/crypto-1.0.0-alpha.10.tgz", "integrity": "sha512-TEK8HN1W0XZOOADIMxa4saXtqAZKyBDeVVn3RBCcPaCiOGHeYy43/0rMnBVTbXZCLsLVPnOXwv6vg+vUkasrWQ==", + "license": "ISC", "dependencies": { "@types/b4a": "^1.6.0", "b4a": "^1.6.4", @@ -6180,9 +6192,9 @@ "license": "MIT" }, "node_modules/protobufjs": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.2.tgz", - "integrity": "sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", + "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", "hasInstallScript": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", @@ -7076,6 +7088,15 @@ "node": ">=0.6.19" } }, + "node_modules/string-timing-safe-equal": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/string-timing-safe-equal/-/string-timing-safe-equal-0.1.0.tgz", + "integrity": "sha512-AMhfQVC+que87xh7nAW2ShSDK6E3CYFC3zGieewF7OHBW9vGPCatMuVPzZ9afoIOT5q6ldKPOKeuQf9hVZlvhw==", + "license": "Unlicense", + "engines": { + "node": ">=18" + } + }, "node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -7961,6 +7982,26 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/xache": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/xache/-/xache-1.2.1.tgz", diff --git a/package.json b/package.json index e7e56a6..e76be02 100644 --- a/package.json +++ b/package.json @@ -41,9 +41,11 @@ "typescript": "^5.6.3" }, "dependencies": { - "@comapeo/core": "^2.0.1", + "@comapeo/core": "file:comapeo-core-2.0.1.tgz", "@fastify/sensible": "^5.6.0", + "@mapeo/crypto": "^1.0.0-alpha.10", "@sinclair/typebox": "^0.33.17", - "fastify": "^4.28.1" + "fastify": "^4.28.1", + "string-timing-safe-equal": "^0.1.0" } } diff --git a/src/allowed-hosts-plugin.js b/src/allowed-hosts-plugin.js new file mode 100644 index 0000000..f4d0246 --- /dev/null +++ b/src/allowed-hosts-plugin.js @@ -0,0 +1,23 @@ +import createFastifyPlugin from 'fastify-plugin' + +/** @import { FastifyPluginAsync } from 'fastify' */ + +/** + * @internal + * @typedef {object} AllowedHostsPluginOptions + * @property {undefined | string[]} [allowedHosts] + */ + +/** @type {FastifyPluginAsync} */ +const comapeoPlugin = async (fastify, { allowedHosts }) => { + if (!allowedHosts) return + + const allowedHostsSet = new Set(allowedHosts) + fastify.addHook('onRequest', async (req) => { + if (!allowedHostsSet.has(req.hostname)) { + throw fastify.httpErrors.forbidden('Forbidden') + } + }) +} + +export default createFastifyPlugin(comapeoPlugin, { name: 'allowedHosts' }) diff --git a/src/app.js b/src/app.js index be98141..d6b1431 100644 --- a/src/app.js +++ b/src/app.js @@ -1,6 +1,8 @@ import fastifySensible from '@fastify/sensible' import createFastifyPlugin from 'fastify-plugin' +import allowedHostsPlugin from './allowed-hosts-plugin.js' +import baseUrlPlugin from './base-url-plugin.js' import comapeoPlugin from './comapeo-plugin.js' import routes from './routes.js' @@ -9,22 +11,35 @@ import routes from './routes.js' /** @import { RouteOptions } from './routes.js' */ /** - * @typedef {ComapeoPluginOptions & RouteOptions} ServerOptions + * @internal + * @typedef {object} OtherServerOptions + * @prop {string[]} [allowedHosts] + */ + +/** + * @typedef {ComapeoPluginOptions & OtherServerOptions & RouteOptions} ServerOptions */ /** @type {FastifyPluginAsync} */ -function comapeoServer( +async function comapeoServer( fastify, - { serverBearerToken, serverName, ...comapeoPluginOpts }, + { + serverBearerToken, + serverName, + allowedHosts, + allowedProjects, + ...comapeoPluginOpts + }, ) { fastify.register(fastifySensible, { sharedSchemaId: 'HttpError' }) + fastify.register(allowedHostsPlugin, { allowedHosts }) + fastify.register(baseUrlPlugin) fastify.register(comapeoPlugin, comapeoPluginOpts) fastify.register(routes, { serverBearerToken, serverName, + allowedProjects, }) - - return Promise.resolve() } export default createFastifyPlugin(comapeoServer, { diff --git a/src/base-url-plugin.js b/src/base-url-plugin.js new file mode 100644 index 0000000..305b3ba --- /dev/null +++ b/src/base-url-plugin.js @@ -0,0 +1,19 @@ +import createFastifyPlugin from 'fastify-plugin' + +/** @import { FastifyInstance, FastifyPluginAsync } from 'fastify' */ + +/** @type {FastifyPluginAsync} */ +const baseUrlPlugin = async (fastify) => { + fastify.decorateRequest('baseUrl', null) + fastify.addHook( + 'onRequest', + /** + * @this {FastifyInstance} req + */ + async function (req) { + req.baseUrl = new URL(this.prefix, `${req.protocol}://${req.hostname}`) + }, + ) +} + +export default createFastifyPlugin(baseUrlPlugin, { name: 'baseUrl' }) diff --git a/src/comapeo-plugin.js b/src/comapeo-plugin.js index 3e8d074..f24dd21 100644 --- a/src/comapeo-plugin.js +++ b/src/comapeo-plugin.js @@ -8,11 +8,9 @@ import createFastifyPlugin from 'fastify-plugin' */ /** @type {FastifyPluginAsync} */ -const comapeoPlugin = (fastify, opts) => { +const comapeoPlugin = async (fastify, opts) => { const comapeo = new MapeoManager({ ...opts, fastify }) fastify.decorate('comapeo', comapeo) - - return Promise.resolve() } export default createFastifyPlugin(comapeoPlugin, { name: 'comapeo' }) diff --git a/src/routes.js b/src/routes.js index 64019cd..f0556ff 100644 --- a/src/routes.js +++ b/src/routes.js @@ -1,21 +1,35 @@ +import { keyToPublicId as projectKeyToPublicId } from '@mapeo/crypto' import { Type } from '@sinclair/typebox' +import timingSafeEqual from 'string-timing-safe-equal' +import assert from 'node:assert/strict' import * as fs from 'node:fs' /** @import { FastifyInstance, FastifyPluginAsync, RawServerDefault } from 'fastify' */ /** @import { TypeBoxTypeProvider } from '@fastify/type-provider-typebox' */ +const HEX_REGEX_32_BYTES = '^[0-9a-fA-F]{64}$' +const HEX_STRING_32_BYTES = Type.String({ pattern: HEX_REGEX_32_BYTES }) + const INDEX_HTML_PATH = new URL('./static/index.html', import.meta.url) /** * @typedef {object} RouteOptions * @prop {string} serverBearerToken * @prop {string} serverName - * @prop {string[] | number} [allowedProjects=1] + * @prop {undefined | number | string[]} [allowedProjects=1] */ /** @type {FastifyPluginAsync} */ -export default function routes(fastify, { serverName }) { +export default async function routes( + fastify, + { serverName, allowedProjects = 1 }, +) { + /** @type {Set | number} */ + const allowedProjectsSetOrNumber = Array.isArray(allowedProjects) + ? new Set(allowedProjects) + : allowedProjects + fastify.get('/', (_req, reply) => { const stream = fs.createReadStream(INDEX_HTML_PATH) reply.header('Content-Type', 'text/html') @@ -48,5 +62,116 @@ export default function routes(fastify, { serverName }) { }, ) - return Promise.resolve() + fastify.put( + '/projects', + { + schema: { + body: Type.Object({ + projectName: Type.String({ minLength: 1 }), + projectKey: HEX_STRING_32_BYTES, + encryptionKeys: Type.Object({ + auth: HEX_STRING_32_BYTES, + config: HEX_STRING_32_BYTES, + data: HEX_STRING_32_BYTES, + blobIndex: HEX_STRING_32_BYTES, + blob: HEX_STRING_32_BYTES, + }), + }), + response: { + 200: Type.Object({ + data: Type.Object({ + deviceId: HEX_STRING_32_BYTES, + }), + }), + 400: { $ref: 'HttpError' }, + }, + }, + }, + /** + * @this {FastifyInstance} + */ + async function (req) { + const { projectName } = req.body + const projectKey = Buffer.from(req.body.projectKey, 'hex') + const projectPublicId = projectKeyToPublicId(projectKey) + + const existingProjects = await this.comapeo.listProjects() + + // This assumes that two projects with the same project key are equivalent, + // and that we don't need to add more. Theoretically, someone could add + // project with ID 1 and keys A, then add project with ID 1 and keys B. + // This would mean a malicious/buggy client, which could cause errors if + // trying to sync with this server--that seems acceptable. + const alreadyHasThisProject = existingProjects.some((p) => + // We don't want people to be able to enumerate the project keys that + // this server has. + timingSafeEqual(p.projectId, projectPublicId), + ) + + if (!alreadyHasThisProject) { + if ( + allowedProjectsSetOrNumber instanceof Set && + !allowedProjectsSetOrNumber.has(projectPublicId) + ) { + throw fastify.httpErrors.forbidden('Project not allowed') + } + + if ( + typeof allowedProjectsSetOrNumber === 'number' && + existingProjects.length >= allowedProjectsSetOrNumber + ) { + throw fastify.httpErrors.forbidden( + 'Server is already linked to the maximum number of projects', + ) + } + } + + const baseUrl = req.baseUrl.toString() + + const existingDeviceInfo = this.comapeo.getDeviceInfo() + // We don't set device info until this point. We trust that `req.hostname` + // is the hostname we want clients to use to sync to the server. + if ( + existingDeviceInfo.deviceType === 'device_type_unspecified' || + existingDeviceInfo.selfHostedServerDetails?.baseUrl !== baseUrl + ) { + await this.comapeo.setDeviceInfo({ + deviceType: 'selfHostedServer', + name: serverName, + selfHostedServerDetails: { baseUrl }, + }) + } + + if (!alreadyHasThisProject) { + const projectId = await this.comapeo.addProject( + { + projectKey, + projectName, + encryptionKeys: { + auth: Buffer.from(req.body.encryptionKeys.auth, 'hex'), + config: Buffer.from(req.body.encryptionKeys.config, 'hex'), + data: Buffer.from(req.body.encryptionKeys.data, 'hex'), + blobIndex: Buffer.from(req.body.encryptionKeys.blobIndex, 'hex'), + blob: Buffer.from(req.body.encryptionKeys.blob, 'hex'), + }, + }, + { waitForSync: false }, + ) + assert.equal( + projectId, + projectPublicId, + 'adding a project should return the same ID as what was passed', + ) + } + + const project = await this.comapeo.getProject(projectPublicId) + project.$sync.start() + + return { + data: { + deviceId: this.comapeo.deviceId, + }, + } + }, + ) } diff --git a/src/types/types.ts b/src/types/types.ts index 69bd4ff..a12975d 100644 --- a/src/types/types.ts +++ b/src/types/types.ts @@ -9,4 +9,7 @@ declare module 'fastify' { interface FastifyInstance { comapeo: MapeoManager } + interface FastifyRequest { + baseUrl: URL + } } diff --git a/test/add-project-endpoint.js b/test/add-project-endpoint.js new file mode 100644 index 0000000..cd8375c --- /dev/null +++ b/test/add-project-endpoint.js @@ -0,0 +1,225 @@ +import { keyToPublicId as projectKeyToPublicId } from '@mapeo/crypto' + +import assert from 'node:assert/strict' +import test from 'node:test' + +import { + createTestServer, + randomAddProjectBody, + randomHex, +} from './test-helpers.js' + +test('request missing project name', async (t) => { + const server = createTestServer(t) + + const response = await server.inject({ + method: 'PUT', + url: '/projects', + body: omit(randomAddProjectBody(), 'projectName'), + }) + + assert.equal(response.statusCode, 400) +}) + +test('request with empty project name', async (t) => { + const server = createTestServer(t) + + const response = await server.inject({ + method: 'PUT', + url: '/projects', + body: { ...randomAddProjectBody(), projectName: '' }, + }) + + assert.equal(response.statusCode, 400) +}) + +test('request missing project key', async (t) => { + const server = createTestServer(t) + + const response = await server.inject({ + method: 'PUT', + url: '/projects', + body: omit(randomAddProjectBody(), 'projectKey'), + }) + + assert.equal(response.statusCode, 400) +}) + +test("request with a project key that's too short", async (t) => { + const server = createTestServer(t) + + const response = await server.inject({ + method: 'PUT', + url: '/projects', + body: { ...randomAddProjectBody(), projectKey: randomHex(31) }, + }) + + assert.equal(response.statusCode, 400) +}) + +test('request missing any encryption keys', async (t) => { + const server = createTestServer(t) + + const response = await server.inject({ + method: 'PUT', + url: '/projects', + body: omit(randomAddProjectBody(), 'encryptionKeys'), + }) + + assert.equal(response.statusCode, 400) +}) + +test('request missing an encryption key', async (t) => { + const server = createTestServer(t) + const body = randomAddProjectBody() + + const response = await server.inject({ + method: 'PUT', + url: '/projects', + body: { + ...body, + encryptionKeys: omit(body.encryptionKeys, 'config'), + }, + }) + + assert.equal(response.statusCode, 400) +}) + +test("request with an encryption key that's too short", async (t) => { + const server = createTestServer(t) + const body = randomAddProjectBody() + + const response = await server.inject({ + method: 'PUT', + url: '/projects', + body: { + ...body, + encryptionKeys: { ...body.encryptionKeys, config: randomHex(31) }, + }, + }) + + assert.equal(response.statusCode, 400) +}) + +test('adding a project', async (t) => { + const server = createTestServer(t) + + const response = await server.inject({ + method: 'PUT', + url: '/projects', + body: randomAddProjectBody(), + }) + + assert.equal(response.statusCode, 200) + assert.deepEqual(response.json(), { + data: { deviceId: server.deviceId }, + }) +}) + +test('adding a second project fails by default', async (t) => { + const server = createTestServer(t) + + const firstAddResponse = await server.inject({ + method: 'PUT', + url: '/projects', + body: randomAddProjectBody(), + }) + assert.equal(firstAddResponse.statusCode, 200) + + const response = await server.inject({ + method: 'PUT', + url: '/projects', + body: randomAddProjectBody(), + }) + assert.equal(response.statusCode, 403) + assert.match(response.json().message, /maximum number of projects/u) +}) + +test('allowing a maximum number of projects', async (t) => { + const server = createTestServer(t, { allowedProjects: 3 }) + + await t.test('adding 3 projects', async () => { + for (let i = 0; i < 3; i++) { + const response = await server.inject({ + method: 'PUT', + url: '/projects', + body: randomAddProjectBody(), + }) + assert.equal(response.statusCode, 200) + } + }) + + await t.test('attempting to add 4th project fails', async () => { + const response = await server.inject({ + method: 'PUT', + url: '/projects', + body: randomAddProjectBody(), + }) + assert.equal(response.statusCode, 403) + assert.match(response.json().message, /maximum number of projects/u) + }) +}) + +test( + 'allowing a specific list of projects', + { concurrency: true }, + async (t) => { + const body = randomAddProjectBody() + const projectPublicId = projectKeyToPublicId( + Buffer.from(body.projectKey, 'hex'), + ) + const server = createTestServer(t, { + allowedProjects: [projectPublicId], + }) + + await t.test('adding a project in the list', async () => { + const response = await server.inject({ + method: 'PUT', + url: '/projects', + body, + }) + assert.equal(response.statusCode, 200) + }) + + await t.test('trying to add a project not in the list', async () => { + const response = await server.inject({ + method: 'PUT', + url: '/projects', + body: randomAddProjectBody(), + }) + assert.equal(response.statusCode, 403) + }) + }, +) + +test('adding the same project twice is idempotent', async (t) => { + const server = createTestServer(t, { allowedProjects: 1 }) + const body = randomAddProjectBody() + + const firstResponse = await server.inject({ + method: 'PUT', + url: '/projects', + body, + }) + assert.equal(firstResponse.statusCode, 200) + + const secondResponse = await server.inject({ + method: 'PUT', + url: '/projects', + body, + }) + assert.equal(secondResponse.statusCode, 200) +}) + +/** + * @template {object} T + * @template {keyof T} K + * @param {T} obj + * @param {K} key + * @returns {Omit} + */ +function omit(obj, key) { + const result = { ...obj } + delete result[key] + return result +} diff --git a/test/test-helpers.js b/test/test-helpers.js index 9d8657e..a39b128 100644 --- a/test/test-helpers.js +++ b/test/test-helpers.js @@ -43,7 +43,7 @@ export function getManagerOptions() { /** * @param {TestContext} t * @param {Partial} [serverOptions] - * @returns {import('fastify').FastifyInstance & { deviceId: string }} + * @returns {FastifyInstance & { deviceId: string }} */ export function createTestServer(t, serverOptions) { const managerOptions = getManagerOptions() @@ -63,3 +63,18 @@ export function createTestServer(t, serverOptions) { // @ts-expect-error return server } + +export const randomHex = (length = 32) => + Buffer.from(randomBytes(length)).toString('hex') + +export const randomAddProjectBody = () => ({ + projectName: randomHex(16), + projectKey: randomHex(), + encryptionKeys: { + auth: randomHex(), + config: randomHex(), + data: randomHex(), + blobIndex: randomHex(), + blob: randomHex(), + }, +}) From d090007b4dfd97bffcb97de90a76e394a7572ec1 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Thu, 31 Oct 2024 18:52:13 +0000 Subject: [PATCH 02/10] test: allowed hosts option --- test/allowed-hosts.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 test/allowed-hosts.js diff --git a/test/allowed-hosts.js b/test/allowed-hosts.js new file mode 100644 index 0000000..81ab64c --- /dev/null +++ b/test/allowed-hosts.js @@ -0,0 +1,29 @@ +import assert from 'node:assert/strict' +import test from 'node:test' + +import { createTestServer } from './test-helpers.js' + +test('allowed host', async (t) => { + const allowedHost = 'www.example.com' + const server = createTestServer(t, { allowedHosts: [allowedHost] }) + + const response = await server.inject({ + authority: allowedHost, + method: 'GET', + url: '/info', + }) + + assert.equal(response.statusCode, 200) +}) + +test('disallowed host', async (t) => { + const server = createTestServer(t, { allowedHosts: ['www.example.com'] }) + + const response = await server.inject({ + authority: 'www.invalid-host.example', + method: 'GET', + url: '/info', + }) + + assert.equal(response.statusCode, 403) +}) From 2e3b4915c09eba3bc120d63748f640a0dd0d5047 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Thu, 31 Oct 2024 18:54:40 +0000 Subject: [PATCH 03/10] feat: `GET /projects` endpoint --- src/routes.js | 66 +++++++++++++++++++++++++++++- test/list-projects-endpoint.js | 75 ++++++++++++++++++++++++++++++++++ 2 files changed, 139 insertions(+), 2 deletions(-) create mode 100644 test/list-projects-endpoint.js diff --git a/src/routes.js b/src/routes.js index f0556ff..4f4cb89 100644 --- a/src/routes.js +++ b/src/routes.js @@ -5,9 +5,11 @@ import timingSafeEqual from 'string-timing-safe-equal' import assert from 'node:assert/strict' import * as fs from 'node:fs' -/** @import { FastifyInstance, FastifyPluginAsync, RawServerDefault } from 'fastify' */ +/** @import { FastifyInstance, FastifyPluginAsync, FastifyRequest, RawServerDefault } from 'fastify' */ /** @import { TypeBoxTypeProvider } from '@fastify/type-provider-typebox' */ +const BEARER_SPACE_LENGTH = 'Bearer '.length + const HEX_REGEX_32_BYTES = '^[0-9a-fA-F]{64}$' const HEX_STRING_32_BYTES = Type.String({ pattern: HEX_REGEX_32_BYTES }) @@ -23,13 +25,22 @@ const INDEX_HTML_PATH = new URL('./static/index.html', import.meta.url) /** @type {FastifyPluginAsync} */ export default async function routes( fastify, - { serverName, allowedProjects = 1 }, + { serverBearerToken, serverName, allowedProjects = 1 }, ) { /** @type {Set | number} */ const allowedProjectsSetOrNumber = Array.isArray(allowedProjects) ? new Set(allowedProjects) : allowedProjects + /** + * @param {FastifyRequest} req + */ + const verifyBearerAuth = (req) => { + if (!isBearerTokenValid(req.headers.authorization, serverBearerToken)) { + throw fastify.httpErrors.forbidden('Invalid bearer token') + } + } + fastify.get('/', (_req, reply) => { const stream = fs.createReadStream(INDEX_HTML_PATH) reply.header('Content-Type', 'text/html') @@ -62,6 +73,40 @@ export default async function routes( }, ) + fastify.get( + '/projects', + { + schema: { + response: { + 200: Type.Object({ + data: Type.Array( + Type.Object({ + projectId: Type.String(), + name: Type.String(), + }), + ), + }), + 403: { $ref: 'HttpError' }, + }, + }, + async preHandler(req) { + verifyBearerAuth(req) + }, + }, + /** + * @this {FastifyInstance} + */ + async function () { + const projects = await this.comapeo.listProjects() + return { + data: projects.map((project) => ({ + projectId: project.projectId, + name: project.name, + })), + } + }, + ) + fastify.put( '/projects', { @@ -175,3 +220,20 @@ export default async function routes( }, ) } + +/** + * @param {undefined | string} headerValue + * @param {string} expectedBearerToken + * @returns {boolean} + */ +function isBearerTokenValid(headerValue = '', expectedBearerToken) { + // This check is not strictly required for correctness, but helps protect + // against long values. + const expectedLength = BEARER_SPACE_LENGTH + expectedBearerToken.length + if (headerValue.length !== expectedLength) return false + + if (!headerValue.startsWith('Bearer ')) return false + const actualBearerToken = headerValue.slice(BEARER_SPACE_LENGTH) + + return timingSafeEqual(actualBearerToken, expectedBearerToken) +} diff --git a/test/list-projects-endpoint.js b/test/list-projects-endpoint.js new file mode 100644 index 0000000..c8cc16d --- /dev/null +++ b/test/list-projects-endpoint.js @@ -0,0 +1,75 @@ +import { keyToPublicId as projectKeyToPublicId } from '@mapeo/crypto' + +import assert from 'node:assert/strict' +import test from 'node:test' + +import { + BEARER_TOKEN, + createTestServer, + randomAddProjectBody, +} from './test-helpers.js' + +test('listing projects', async (t) => { + const server = createTestServer(t, { allowedProjects: 999 }) + + await t.test('with invalid auth', async () => { + const response = await server.inject({ + method: 'GET', + url: '/projects', + headers: { Authorization: 'Bearer bad' }, + }) + assert.equal(response.statusCode, 403) + }) + + await t.test('with no projects', async () => { + const response = await server.inject({ + method: 'GET', + url: '/projects', + headers: { Authorization: 'Bearer ' + BEARER_TOKEN }, + }) + assert.equal(response.statusCode, 200) + assert.deepEqual(response.json(), { data: [] }) + }) + + await t.test('with projects', async () => { + const body1 = randomAddProjectBody() + const body2 = randomAddProjectBody() + + await Promise.all( + [body1, body2].map(async (body) => { + const response = await server.inject({ + method: 'PUT', + url: '/projects', + body, + }) + assert.equal(response.statusCode, 200) + }), + ) + + const response = await server.inject({ + method: 'GET', + url: '/projects', + headers: { Authorization: 'Bearer ' + BEARER_TOKEN }, + }) + assert.equal(response.statusCode, 200) + + const { data } = response.json() + assert(Array.isArray(data)) + assert.equal(data.length, 2, 'expected 2 projects') + for (const body of [body1, body2]) { + const projectPublicId = projectKeyToPublicId( + Buffer.from(body.projectKey, 'hex'), + ) + /** @type {Record} */ + const project = data.find( + (project) => project.projectId === projectPublicId, + ) + assert(project, `expected ${projectPublicId} to be found`) + assert.equal( + project.name, + body.projectName, + 'expected project name to match', + ) + } + }) +}) From 3a9534f29131997813e9f1d091c24fac4d97e307 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Thu, 31 Oct 2024 19:18:43 +0000 Subject: [PATCH 04/10] feat: syncing and observation endpoints --- package-lock.json | 224 +++++++++++++++++++++++++- package.json | 9 +- src/app.js | 2 + src/routes.js | 188 ++++++++++++++++++++++ src/ws-core-replicator.js | 49 ++++++ test/fixtures/audio.mp3 | Bin 0 -> 17181 bytes test/fixtures/original.jpg | Bin 0 -> 16308 bytes test/fixtures/preview.jpg | Bin 0 -> 8461 bytes test/fixtures/thumbnail.jpg | Bin 0 -> 1661 bytes test/observations-endpoint.js | 290 ++++++++++++++++++++++++++++++++++ test/sync-endpoint.js | 55 +++++++ tsconfig.json | 1 - 12 files changed, 815 insertions(+), 3 deletions(-) create mode 100644 src/ws-core-replicator.js create mode 100644 test/fixtures/audio.mp3 create mode 100644 test/fixtures/original.jpg create mode 100644 test/fixtures/preview.jpg create mode 100644 test/fixtures/thumbnail.jpg create mode 100644 test/observations-endpoint.js create mode 100644 test/sync-endpoint.js diff --git a/package-lock.json b/package-lock.json index cafc06e..5e677ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,25 +11,32 @@ "dependencies": { "@comapeo/core": "file:comapeo-core-2.0.1.tgz", "@fastify/sensible": "^5.6.0", + "@fastify/websocket": "^10.0.1", "@mapeo/crypto": "^1.0.0-alpha.10", "@sinclair/typebox": "^0.33.17", "fastify": "^4.28.1", - "string-timing-safe-equal": "^0.1.0" + "string-timing-safe-equal": "^0.1.0", + "ws": "^8.18.0" }, "bin": { "mapeo-server": "src/bin/mapeo-server.js" }, "devDependencies": { + "@comapeo/schema": "^1.2.0", "@eslint/js": "^9.13.0", + "@mapeo/mock-data": "^2.1.1", "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@types/node": "^22.8.4", + "@types/ws": "^8.5.12", "eslint": "^9.13.0", "globals": "^15.11.0", "husky": "^9.1.6", + "iterpal": "^0.4.0", "lint-staged": "^15.2.10", "npm-run-all": "^4.1.5", "prettier": "^3.3.3", "random-access-memory": "^6.2.1", + "streamx": "^2.20.1", "typescript": "^5.6.3" } }, @@ -556,6 +563,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@comapeo/schema/-/schema-1.2.0.tgz", "integrity": "sha512-LWrUSqtXmrEmE/B9V/zffKBbJmMo37AlvjXczvGx1+BbCAjOYCPDX6GCtnSKNsvtnNS2KQZDm9apg3mp92tFGA==", + "license": "MIT", "dependencies": { "@comapeo/geometry": "^1.0.2", "compact-encoding": "^2.12.0", @@ -743,6 +751,23 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@faker-js/faker": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.4.1.tgz", + "integrity": "sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/fakerjs" + } + ], + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0", + "npm": ">=6.14.13" + } + }, "node_modules/@fastify/accept-negotiator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-1.1.0.tgz", @@ -912,6 +937,17 @@ "@sinclair/typebox": ">=0.26 <=0.33" } }, + "node_modules/@fastify/websocket": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@fastify/websocket/-/websocket-10.0.1.tgz", + "integrity": "sha512-8/pQIxTPRD8U94aILTeJ+2O3el/r19+Ej5z1O1mXlqplsUH7KzCjAI0sgd5DM/NoPjAi5qLFNIjgM5+9/rGSNw==", + "license": "MIT", + "dependencies": { + "duplexify": "^4.1.2", + "fastify-plugin": "^4.0.0", + "ws": "^8.0.0" + } + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -1127,6 +1163,26 @@ "z32": "^1.0.0" } }, + "node_modules/@mapeo/mock-data": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@mapeo/mock-data/-/mock-data-2.1.1.tgz", + "integrity": "sha512-BBR10Dk+eqlm+r75gj/kvMNFSyAuueT2zrxOvMw/Yj9lVxFF4E1077oKzGDu0JD/4bbthBdQYTDT7Xl463zxNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@faker-js/faker": "^8.3.1", + "dereference-json-schema": "^0.2.1", + "json-schema-faker": "^0.5.3", + "type-fest": "^4.8.0" + }, + "bin": { + "generate-mapeo-data": "bin/generate-mapeo-data.js", + "list-mapeo-schemas": "bin/list-mapeo-schemas.js" + }, + "peerDependencies": { + "@comapeo/schema": "^1.1.1" + } + }, "node_modules/@maplibre/maplibre-gl-style-spec": { "version": "20.4.0", "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.4.0.tgz", @@ -1607,6 +1663,16 @@ "@types/node": "*" } }, + "node_modules/@types/ws": { + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -2248,6 +2314,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/call-me-maybe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", + "dev": true, + "license": "MIT" + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -2790,6 +2863,13 @@ "node": ">= 0.8" } }, + "node_modules/dereference-json-schema": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/dereference-json-schema/-/dereference-json-schema-0.2.1.tgz", + "integrity": "sha512-uzJsrg225owJyRQ8FNTPHIuBOdSzIZlHhss9u6W8mp7jJldHqGuLv9cULagP/E26QVJDnjtG8U7Dw139mM1ydA==", + "dev": true, + "license": "MIT" + }, "node_modules/detect-libc": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", @@ -2907,6 +2987,32 @@ } } }, + "node_modules/duplexify": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.2" + } + }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -3203,6 +3309,20 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/esquery": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", @@ -3604,6 +3724,13 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/format-util": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/format-util/-/format-util-1.0.5.tgz", + "integrity": "sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==", + "dev": true, + "license": "MIT" + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -4525,6 +4652,16 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, + "node_modules/iterpal": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/iterpal/-/iterpal-0.4.0.tgz", + "integrity": "sha512-Z/KMdj4T9D9n5FAkY0Y4j46f875PeRddgLrEZh77SBQ6WERvViDNh6pjp6+oA5q30Z+2ShbvVrnJXMTN4JSp2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/jackspeak": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", @@ -4596,6 +4733,57 @@ "dev": true, "license": "MIT" }, + "node_modules/json-schema-faker": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/json-schema-faker/-/json-schema-faker-0.5.6.tgz", + "integrity": "sha512-u/cFC26/GDxh2vPiAC8B8xVvpXAW+QYtG2mijEbKrimCk8IHtiwQBjCE8TwvowdhALWq9IcdIWZ+/8ocXvdL3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-schema-ref-parser": "^6.1.0", + "jsonpath-plus": "^7.2.0" + }, + "bin": { + "jsf": "bin/gen.cjs" + } + }, + "node_modules/json-schema-ref-parser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-6.1.0.tgz", + "integrity": "sha512-pXe9H1m6IgIpXmE5JSb8epilNTGsmTb2iPohAXpOdhqGFbQjNeHHsZxU+C8w6T81GZxSPFLeUoqDJmzxx5IGuw==", + "deprecated": "Please switch to @apidevtools/json-schema-ref-parser", + "dev": true, + "license": "MIT", + "dependencies": { + "call-me-maybe": "^1.0.1", + "js-yaml": "^3.12.1", + "ono": "^4.0.11" + } + }, + "node_modules/json-schema-ref-parser/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/json-schema-ref-parser/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/json-schema-ref-resolver": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-1.0.1.tgz", @@ -4650,6 +4838,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/jsonpath-plus": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-7.2.0.tgz", + "integrity": "sha512-zBfiUPM5nD0YZSBT/o/fbCUlCcepMIdP0CJZxM1+KgA4f2T206f6VAg9e7mX35+KlMaIc5qXW34f3BnwJ3w+RA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -5705,6 +5903,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ono": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/ono/-/ono-4.0.11.tgz", + "integrity": "sha512-jQ31cORBFE6td25deYeD80wxKBMj+zBmHTrVxnc6CKhx8gho6ipmWM5zj/oeoqioZ99yqBls9Z/9Nss7J26G2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "format-util": "^1.0.3" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -7028,6 +7236,13 @@ "node": ">= 10.x" } }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/start-stop-state-machine": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/start-stop-state-machine/-/start-stop-state-machine-1.2.0.tgz", @@ -7056,6 +7271,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "license": "MIT" + }, "node_modules/streamx": { "version": "2.20.1", "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", @@ -7986,6 +8207,7 @@ "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", "engines": { "node": ">=10.0.0" }, diff --git a/package.json b/package.json index e76be02..fbf41d2 100644 --- a/package.json +++ b/package.json @@ -28,24 +28,31 @@ }, "homepage": "https://github.com/digidem/comapeo-cloud#readme", "devDependencies": { + "@comapeo/schema": "^1.2.0", "@eslint/js": "^9.13.0", + "@mapeo/mock-data": "^2.1.1", "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@types/node": "^22.8.4", + "@types/ws": "^8.5.12", "eslint": "^9.13.0", "globals": "^15.11.0", "husky": "^9.1.6", + "iterpal": "^0.4.0", "lint-staged": "^15.2.10", "npm-run-all": "^4.1.5", "prettier": "^3.3.3", "random-access-memory": "^6.2.1", + "streamx": "^2.20.1", "typescript": "^5.6.3" }, "dependencies": { "@comapeo/core": "file:comapeo-core-2.0.1.tgz", "@fastify/sensible": "^5.6.0", + "@fastify/websocket": "^10.0.1", "@mapeo/crypto": "^1.0.0-alpha.10", "@sinclair/typebox": "^0.33.17", "fastify": "^4.28.1", - "string-timing-safe-equal": "^0.1.0" + "string-timing-safe-equal": "^0.1.0", + "ws": "^8.18.0" } } diff --git a/src/app.js b/src/app.js index d6b1431..f3b0771 100644 --- a/src/app.js +++ b/src/app.js @@ -1,4 +1,5 @@ import fastifySensible from '@fastify/sensible' +import fastifyWebsocket from '@fastify/websocket' import createFastifyPlugin from 'fastify-plugin' import allowedHostsPlugin from './allowed-hosts-plugin.js' @@ -31,6 +32,7 @@ async function comapeoServer( ...comapeoPluginOpts }, ) { + fastify.register(fastifyWebsocket) fastify.register(fastifySensible, { sharedSchemaId: 'HttpError' }) fastify.register(allowedHostsPlugin, { allowedHosts }) fastify.register(baseUrlPlugin) diff --git a/src/routes.js b/src/routes.js index 4f4cb89..603563c 100644 --- a/src/routes.js +++ b/src/routes.js @@ -1,3 +1,4 @@ +import { replicateProject } from '@comapeo/core' import { keyToPublicId as projectKeyToPublicId } from '@mapeo/crypto' import { Type } from '@sinclair/typebox' import timingSafeEqual from 'string-timing-safe-equal' @@ -5,6 +6,8 @@ import timingSafeEqual from 'string-timing-safe-equal' import assert from 'node:assert/strict' import * as fs from 'node:fs' +import { wsCoreReplicator } from './ws-core-replicator.js' + /** @import { FastifyInstance, FastifyPluginAsync, FastifyRequest, RawServerDefault } from 'fastify' */ /** @import { TypeBoxTypeProvider } from '@fastify/type-provider-typebox' */ @@ -12,6 +15,8 @@ const BEARER_SPACE_LENGTH = 'Bearer '.length const HEX_REGEX_32_BYTES = '^[0-9a-fA-F]{64}$' const HEX_STRING_32_BYTES = Type.String({ pattern: HEX_REGEX_32_BYTES }) +const BASE32_REGEX_32_BYTES = '^[0-9A-Za-z]{52}$' +const BASE32_STRING_32_BYTES = Type.String({ pattern: BASE32_REGEX_32_BYTES }) const INDEX_HTML_PATH = new URL('./static/index.html', import.meta.url) @@ -219,6 +224,171 @@ export default async function routes( } }, ) + + fastify.get( + '/sync/:projectPublicId', + { + schema: { + params: Type.Object({ + projectPublicId: BASE32_STRING_32_BYTES, + }), + response: { + 404: { $ref: 'HttpError' }, + }, + }, + async preHandler(req) { + await ensureProjectExists(this, req) + }, + websocket: true, + }, + /** + * @this {FastifyInstance} + */ + async function (socket, req) { + // The preValidation hook ensures that the project exists + const project = await this.comapeo.getProject(req.params.projectPublicId) + const replicationStream = replicateProject(project, false) + wsCoreReplicator(socket, replicationStream) + project.$sync.start() + }, + ) + + fastify.get( + '/projects/:projectPublicId/observations', + { + schema: { + params: Type.Object({ + projectPublicId: BASE32_STRING_32_BYTES, + }), + response: { + 200: Type.Object({ + data: Type.Array( + Type.Object({ + docId: Type.String(), + createdAt: Type.String(), + updatedAt: Type.String(), + deleted: Type.Boolean(), + lat: Type.Optional(Type.Number()), + lon: Type.Optional(Type.Number()), + attachments: Type.Array( + Type.Object({ + url: Type.String(), + }), + ), + tags: Type.Record( + Type.String(), + Type.Union([ + Type.Boolean(), + Type.Number(), + Type.String(), + Type.Null(), + Type.Array( + Type.Union([ + Type.Boolean(), + Type.Number(), + Type.String(), + Type.Null(), + ]), + ), + ]), + ), + }), + ), + }), + 403: { $ref: 'HttpError' }, + 404: { $ref: 'HttpError' }, + }, + }, + async preHandler(req) { + verifyBearerAuth(req) + await ensureProjectExists(this, req) + }, + }, + /** + * @this {FastifyInstance} + */ + async function (req) { + const { projectPublicId } = req.params + const project = await this.comapeo.getProject(projectPublicId) + + return { + data: (await project.observation.getMany({ includeDeleted: true })).map( + (obs) => ({ + docId: obs.docId, + createdAt: obs.createdAt, + updatedAt: obs.updatedAt, + deleted: obs.deleted, + lat: obs.lat, + lon: obs.lon, + attachments: obs.attachments + // TODO: For now, only photos are supported. + // See . + .filter((attachment) => attachment.type === 'photo') + .map((attachment) => ({ + url: new URL( + `projects/${projectPublicId}/attachments/${attachment.driveDiscoveryId}/${attachment.type}/${attachment.name}`, + req.baseUrl, + ).href, + })), + tags: obs.tags, + }), + ), + } + }, + ) + + fastify.get( + '/projects/:projectPublicId/attachments/:driveDiscoveryId/:type/:name', + { + schema: { + params: Type.Object({ + projectPublicId: BASE32_STRING_32_BYTES, + driveDiscoveryId: Type.String(), + // TODO: For now, only photos are supported. + // See . + type: Type.Literal('photo'), + name: Type.String(), + }), + querystring: Type.Object({ + variant: Type.Optional( + Type.Union([ + Type.Literal('original'), + Type.Literal('preview'), + Type.Literal('thumbnail'), + ]), + ), + }), + response: { + 403: { $ref: 'HttpError' }, + 404: { $ref: 'HttpError' }, + }, + }, + async preHandler(req) { + verifyBearerAuth(req) + await ensureProjectExists(this, req) + }, + }, + /** + * @this {FastifyInstance} + */ + async function (req, reply) { + const project = await this.comapeo.getProject(req.params.projectPublicId) + + const blobUrl = await project.$blobs.getUrl({ + driveId: req.params.driveDiscoveryId, + name: req.params.name, + type: req.params.type, + variant: req.query.variant || 'original', + }) + + const proxiedResponse = await fetch(blobUrl) + reply.code(proxiedResponse.status) + for (const [headerName, headerValue] of proxiedResponse.headers) { + reply.header(headerName, headerValue) + } + return reply.send(proxiedResponse.body) + }, + ) } /** @@ -237,3 +407,21 @@ function isBearerTokenValid(headerValue = '', expectedBearerToken) { return timingSafeEqual(actualBearerToken, expectedBearerToken) } + +/** + * @param {FastifyInstance} fastify + * @param {object} req + * @param {object} req.params + * @param {string} req.params.projectPublicId + * @returns {Promise} + */ +async function ensureProjectExists(fastify, req) { + try { + await fastify.comapeo.getProject(req.params.projectPublicId) + } catch (e) { + if (e instanceof Error && e.message.startsWith('NotFound')) { + throw fastify.httpErrors.notFound('Project not found') + } + throw e + } +} diff --git a/src/ws-core-replicator.js b/src/ws-core-replicator.js new file mode 100644 index 0000000..6892d6f --- /dev/null +++ b/src/ws-core-replicator.js @@ -0,0 +1,49 @@ +import { createWebSocketStream } from 'ws' + +import { Transform } from 'node:stream' +import { pipeline } from 'node:stream/promises' + +/** @import { Duplex } from 'streamx' */ +/** @import { replicateProject } from '@comapeo/core' */ + +/** + * @param {import('ws').WebSocket} ws + * @param {ReturnType} replicationStream + * @returns {Promise} + */ +export function wsCoreReplicator(ws, replicationStream) { + // This is purely to satisfy typescript at its worst. `pipeline` expects a + // NodeJS ReadWriteStream, but our replicationStream is a streamx Duplex + // stream. The difference is that streamx does not implement the + // `setEncoding`, `unpipe`, `wrap` or `isPaused` methods. The `pipeline` + // function does not depend on any of these methods (I have read through the + // NodeJS source code at cebf21d (v22.9.0) to confirm this), so we can safely + // cast the stream to a NodeJS ReadWriteStream. + const _replicationStream = /** @type {NodeJS.ReadWriteStream} */ ( + /** @type {unknown} */ (replicationStream) + ) + return pipeline( + _replicationStream, + wsSafetyTransform(ws), + createWebSocketStream(ws), + _replicationStream, + ) +} + +/** + * Avoid writing data to a closing or closed websocket, which would result in an + * error. Instead we drop the data and wait for the stream close/end events to + * propagate and close the streams cleanly. + * + * @param {import('ws').WebSocket} ws + */ +function wsSafetyTransform(ws) { + return new Transform({ + transform(chunk, _encoding, callback) { + if (ws.readyState === ws.CLOSED || ws.readyState === ws.CLOSING) { + return callback() + } + callback(null, chunk) + }, + }) +} diff --git a/test/fixtures/audio.mp3 b/test/fixtures/audio.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..19531804b9d3454e99c0fcd44758b6e7fc8cd474 GIT binary patch literal 17181 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/original.jpg b/test/fixtures/original.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5a3b430be3d9d35377d3a29a63c15ece9a66949b GIT binary patch literal 16308 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/thumbnail.jpg b/test/fixtures/thumbnail.jpg new file mode 100644 index 0000000000000000000000000000000000000000..facee563c04409a1e9e9ab36f9bdce15621a4ae6 GIT binary patch literal 1661 zcmbW!doaFEEY43*n#?wX`o z2BYjMM96j;avMpK+_FiCvL`V~bg@(I**$0f+THJS-uIvPInQ}M=UpFJe+F!HvU9Wp zKo9^xNdfCm0BeAV!xQidM8YP5Dw(K8v)83*Yty`TSsB^~`i34m;tTsnCY5JK#$Jl| zhtIcVU%Gm&vAHoUT{PTPH&kBVSo38FNLE#)Y0}(vb=_-Dz$a?{bJm3bRvNGX{2)*b zKwv=#3$C{VDv~{=z^?)R42Xb`QX5dxXc<{aL&HV@0YVT02}wyIk&^C2$vc3=N-0qE zEH@~+`k~Y!aQf_=QfYOo+EzU4;TsJD|Hx#tjM64$!e&h^ZR%DXLnC7oQ!~1?jjf%% zgQJt1yN9ROK5w7H@R5MPprgUZqfSJ}oQ#c2Idk@0YFc_mZeD&t;RWu+B7RwUg`o1v z)vCH1^$j;0o0@O6-EHsa?CKWv3_KcqJTyEqIyU)yYI^3y?A*&&i%a6S%kNg+udaP@ zfdKT4CAq)B{^7z(TnHo*LZZI7Ktzn>Kv<*{MQ?+Gr7OxWLQzehEse9vDXncqs~fQ1 z;Qb>X$|z|VPHHZGp?#J8J6Q7nlKlny+cgGYAW-so5Ed{8x?(Ljw)L>_$(O5c+!Q(V zmK1E3rAu$if&66@q2kAILi)V$MM1m1J}%eYgrp3!6ws~69e%w0Us6ftJ~mbl*cOV| znXY=1#NPNg8IRQ-u-=@KPGZdY1_rz`PH8lpu?~$o&ACQDp5b77{f62$mK_8qjD}fW z(L{;%f7iydi^!Yz40CcOzlZbUz=H129?aRGtb5t!^h5N(fDFd{7W71e-g|t{; z2DV?uOPifCkd5UT^d-Ks@vr62&WKC}#^n=@=UbdbBqE{^y35Nh>? zVerxR>M_5R{=B{jW{F~^GMt)hbHy@z3+2L~hj;1H__dEoa^o@&FY>nH?;^UBV7WVP zkKR;yVfx(bW;vJ35Cs!1)Vx9juO;GKUqmM(=%}(TAY>#7rZ{hBwjMvozcJ_cO=gd_9!bMi^a@pRM27lV!=9a zfkV#k^vd$!2u4d2$R_q$aymONak&9XPnFr?Pm>wdq^59b5%KMm(J7|<Q;@(f;b0P5JG4tO z>T32Dxa-lHQQ|cZ*@ltHJxn}CfAyJ|wL7|})96qMF_#XnJ+`JyPv@RAE2X4)caPEI zU6_huH#Eu7+{w(yn#5kPH95M>PpaK1n(aN1&T@R&&k`xp7IK;y+-INNAJA=edPZoE zf{1Q0H)jICto`J5z-OCOlLqssk}ExBI5>GCwPN4xLf=VZOTOK%=PRP+<*J?ez13<7 zbX#5d3LIvA^ba?!;5+~T literal 0 HcmV?d00001 diff --git a/test/observations-endpoint.js b/test/observations-endpoint.js new file mode 100644 index 0000000..c202d54 --- /dev/null +++ b/test/observations-endpoint.js @@ -0,0 +1,290 @@ +import { MapeoManager } from '@comapeo/core' +import { valueOf } from '@comapeo/schema' +import { keyToPublicId as projectKeyToPublicId } from '@mapeo/crypto' +import { generate } from '@mapeo/mock-data' +import { map } from 'iterpal' + +import assert from 'node:assert/strict' +import * as fs from 'node:fs/promises' +import test from 'node:test' +import { setTimeout as delay } from 'node:timers/promises' + +import { + BEARER_TOKEN, + createTestServer, + getManagerOptions, + randomAddProjectBody, +} from './test-helpers.js' + +/** @import { ObservationValue } from '@comapeo/schema'*/ +/** @import { FastifyInstance } from 'fastify' */ + +const FIXTURES_ROOT = new URL('./fixtures/', import.meta.url) +const FIXTURE_ORIGINAL_PATH = new URL('original.jpg', FIXTURES_ROOT).pathname +const FIXTURE_PREVIEW_PATH = new URL('preview.jpg', FIXTURES_ROOT).pathname +const FIXTURE_THUMBNAIL_PATH = new URL('thumbnail.jpg', FIXTURES_ROOT).pathname +const FIXTURE_AUDIO_PATH = new URL('audio.mp3', FIXTURES_ROOT).pathname + +test('returns a 403 if no auth is provided', async (t) => { + const server = createTestServer(t) + + const response = await server.inject({ + method: 'GET', + url: `/projects/${randomProjectPublicId()}/observations`, + }) + assert.equal(response.statusCode, 403) +}) + +test('returns a 403 if incorrect auth is provided', async (t) => { + const server = createTestServer(t) + + const response = await server.inject({ + method: 'GET', + url: `/projects/${randomProjectPublicId()}/observations`, + headers: { Authorization: 'Bearer bad' }, + }) + assert.equal(response.statusCode, 403) +}) + +test('returning no observations', async (t) => { + const server = createTestServer(t) + const projectKeys = randomAddProjectBody() + const projectPublicId = projectKeyToPublicId( + Buffer.from(projectKeys.projectKey, 'hex'), + ) + + const addProjectResponse = await server.inject({ + method: 'PUT', + url: '/projects', + body: projectKeys, + }) + assert.equal(addProjectResponse.statusCode, 200) + + const response = await server.inject({ + method: 'GET', + url: `/projects/${projectPublicId}/observations`, + headers: { Authorization: 'Bearer ' + BEARER_TOKEN }, + }) + assert.equal(response.statusCode, 200) + assert.deepEqual(await response.json(), { data: [] }) +}) + +test('returning observations with fetchable attachments', async (t) => { + const server = createTestServer(t) + + const serverAddress = await server.listen() + const serverUrl = new URL(serverAddress) + + const manager = new MapeoManager(getManagerOptions()) + const projectId = await manager.createProject({ name: 'CoMapeo project' }) + const project = await manager.getProject(projectId) + + await project.$member.addServerPeer(serverAddress, { + dangerouslyAllowInsecureConnections: true, + }) + + project.$sync.start() + project.$sync.connectServers() + + const observations = await Promise.all([ + (() => { + /** @type {ObservationValue} */ + // @ts-ignore + const noAttachments = { + ...generateObservation(), + attachments: [], + } + return project.observation.create(noAttachments) + })(), + (async () => { + // @ts-ignore + const { docId } = await project.observation.create(generateObservation()) + return project.observation.delete(docId) + })(), + (async () => { + const [imageBlob, audioBlob] = await Promise.all([ + project.$blobs.create( + { + original: FIXTURE_ORIGINAL_PATH, + preview: FIXTURE_PREVIEW_PATH, + thumbnail: FIXTURE_THUMBNAIL_PATH, + }, + { mimeType: 'image/jpeg', timestamp: Date.now() }, + ), + project.$blobs.create( + { original: FIXTURE_AUDIO_PATH }, + { mimeType: 'audio/mpeg', timestamp: Date.now() }, + ), + ]) + /** @type {ObservationValue} */ + // @ts-ignore + const withAttachment = { + ...generateObservation(), + attachments: [blobToAttachment(imageBlob), blobToAttachment(audioBlob)], + } + return project.observation.create(withAttachment) + })(), + ]) + + await project.$sync.waitForSync('full') + + // It's possible that the client thinks it's synced but the server hasn't + // processed everything yet, so we try a few times. + const data = await runWithRetries(3, async () => { + const response = await server.inject({ + authority: serverUrl.host, + method: 'GET', + url: `/projects/${projectId}/observations`, + headers: { Authorization: 'Bearer ' + BEARER_TOKEN }, + }) + assert.equal(response.statusCode, 200) + + const { data } = await response.json() + assert.equal(data.length, 3) + return data + }) + + await Promise.all( + observations.map(async (observation) => { + const observationFromApi = data.find( + (/** @type {{ docId: string }} */ o) => o.docId === observation.docId, + ) + assert(observationFromApi, 'observation found in API response') + assert.equal(observationFromApi.createdAt, observation.createdAt) + assert.equal(observationFromApi.updatedAt, observation.updatedAt) + assert.equal(observationFromApi.lat, observation.lat) + assert.equal(observationFromApi.lon, observation.lon) + assert.equal(observationFromApi.deleted, observation.deleted) + if (!observationFromApi.deleted) { + await assertAttachmentsCanBeFetchedAsJpeg({ + server, + serverAddress, + observationFromApi, + }) + } + assert.deepEqual(observationFromApi.tags, observation.tags) + }), + ) +}) + +function randomProjectPublicId() { + return projectKeyToPublicId( + Buffer.from(randomAddProjectBody().projectKey, 'hex'), + ) +} + +function generateObservation() { + const observationDoc = generate('observation')[0] + assert(observationDoc) + return valueOf(observationDoc) +} + +/** + * @param {object} blob + * @param {string} blob.driveId + * @param {'photo' | 'audio' | 'video'} blob.type + * @param {string} blob.name + * @param {string} blob.hash + */ +function blobToAttachment(blob) { + return { + driveDiscoveryId: blob.driveId, + type: blob.type, + name: blob.name, + hash: blob.hash, + } +} + +/** + * @template T + * @param {number} retries + * @param {() => Promise} fn + * @returns {Promise} + */ +async function runWithRetries(retries, fn) { + for (let i = 0; i < retries - 1; i++) { + try { + return await fn() + } catch { + await delay(500) + } + } + return fn() +} + +/** + * @param {object} options + * @param {FastifyInstance} options.server + * @param {string} options.serverAddress + * @param {Record} options.observationFromApi + * @returns {Promise} + */ +async function assertAttachmentsCanBeFetchedAsJpeg({ + server, + serverAddress, + observationFromApi, +}) { + assert(Array.isArray(observationFromApi.attachments)) + await Promise.all( + observationFromApi.attachments.map( + /** @param {unknown} attachment */ + async (attachment) => { + assert(attachment && typeof attachment === 'object') + assert('url' in attachment && typeof attachment.url === 'string') + await assertAttachmentAndVariantsCanBeFetched( + server, + serverAddress, + attachment.url, + ) + }, + ), + ) +} + +/** + * @param {FastifyInstance} server + * @param {string} serverAddress + * @param {string} url + * @returns {Promise} + */ +async function assertAttachmentAndVariantsCanBeFetched( + server, + serverAddress, + url, +) { + assert(url.startsWith(serverAddress)) + + /** @type {Map} */ + const variantsToCheck = new Map([ + [null, FIXTURE_ORIGINAL_PATH], + ['original', FIXTURE_ORIGINAL_PATH], + ['preview', FIXTURE_PREVIEW_PATH], + ['thumbnail', FIXTURE_THUMBNAIL_PATH], + ]) + + await Promise.all( + map(variantsToCheck, async ([variant, fixturePath]) => { + const expectedResponseBodyPromise = fs.readFile(fixturePath) + const attachmentResponse = await server.inject({ + method: 'GET', + url: url + (variant ? `?variant=${variant}` : ''), + headers: { Authorization: 'Bearer ' + BEARER_TOKEN }, + }) + assert.equal( + attachmentResponse.statusCode, + 200, + `expected 200 when fetching ${variant} attachment`, + ) + assert.equal( + attachmentResponse.headers['content-type'], + 'image/jpeg', + `expected ${variant} attachment to be a JPEG`, + ) + assert.deepEqual( + attachmentResponse.rawPayload, + await expectedResponseBodyPromise, + `expected ${variant} attachment to match fixture`, + ) + }), + ) +} diff --git a/test/sync-endpoint.js b/test/sync-endpoint.js new file mode 100644 index 0000000..73f4e66 --- /dev/null +++ b/test/sync-endpoint.js @@ -0,0 +1,55 @@ +import { keyToPublicId as projectKeyToPublicId } from '@mapeo/crypto' + +import assert from 'node:assert/strict' +import test from 'node:test' + +import { createTestServer, randomAddProjectBody } from './test-helpers.js' + +test('sync endpoint is available after adding a project', async (t) => { + const server = createTestServer(t) + const addProjectBody = randomAddProjectBody() + const projectPublicId = projectKeyToPublicId( + Buffer.from(addProjectBody.projectKey, 'hex'), + ) + + await t.test('sync endpoint not available yet', async () => { + const response = await server.inject({ + method: 'GET', + url: '/sync/' + projectPublicId, + headers: { + connection: 'upgrade', + upgrade: 'websocket', + }, + }) + assert.equal(response.statusCode, 404) + assert.equal(response.json().error, 'Not Found') + }) + + await server.inject({ + method: 'PUT', + url: '/projects', + body: addProjectBody, + }) + + await t.test('sync endpoint available', async (t) => { + const ws = await server.injectWS('/sync/' + projectPublicId) + t.after(() => ws.terminate()) + assert.equal(ws.readyState, ws.OPEN, 'websocket is open') + }) +}) + +test('sync endpoint returns error with an invalid project public ID', async (t) => { + const server = createTestServer(t) + + const response = await server.inject({ + method: 'GET', + url: '/sync/foobidoobi', + headers: { + connection: 'upgrade', + upgrade: 'websocket', + }, + }) + + assert.equal(response.statusCode, 400) + assert.equal(response.json().code, 'FST_ERR_VALIDATION') +}) diff --git a/tsconfig.json b/tsconfig.json index 6f7f088..a762471 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,7 +4,6 @@ "allowUnreachableCode": false, "allowUnusedLabels": false, "checkJs": true, - "exactOptionalPropertyTypes": true, "incremental": true, "lib": ["es2022"], "module": "nodenext", From d14435a11170f695fe893f844d2767d911f6a802 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Thu, 31 Oct 2024 20:36:10 +0000 Subject: [PATCH 05/10] feat: starting the server --- package-lock.json | 61 ++++++++++++++++++++ package.json | 2 + src/server.js | 142 +++++++++++++++++++++++++++++++++------------- 3 files changed, 165 insertions(+), 40 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5e677ca..378e754 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "@fastify/websocket": "^10.0.1", "@mapeo/crypto": "^1.0.0-alpha.10", "@sinclair/typebox": "^0.33.17", + "env-schema": "^6.0.0", "fastify": "^4.28.1", "string-timing-safe-equal": "^0.1.0", "ws": "^8.18.0" @@ -2878,6 +2879,27 @@ "node": ">=8" } }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-expand": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, "node_modules/drizzle-orm": { "version": "0.30.10", "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.30.10.tgz", @@ -3031,6 +3053,45 @@ "once": "^1.4.0" } }, + "node_modules/env-schema": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/env-schema/-/env-schema-6.0.0.tgz", + "integrity": "sha512-/IHp1EmrfubUOfF1wfe8koDWM5/dxUDylHANPNrPyrsYWJ7KRiB8gXbjtqQBujmOhpSpXXOhhnaL+meb+MaGtA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.12.0", + "dotenv": "^16.4.5", + "dotenv-expand": "10.0.0" + } + }, + "node_modules/env-schema/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/env-schema/node_modules/fast-uri": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", + "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", + "license": "BSD-3-Clause" + }, + "node_modules/env-schema/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, "node_modules/environment": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", diff --git a/package.json b/package.json index fbf41d2..ed9a90e 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ }, "type": "module", "scripts": { + "start": "node src/server.js", "format": "prettier --write .", "test:prettier": "prettier --check .", "test:eslint": "eslint .", @@ -51,6 +52,7 @@ "@fastify/websocket": "^10.0.1", "@mapeo/crypto": "^1.0.0-alpha.10", "@sinclair/typebox": "^0.33.17", + "env-schema": "^6.0.0", "fastify": "^4.28.1", "string-timing-safe-equal": "^0.1.0", "ws": "^8.18.0" diff --git a/src/server.js b/src/server.js index e75afeb..73a2f73 100644 --- a/src/server.js +++ b/src/server.js @@ -1,49 +1,111 @@ -import { MapeoManager } from '@comapeo/core' -import Fastify from 'fastify' -import RAM from 'random-access-memory' +import { Type } from '@sinclair/typebox' +import envSchema from 'env-schema' +import createFastify from 'fastify' -import * as path from 'node:path' +import crypto from 'node:crypto' +import fsPromises from 'node:fs/promises' +import path from 'node:path' -const migrationsFolderPath = new URL( - '../node_modules/@mapeo/core/drizzle', +import comapeoServer from './app.js' + +const DEFAULT_STORAGE = path.join(process.cwd(), 'data') +const CORE_DIR_NAME = 'core' +const DB_DIR_NAME = 'db' +const ROOT_KEY_FILE_NAME = 'root-key' + +const schema = Type.Object({ + PORT: Type.Number({ default: 8080 }), + SERVER_NAME: Type.String({ + description: 'name of the server', + default: 'CoMapeo Server', + }), + SERVER_BEARER_TOKEN: Type.String({ + description: + 'Bearer token for accessing the server, can be any random string', + }), + STORAGE_DIR: Type.String({ + description: 'path to directory where data is stored', + default: DEFAULT_STORAGE, + }), + ALLOWED_PROJECTS: Type.Optional( + Type.Integer({ + minimum: 1, + description: 'number of projects allowed to join the server', + }), + ), +}) + +/** @typedef {import('@sinclair/typebox').Static} Env */ +/** @type {ReturnType>} */ +const config = envSchema({ schema, dotenv: true }) + +const coreStorage = path.join(config.STORAGE_DIR, CORE_DIR_NAME) +const dbFolder = path.join(config.STORAGE_DIR, DB_DIR_NAME) +const rootKeyFile = path.join(config.STORAGE_DIR, ROOT_KEY_FILE_NAME) + +const migrationsFolder = new URL( + '../node_modules/@comapeo/core/drizzle/', import.meta.url, ).pathname +const projectMigrationsFolder = path.join(migrationsFolder, 'project') +const clientMigrationsFolder = path.join(migrationsFolder, 'client') -export class Server { - #fastify = Fastify() - #mapeoManager - - constructor() { - this.#mapeoManager = new MapeoManager({ - // TODO: Don't hard-code this - rootKey: Buffer.from('mWZ5Qi0oay0KInZ9F/pMCQ==', 'base64'), - // TODO: Save database to disk - dbFolder: ':memory:', - clientMigrationsFolder: path.join(migrationsFolderPath, 'client'), - projectMigrationsFolder: path.join(migrationsFolderPath, 'project'), - // TODO: Save data to disk - coreStorage: () => new RAM(), - fastify: this.#fastify, - }) - } +await Promise.all([ + fsPromises.mkdir(coreStorage, { recursive: true }), + fsPromises.mkdir(dbFolder, { recursive: true }), +]) - /** - * @param {object} options - * @param {number} options.port - * @returns {Promise} - */ - listen({ port }) { - // TODO - console.log('Starting server on port ' + port) - console.log(this.#mapeoManager) - return Promise.resolve() +/** @type {Buffer} */ +let rootKey +try { + rootKey = await fsPromises.readFile(rootKeyFile) +} catch (err) { + if ( + typeof err === 'object' && + err && + 'code' in err && + err.code !== 'ENOENT' + ) { + throw err } + rootKey = crypto.randomBytes(16) + await fsPromises.writeFile(rootKeyFile, rootKey) +} - /** - * @returns {Promise} - */ - close() { - // TODO - return Promise.resolve() - } +if (!rootKey || rootKey.length !== 16) { + throw new Error('Root key must be 16 bytes') +} + +const fastify = createFastify({ + logger: true, + trustProxy: true, +}) +fastify.register(comapeoServer, { + serverName: config.SERVER_NAME, + serverBearerToken: config.SERVER_BEARER_TOKEN, + allowedProjects: config.ALLOWED_PROJECTS, + rootKey, + coreStorage, + dbFolder, + projectMigrationsFolder, + clientMigrationsFolder, +}) + +fastify.get('/healthcheck', async () => {}) + +try { + await fastify.listen({ port: config.PORT, host: '0.0.0.0' }) +} catch (err) { + fastify.log.error(err) + process.exit(1) +} + +/** @param {NodeJS.Signals} signal*/ +async function closeGracefully(signal) { + console.log(`Received signal to terminate: ${signal}`) + await fastify.close() + console.log('Gracefully closed fastify') + process.kill(process.pid, signal) } +process.once('SIGINT', closeGracefully) +process.once('SIGTERM', closeGracefully) From c60eabed29edb559bc57eb4807cbecba56bbe1e4 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Thu, 31 Oct 2024 21:05:58 +0000 Subject: [PATCH 06/10] feat: Fly.io deployment --- .dockerignore | 16 ++++++++++++++++ Dockerfile | 25 +++++++++++++++++++++++++ fly.toml | 36 ++++++++++++++++++++++++++++++++++++ package.json | 2 +- 4 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 fly.toml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..5256b32 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,16 @@ +# flyctl launch added from .gitignore +**/.DS_Store +**/node_modules +**/coverage +**/.tmp +**/tmp +**/proto/build +dist +!drizzle/**/*.sql +**/.eslintcache +**/docs/api/html/* +**/test/fixtures/config/*.zip + +# flyctl launch added from .husky/_/.gitignore +.husky/_/**/* +fly.toml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c0bb89a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +# Best practices from https://snyk.io/blog/10-best-practices-to-containerize-nodejs-web-applications-with-docker/ + +ARG NODE_VERSION=20.17.0 + +# --------------> The build image__ +FROM node:${NODE_VERSION} AS build +RUN apt-get update && apt-get install -y --no-install-recommends dumb-init +WORKDIR /usr/src/app +COPY package*.json /usr/src/app/ +# TODO: Remove when package is published +COPY comapeo-core-2.0.1.tgz /usr/src/app/ +RUN npm ci --omit=dev + +# --------------> The production image__ +FROM node:${NODE_VERSION}-bullseye-slim + +ENV NODE_ENV production +ENV PORT 8080 +EXPOSE 8080 +COPY --from=build /usr/bin/dumb-init /usr/bin/dumb-init +USER node +WORKDIR /usr/src/app +COPY --chown=node:node --from=build /usr/src/app/node_modules /usr/src/app/node_modules +COPY --chown=node:node . /usr/src/app +CMD ["dumb-init", "npm", "start"] diff --git a/fly.toml b/fly.toml new file mode 100644 index 0000000..a2e0489 --- /dev/null +++ b/fly.toml @@ -0,0 +1,36 @@ +# fly.toml app configuration file generated for comapeo-cloud on 2024-10-07T20:59:21+01:00 +# +# See https://fly.io/docs/reference/configuration/ for information about how to use this file. +# + +app = 'comapeo-cloud' +primary_region = 'iad' + +[env] + STORAGE_DIR = '/data' + +[build] + +[http_service] + internal_port = 8080 + force_https = true + auto_stop_machines = 'suspend' + auto_start_machines = true + min_machines_running = 0 + max_machines_running = 1 + processes = ['app'] + +[[http_service.checks]] + grace_period = "10s" + interval = "30s" + method = "GET" + timeout = "5s" + path = "/healthcheck" + +[[vm]] + size = 'shared-cpu-1x' + +[mounts] + source = "myapp_data" + destination = "/data" + snapshot_retention = 14 diff --git a/package.json b/package.json index ed9a90e..d7dbf8e 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "test:node": "node --test", "test": "npm-run-all --aggregate-output --print-label --parallel test:*", "watch:typescript": "tsc --watch", - "prepare": "husky" + "prepare": "husky || true" }, "repository": { "type": "git", From b2330fbaf16d4e618b7e882499b2fd883a7d5ab4 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Thu, 31 Oct 2024 21:07:09 +0000 Subject: [PATCH 07/10] docs: flesh out README --- README.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/README.md b/README.md index ded9ce3..d2de68b 100644 --- a/README.md +++ b/README.md @@ -1 +1,42 @@ # @comapeo/cloud + +A self-hosted cloud server for CoMapeo. + +## Deploying CoMapeo Cloud + +CoMapeo Cloud comes with a [`Dockerfile`](./Dockerfile) that can be used to build a Docker image. This image can be used to deploy CoMapeo Cloud on a server. + +Server configuration is done using environment variables. The following environment variables are available: + +| Environment Variable | Required | Description | Default Value | +| --------------------- | -------- | -------------------------------------------------------------------- | ---------------- | +| `SERVER_BEARER_TOKEN` | Yes | Token for authenticating API requests. Should be large random string | | +| `PORT` | No | Port on which the server runs | `8080` | +| `SERVER_NAME` | No | Friendly server name, seen by users when adding server | `CoMapeo Server` | +| `ALLOWED_PROJECTS` | No | Number of projects allowed to register with the server | `1` | +| `STORAGE_DIR` | No | Path for storing app & project data | `$CWD/data` | + +### Deploying with fly.io + +CoMapeo Cloud can be deployed on [fly.io](https://fly.io) using the following steps: + +1. Install the flyctl CLI tool by following the instructions [here](https://fly.io/docs/getting-started/installing-flyctl/). +2. Create a new app on fly.io by running `flyctl apps create`, take a note of the app name. +3. Set the SERVER_BEARER_TOKEN secret via: + ```sh + flyctl secrets set SERVER_BEARER_TOKEN= --app + ``` +4. Deploy the app by running (optionally setting the `ALLOWED_PROJECTS` environment variable): + ```sh + flyctl deploy --app -e ALLOWED_PROJECTS=10 + ``` +5. The app should now be running on fly.io. You can access it at `https://.fly.dev`. + +To destroy the app (delete all data and project invites), run: + +> [!WARNING] +> This action is irreversible and will permanently delete all data associated with the app, and projects that have already added the server will no longer be able to sync with it. + +```sh +flyctl destroy --app +``` From 232a20606db97c3a9a0870b235adedcb496cca93 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Thu, 31 Oct 2024 21:09:53 +0000 Subject: [PATCH 08/10] chore: remove unused bin --- src/bin/mapeo-server.js | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100755 src/bin/mapeo-server.js diff --git a/src/bin/mapeo-server.js b/src/bin/mapeo-server.js deleted file mode 100755 index 9a9dd04..0000000 --- a/src/bin/mapeo-server.js +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env node -// @ts-check -import process from 'node:process' - -import { Server } from '../server.js' - -const port = 3000 - -const server = new Server() - -await server.listen({ port }) - -/** @param {NodeJS.Signals} signal*/ -async function closeGracefully(signal) { - await server.close() - process.kill(process.pid, signal) -} -process.once('SIGINT', closeGracefully) -process.once('SIGTERM', closeGracefully) From aa19e125ae5d268eacdef7223ec15faa59f01b43 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Thu, 31 Oct 2024 21:56:09 +0000 Subject: [PATCH 09/10] feat: build for release --- .gitignore | 4 +++- package.json | 21 ++++++++++++++++++--- tsconfig.json => tsconfig.base.json | 2 +- tsconfig.build.json | 9 +++++++++ tsconfig.dev.json | 7 +++++++ 5 files changed, 38 insertions(+), 5 deletions(-) rename tsconfig.json => tsconfig.base.json (96%) create mode 100644 tsconfig.build.json create mode 100644 tsconfig.dev.json diff --git a/.gitignore b/.gitignore index 308a9b2..c40d2d7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ /node_modules/ -/*.tsbuildinfo \ No newline at end of file +/*.tsbuildinfo + +/dist/ \ No newline at end of file diff --git a/package.json b/package.json index d7dbf8e..db4d63f 100644 --- a/package.json +++ b/package.json @@ -7,16 +7,31 @@ "mapeo-server": "src/bin/mapeo-server.js" }, "type": "module", + "files": [ + "Dockerfile", + "fly.toml", + "src/**/*.js", + "dist/**/*.d.ts", + "comapeo-core-2.0.1.tgz" + ], + "exports": { + "types": "./dist/app.d.ts", + "import": "./src/app.js" + }, "scripts": { "start": "node src/server.js", + "build:clean": "rm -rf dist", + "build:typescript": "tsc --project ./tsconfig.build.json", + "build": "npm-run-all --serial build:clean build:typescript", "format": "prettier --write .", "test:prettier": "prettier --check .", "test:eslint": "eslint .", - "test:typescript": "tsc", + "test:typescript": "tsc --project ./tsconfig.dev.json", "test:node": "node --test", "test": "npm-run-all --aggregate-output --print-label --parallel test:*", - "watch:typescript": "tsc --watch", - "prepare": "husky || true" + "watch:typescript": "tsc --watch --project ./tsconfig.dev.json", + "prepare": "husky || true", + "prepack": "npm run build" }, "repository": { "type": "git", diff --git a/tsconfig.json b/tsconfig.base.json similarity index 96% rename from tsconfig.json rename to tsconfig.base.json index a762471..e32b64a 100644 --- a/tsconfig.json +++ b/tsconfig.base.json @@ -8,7 +8,6 @@ "lib": ["es2022"], "module": "nodenext", "moduleResolution": "nodenext", - "noEmit": true, "noErrorTruncation": true, "noFallthroughCasesInSwitch": true, "noImplicitAny": true, @@ -17,6 +16,7 @@ "noImplicitThis": true, "noUncheckedIndexedAccess": true, "noUnusedParameters": true, + "outDir": "./dist", "resolveJsonModule": true, "skipLibCheck": true, "strict": true, diff --git a/tsconfig.build.json b/tsconfig.build.json new file mode 100644 index 0000000..3926f77 --- /dev/null +++ b/tsconfig.build.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.base.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "./dist" + }, + "include": ["src/**/*"] +} diff --git a/tsconfig.dev.json b/tsconfig.dev.json new file mode 100644 index 0000000..69a027b --- /dev/null +++ b/tsconfig.dev.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.base.json", + "compilerOptions": { + "noEmit": true + }, + "include": ["src/**/*", "test/**/*"] +} From 57e521e556238fe9ffd249a1b2bc22ba50af5136 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Thu, 31 Oct 2024 21:57:20 +0000 Subject: [PATCH 10/10] chore: use real `@comapeo/core` --- Dockerfile | 2 -- comapeo-core-2.0.1.tgz | Bin 176629 -> 0 bytes package-lock.json | 8 ++++---- package.json | 2 +- 4 files changed, 5 insertions(+), 7 deletions(-) delete mode 100644 comapeo-core-2.0.1.tgz diff --git a/Dockerfile b/Dockerfile index c0bb89a..228a8bb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,8 +7,6 @@ FROM node:${NODE_VERSION} AS build RUN apt-get update && apt-get install -y --no-install-recommends dumb-init WORKDIR /usr/src/app COPY package*.json /usr/src/app/ -# TODO: Remove when package is published -COPY comapeo-core-2.0.1.tgz /usr/src/app/ RUN npm ci --omit=dev # --------------> The production image__ diff --git a/comapeo-core-2.0.1.tgz b/comapeo-core-2.0.1.tgz deleted file mode 100644 index 2de4a4a418897295d5c79d3219dfe8bf631294d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176629 zcmV(^K-Iq=iwFP!00002|LlGHd)qd$=>Dv~0!?#DGNCBHnx3P?PW@`@ZEWY-PP)53 zJ~kynHXDjmNy@hB=>F~Zn;AU$kexKm?zx-p_iZc!7z}{HU@$Y7nS{f4;U(`C`LH+4 za^4+>X?V%=-XJbVF;Ajyp77w;;xB*Tzon(6XKQP$>HE^s^2+M!8vD!Yx6hWAm!Cab zT4R4%TK;x*d4>ID=`Ww*ziCm1`Cpd)a9=o>C8qxUU-DnC$F9n9QuKSh%ecIn4uWAe z?v2AyoR(Q}WsyN|kYt12>T(Fn){E1K-v+-HonDW<6==bT;?Pzr71%v5m#B=X->5Q$fuQT|nU~a{i5+M7^?xF*O2$T3S zg%PZ=!K~y38)dnPJIki!WLgS%0A;Py875&-u;Vf;IlJpH)_d}#!x*FgW8Y80JRGyT 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≦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 M0u`4!mjIj*0CRp&LjV8( diff --git a/package-lock.json b/package-lock.json index 378e754..7c50346 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.0", "license": "MIT", "dependencies": { - "@comapeo/core": "file:comapeo-core-2.0.1.tgz", + "@comapeo/core": "^2.1.0", "@fastify/sensible": "^5.6.0", "@fastify/websocket": "^10.0.1", "@mapeo/crypto": "^1.0.0-alpha.10", @@ -429,9 +429,9 @@ } }, "node_modules/@comapeo/core": { - "version": "2.0.1", - "resolved": "file:comapeo-core-2.0.1.tgz", - "integrity": "sha512-88QlfEgxTew1Mw8FjzR6MjlUVTeFFfj1+F5evtvoI8T+tb1clDIeTIFmLTF6mhZwwXJduZyQxG49rto5ANhAHg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-2.1.0.tgz", + "integrity": "sha512-Fvi/EO1RJIQfpmKFUs4QApM2TsV8JrKw3HbNZ3hmlXiPl1oVVvIce0KkfdPJOoYHbEznTc9dIN1A2vkaoi431A==", "dependencies": { "@comapeo/fallback-smp": "^1.0.0", "@comapeo/schema": "1.2.0", diff --git a/package.json b/package.json index db4d63f..9400939 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "typescript": "^5.6.3" }, "dependencies": { - "@comapeo/core": "file:comapeo-core-2.0.1.tgz", + "@comapeo/core": "^2.1.0", "@fastify/sensible": "^5.6.0", "@fastify/websocket": "^10.0.1", "@mapeo/crypto": "^1.0.0-alpha.10",