feat: migrate to Express.js for improved routing
Some checks are pending
Checks / Tests & checks (push) Waiting to run
Checks / Build all projects (push) Waiting to run
Deploy bemo / Deploy bemo to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Waiting to run
Deploy .com / Deploy dotcom to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Waiting to run
End to end tests / End to end tests (push) Waiting to run
Publish Canary Packages / Publish Canary Packages (push) Waiting to run
Publish VS Code Extension / Publish VS Code Extension (push) Waiting to run
Some checks are pending
Checks / Tests & checks (push) Waiting to run
Checks / Build all projects (push) Waiting to run
Deploy bemo / Deploy bemo to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Waiting to run
Deploy .com / Deploy dotcom to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Waiting to run
End to end tests / End to end tests (push) Waiting to run
Publish Canary Packages / Publish Canary Packages (push) Waiting to run
Publish VS Code Extension / Publish VS Code Extension (push) Waiting to run
Switched from `itty-router` to `Express.js` to enhance route handling and middleware support. Refactored the worker script to use `express` for routing and added middlewares for JSON and CORS handling. Updated development tooling to use `nodemon` for automatic restarts on file changes, improving the developer experience. Replaced `var` with `const` for better code practices and added PostgreSQL support with relevant schema.
This commit is contained in:
parent
43419581be
commit
b3b61e941d
8 changed files with 662 additions and 142 deletions
|
@ -11,12 +11,12 @@
|
|||
"/* GOTCHA */": "files will include ./dist and index.d.ts by default, add any others you want to include in here",
|
||||
"files": [],
|
||||
"scripts": {
|
||||
"dev": "yarn run -T tsx ../../scripts/workers/dev.ts",
|
||||
"dev": "nodemon --watch src --exec npx tsx ./src/worker.ts",
|
||||
"test-ci": "lazy inherit",
|
||||
"test": "yarn run -T jest",
|
||||
"test": "jest",
|
||||
"test-coverage": "lazy inherit",
|
||||
"check-bundle-size": "yarn run -T tsx ../../scripts/check-worker-bundle.ts --entry src/worker.ts --size-limit-bytes 350000",
|
||||
"lint": "yarn run -T tsx ../../scripts/lint.ts"
|
||||
"check-bundle-size": "tsx ../../scripts/check-worker-bundle.ts --entry src/worker.ts --size-limit-bytes 350000",
|
||||
"lint": "tsx ../../scripts/lint.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@supabase/auth-helpers-remix": "^0.2.2",
|
||||
|
@ -28,8 +28,10 @@
|
|||
"@tldraw/utils": "workspace:*",
|
||||
"@tldraw/validate": "workspace:*",
|
||||
"@tldraw/worker-shared": "workspace:*",
|
||||
"express": "^4.19.2",
|
||||
"itty-router": "^4.0.13",
|
||||
"nanoid": "4.0.2",
|
||||
"pg": "^8.12.0",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0"
|
||||
},
|
||||
|
@ -37,6 +39,7 @@
|
|||
"@cloudflare/workers-types": "^4.20240620.0",
|
||||
"esbuild": "^0.21.5",
|
||||
"lazyrepo": "0.0.0-alpha.27",
|
||||
"nodemon": "^3.1.4",
|
||||
"typescript": "^5.3.3",
|
||||
"wrangler": "3.62.0"
|
||||
},
|
||||
|
|
6
apps/dotcom-worker/schema.sql
Normal file
6
apps/dotcom-worker/schema.sql
Normal file
|
@ -0,0 +1,6 @@
|
|||
CREATE TABLE snapshots (
|
||||
id SERIAL PRIMARY KEY,
|
||||
slug VARCHAR(255) UNIQUE NOT NULL,
|
||||
drawing JSONB NOT NULL,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
|
@ -2,18 +2,18 @@ import { Client } from 'pg'
|
|||
import { Environment } from '../types'
|
||||
|
||||
export function createPostgresClient(env: Environment) {
|
||||
if (env.POSTGRES_HOST && env.POSTGRES_USER && env.POSTGRES_PASSWORD && env.POSTGRES_DB) {
|
||||
var client = new Client({
|
||||
host: env.POSTGRES_HOST,
|
||||
port: env.POSTGRES_PORT ? parseInt(env.POSTGRES_PORT) : 5432,
|
||||
user: env.POSTGRES_USER,
|
||||
password: env.POSTGRES_PASSWORD,
|
||||
database: env.POSTGRES_DB,
|
||||
})
|
||||
if (env.POSTGRES_HOST && env.POSTGRES_USER && env.POSTGRES_PASSWORD && env.POSTGRES_DB) {
|
||||
const client = new Client({
|
||||
host: env.POSTGRES_HOST,
|
||||
port: env.POSTGRES_PORT ? parseInt(env.POSTGRES_PORT) : 5432,
|
||||
user: env.POSTGRES_USER,
|
||||
password: env.POSTGRES_PASSWORD,
|
||||
database: env.POSTGRES_DB,
|
||||
})
|
||||
|
||||
client.connect()
|
||||
client.connect()
|
||||
|
||||
client.query(`
|
||||
client.query(`
|
||||
CREATE TABLE IF NOT EXISTS snapshots (
|
||||
id SERIAL PRIMARY KEY,
|
||||
slug VARCHAR(255) UNIQUE NOT NULL,
|
||||
|
@ -22,14 +22,13 @@ export function createPostgresClient(env: Environment) {
|
|||
);
|
||||
`)
|
||||
|
||||
return client
|
||||
|
||||
} else {
|
||||
console.warn('No Postgres credentials, loading from Postgres disabled')
|
||||
return null
|
||||
}
|
||||
return client
|
||||
} else {
|
||||
console.warn('No Postgres credentials, loading from Postgres disabled')
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
export function noPostgresSorry() {
|
||||
return new Response(JSON.stringify({ error: true, message: 'Could not create Postgres client' }))
|
||||
return new Response(JSON.stringify({ error: true, message: 'Could not create Postgres client' }))
|
||||
}
|
|
@ -1,5 +1,3 @@
|
|||
/// <reference no-default-lib="true"/>
|
||||
/// <reference types="@cloudflare/workers-types" />
|
||||
import {
|
||||
READ_ONLY_LEGACY_PREFIX,
|
||||
READ_ONLY_PREFIX,
|
||||
|
@ -7,15 +5,12 @@ import {
|
|||
ROOM_PREFIX,
|
||||
} from '@tldraw/dotcom-shared'
|
||||
import {
|
||||
createRouter,
|
||||
getUrlMetadata,
|
||||
handleApiRequest,
|
||||
notFound,
|
||||
parseRequestQuery,
|
||||
urlMetadataQueryValidator,
|
||||
} from '@tldraw/worker-shared'
|
||||
import { WorkerEntrypoint } from 'cloudflare:workers'
|
||||
import { createCors, json } from 'itty-router'
|
||||
import express from 'express'
|
||||
import { createRoom } from './routes/createRoom'
|
||||
import { createRoomSnapshot } from './routes/createRoomSnapshot'
|
||||
import { forwardRoomRequest } from './routes/forwardRoomRequest'
|
||||
|
@ -24,66 +19,15 @@ import { getRoomHistory } from './routes/getRoomHistory'
|
|||
import { getRoomHistorySnapshot } from './routes/getRoomHistorySnapshot'
|
||||
import { getRoomSnapshot } from './routes/getRoomSnapshot'
|
||||
import { joinExistingRoom } from './routes/joinExistingRoom'
|
||||
import { Environment } from './types'
|
||||
export { TLDrawDurableObject } from './TLDrawDurableObject'
|
||||
|
||||
const { preflight, corsify } = createCors({
|
||||
origins: Object.assign([], { includes: (origin: string) => isAllowedOrigin(origin) }),
|
||||
})
|
||||
const app = express()
|
||||
const port = 3000
|
||||
|
||||
const router = createRouter<Environment>()
|
||||
.all('*', preflight)
|
||||
.all('*', blockUnknownOrigins)
|
||||
.post('/new-room', createRoom)
|
||||
.post('/snapshots', createRoomSnapshot)
|
||||
.get('/snapshot/:roomId', getRoomSnapshot)
|
||||
.get(`/${ROOM_PREFIX}/:roomId`, (req, env) =>
|
||||
joinExistingRoom(req, env, ROOM_OPEN_MODE.READ_WRITE)
|
||||
)
|
||||
.get(`/${READ_ONLY_LEGACY_PREFIX}/:roomId`, (req, env) =>
|
||||
joinExistingRoom(req, env, ROOM_OPEN_MODE.READ_ONLY_LEGACY)
|
||||
)
|
||||
.get(`/${READ_ONLY_PREFIX}/:roomId`, (req, env) =>
|
||||
joinExistingRoom(req, env, ROOM_OPEN_MODE.READ_ONLY)
|
||||
)
|
||||
.get(`/${ROOM_PREFIX}/:roomId/history`, getRoomHistory)
|
||||
.get(`/${ROOM_PREFIX}/:roomId/history/:timestamp`, getRoomHistorySnapshot)
|
||||
.get('/readonly-slug/:roomId', getReadonlySlug)
|
||||
.get('/unfurl', async (req) => {
|
||||
const query = parseRequestQuery(req, urlMetadataQueryValidator)
|
||||
return json(await getUrlMetadata(query))
|
||||
})
|
||||
.post(`/${ROOM_PREFIX}/:roomId/restore`, forwardRoomRequest)
|
||||
.all('*', notFound)
|
||||
// Middleware to handle JSON requests
|
||||
app.use(express.json())
|
||||
|
||||
export default class Worker extends WorkerEntrypoint<Environment> {
|
||||
override async fetch(request: Request): Promise<Response> {
|
||||
return await handleApiRequest({
|
||||
router,
|
||||
request,
|
||||
env: this.env,
|
||||
ctx: this.ctx,
|
||||
after: (response) => {
|
||||
const setCookies = response.headers.getAll('set-cookie')
|
||||
// unfortunately corsify mishandles the set-cookie header, so
|
||||
// we need to manually add it back in
|
||||
const result = corsify(response)
|
||||
if ([...setCookies].length === 0) {
|
||||
return result
|
||||
}
|
||||
const newResponse = new Response(result.body, result)
|
||||
newResponse.headers.delete('set-cookie')
|
||||
// add cookies from original response
|
||||
for (const cookie of setCookies) {
|
||||
newResponse.headers.append('set-cookie', cookie)
|
||||
}
|
||||
return newResponse
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export function isAllowedOrigin(origin: string) {
|
||||
// CORS middleware
|
||||
function isAllowedOrigin(origin: string) {
|
||||
if (origin === 'http://localhost:3000') return true
|
||||
if (origin === 'http://localhost:5420') return true
|
||||
if (origin === 'https://meet.google.com') return true
|
||||
|
@ -92,28 +36,48 @@ export function isAllowedOrigin(origin: string) {
|
|||
return false
|
||||
}
|
||||
|
||||
async function blockUnknownOrigins(request: Request, env: Environment) {
|
||||
// allow requests for the same origin (new rewrite routing for SPA)
|
||||
if (request.headers.get('sec-fetch-site') === 'same-origin') {
|
||||
return undefined
|
||||
function corsMiddleware(req, res, next) {
|
||||
const origin = req.headers.origin
|
||||
if (isAllowedOrigin(origin)) {
|
||||
res.setHeader('Access-Control-Allow-Origin', origin)
|
||||
res.setHeader('Access-Control-Allow-Methods', 'GET,POST,PUT,DELETE,OPTIONS')
|
||||
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization')
|
||||
res.setHeader('Access-Control-Allow-Credentials', 'true')
|
||||
if (req.method === 'OPTIONS') {
|
||||
return res.sendStatus(200)
|
||||
}
|
||||
} else {
|
||||
return res.status(403).send('Not allowed')
|
||||
}
|
||||
|
||||
if (new URL(request.url).pathname === '/auth/callback') {
|
||||
// allow auth callback because we use the special cookie to verify
|
||||
// the request
|
||||
return undefined
|
||||
}
|
||||
|
||||
const origin = request.headers.get('origin')
|
||||
|
||||
// if there's no origin, this cannot be a cross-origin request, so we allow it.
|
||||
if (!origin) return undefined
|
||||
|
||||
if (env.IS_LOCAL !== 'true' && !isAllowedOrigin(origin)) {
|
||||
console.error('Attempting to connect from an invalid origin:', origin, env, request)
|
||||
return new Response('Not allowed', { status: 403 })
|
||||
}
|
||||
|
||||
// origin doesn't match, so we can continue
|
||||
return undefined
|
||||
next()
|
||||
}
|
||||
|
||||
app.use(corsMiddleware)
|
||||
|
||||
// Routes
|
||||
app.post('/new-room', createRoom)
|
||||
app.post('/snapshots', createRoomSnapshot)
|
||||
app.get('/snapshot/:roomId', getRoomSnapshot)
|
||||
app.get(`/${ROOM_PREFIX}/:roomId`, (req, res) =>
|
||||
joinExistingRoom(req, res, ROOM_OPEN_MODE.READ_WRITE)
|
||||
)
|
||||
app.get(`/${READ_ONLY_LEGACY_PREFIX}/:roomId`, (req, res) =>
|
||||
joinExistingRoom(req, res, ROOM_OPEN_MODE.READ_ONLY_LEGACY)
|
||||
)
|
||||
app.get(`/${READ_ONLY_PREFIX}/:roomId`, (req, res) =>
|
||||
joinExistingRoom(req, res, ROOM_OPEN_MODE.READ_ONLY)
|
||||
)
|
||||
app.get(`/${ROOM_PREFIX}/:roomId/history`, getRoomHistory)
|
||||
app.get(`/${ROOM_PREFIX}/:roomId/history/:timestamp`, getRoomHistorySnapshot)
|
||||
app.get('/readonly-slug/:roomId', getReadonlySlug)
|
||||
app.get('/unfurl', async (req, res) => {
|
||||
const query = parseRequestQuery(req, urlMetadataQueryValidator)
|
||||
res.json(await getUrlMetadata(query))
|
||||
})
|
||||
app.post(`/${ROOM_PREFIX}/:roomId/restore`, forwardRoomRequest)
|
||||
app.all('*', notFound)
|
||||
|
||||
// Start the server
|
||||
app.listen(port, () => {
|
||||
console.log(`Server is running on http://localhost:${port}`)
|
||||
})
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
main = "src/worker.ts"
|
||||
compatibility_date = "2024-06-19"
|
||||
platform = "node"
|
||||
|
||||
[dev]
|
||||
port = 8787
|
||||
|
|
|
@ -122,6 +122,7 @@
|
|||
"cross-env": "^7.0.3",
|
||||
"esbuild": "^0.21.5",
|
||||
"mime": "^4.0.3",
|
||||
"pg": "^8.12.0",
|
||||
"purgecss": "^5.0.0",
|
||||
"svgo": "^3.0.2"
|
||||
}
|
||||
|
|
|
@ -1,21 +1,11 @@
|
|||
import { ChildProcessWithoutNullStreams, spawn } from 'child_process'
|
||||
import { spawn } from 'child_process'
|
||||
import kleur from 'kleur'
|
||||
import { lock } from 'proper-lockfile'
|
||||
import stripAnsi from 'strip-ansi'
|
||||
|
||||
const lockfileName = __dirname
|
||||
|
||||
/**
|
||||
* a long time ago, workerd would regularly crash with a segfault but the error is not caught by the
|
||||
* process, so it will just hang. this script wraps the process, tailing the logs and restarting the
|
||||
* process if we encounter the string 'Segmentation fault'. we think this error is probably fixed
|
||||
* now.
|
||||
*
|
||||
* there's a separate issue where spawning multiple workerd instances at once would cause them to
|
||||
* fight and crash. we use a lockfile to start our wrokerd instances one at a time, waiting for the
|
||||
* previous one to be ready before we start the next.
|
||||
*/
|
||||
class MiniflareMonitor {
|
||||
class ProcessMonitor {
|
||||
private process: ChildProcessWithoutNullStreams | null = null
|
||||
|
||||
constructor(
|
||||
|
@ -26,7 +16,7 @@ class MiniflareMonitor {
|
|||
public async start(): Promise<void> {
|
||||
await this.stop() // Ensure any existing process is stopped
|
||||
await this.lock()
|
||||
await console.log(`Starting wrangler...`)
|
||||
await console.log(`Starting process...`)
|
||||
this.process = spawn(this.command, this.args, {
|
||||
env: {
|
||||
NODE_ENV: 'development',
|
||||
|
@ -51,17 +41,17 @@ class MiniflareMonitor {
|
|||
}
|
||||
|
||||
if (output.includes('Segmentation fault')) {
|
||||
console.error('Segmentation fault detected. Restarting Miniflare...')
|
||||
console.error('Segmentation fault detected. Restarting process...')
|
||||
this.restart()
|
||||
} else if (!err) {
|
||||
console.log(output.replace('[mf:inf]', '')) // or handle the output differently
|
||||
console.log(output) // or handle the output differently
|
||||
} else {
|
||||
console.error(output.replace('[mf:err]', '')) // or handle the output differently
|
||||
console.error(output) // or handle the output differently
|
||||
}
|
||||
}
|
||||
|
||||
private async restart(): Promise<void> {
|
||||
console.log('Restarting wrangler...')
|
||||
console.log('Restarting process...')
|
||||
await this.stop()
|
||||
setTimeout(() => this.start(), 3000) // Restart after a short delay
|
||||
}
|
||||
|
@ -154,15 +144,12 @@ class SizeReporter {
|
|||
}
|
||||
}
|
||||
|
||||
new MiniflareMonitor('wrangler', [
|
||||
'dev',
|
||||
'--env',
|
||||
'dev',
|
||||
'--test-scheduled',
|
||||
'--log-level',
|
||||
'info',
|
||||
'--var',
|
||||
'IS_LOCAL:true',
|
||||
new ProcessMonitor('nodemon', [
|
||||
'--watch',
|
||||
'src',
|
||||
'--exec',
|
||||
'tsx',
|
||||
'./src/worker.ts',
|
||||
...process.argv.slice(2),
|
||||
]).start()
|
||||
|
||||
|
|
575
yarn.lock
575
yarn.lock
|
@ -6092,9 +6092,12 @@ __metadata:
|
|||
"@tldraw/validate": "workspace:*"
|
||||
"@tldraw/worker-shared": "workspace:*"
|
||||
esbuild: "npm:^0.21.5"
|
||||
express: "npm:^4.19.2"
|
||||
itty-router: "npm:^4.0.13"
|
||||
lazyrepo: "npm:0.0.0-alpha.27"
|
||||
nanoid: "npm:4.0.2"
|
||||
nodemon: "npm:^3.1.4"
|
||||
pg: "npm:^8.12.0"
|
||||
react: "npm:^18.2.0"
|
||||
react-dom: "npm:^18.2.0"
|
||||
typescript: "npm:^5.3.3"
|
||||
|
@ -6175,6 +6178,7 @@ __metadata:
|
|||
license-report: "npm:^6.5.0"
|
||||
lint-staged: "npm:>=10"
|
||||
mime: "npm:^4.0.3"
|
||||
pg: "npm:^8.12.0"
|
||||
prettier: "npm:^3.0.3"
|
||||
prettier-plugin-organize-imports: "npm:^3.2.3"
|
||||
purgecss: "npm:^5.0.0"
|
||||
|
@ -7837,6 +7841,16 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"accepts@npm:~1.3.8":
|
||||
version: 1.3.8
|
||||
resolution: "accepts@npm:1.3.8"
|
||||
dependencies:
|
||||
mime-types: "npm:~2.1.34"
|
||||
negotiator: "npm:0.6.3"
|
||||
checksum: 67eaaa90e2917c58418e7a9b89392002d2b1ccd69bcca4799135d0c632f3b082f23f4ae4ddeedbced5aa59bcc7bdf4699c69ebed4593696c922462b7bc5744d6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"acorn-globals@npm:^7.0.0":
|
||||
version: 7.0.1
|
||||
resolution: "acorn-globals@npm:7.0.1"
|
||||
|
@ -8210,6 +8224,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"array-flatten@npm:1.1.1":
|
||||
version: 1.1.1
|
||||
resolution: "array-flatten@npm:1.1.1"
|
||||
checksum: e13c9d247241be82f8b4ec71d035ed7204baa82fae820d4db6948d30d3c4a9f2b3905eb2eec2b937d4aa3565200bd3a1c500480114cff649fa748747d2a50feb
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"array-includes@npm:^3.1.6, array-includes@npm:^3.1.7":
|
||||
version: 3.1.7
|
||||
resolution: "array-includes@npm:3.1.7"
|
||||
|
@ -8705,6 +8726,26 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"body-parser@npm:1.20.2":
|
||||
version: 1.20.2
|
||||
resolution: "body-parser@npm:1.20.2"
|
||||
dependencies:
|
||||
bytes: "npm:3.1.2"
|
||||
content-type: "npm:~1.0.5"
|
||||
debug: "npm:2.6.9"
|
||||
depd: "npm:2.0.0"
|
||||
destroy: "npm:1.2.0"
|
||||
http-errors: "npm:2.0.0"
|
||||
iconv-lite: "npm:0.4.24"
|
||||
on-finished: "npm:2.4.1"
|
||||
qs: "npm:6.11.0"
|
||||
raw-body: "npm:2.5.2"
|
||||
type-is: "npm:~1.6.18"
|
||||
unpipe: "npm:1.0.0"
|
||||
checksum: 3cf171b82190cf91495c262b073e425fc0d9e25cc2bf4540d43f7e7bbca27d6a9eae65ca367b6ef3993eea261159d9d2ab37ce444e8979323952e12eb3df319a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"boolbase@npm:^1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "boolbase@npm:1.0.0"
|
||||
|
@ -8865,6 +8906,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"bytes@npm:3.1.2":
|
||||
version: 3.1.2
|
||||
resolution: "bytes@npm:3.1.2"
|
||||
checksum: a10abf2ba70c784471d6b4f58778c0beeb2b5d405148e66affa91f23a9f13d07603d0a0354667310ae1d6dc141474ffd44e2a074be0f6e2254edb8fc21445388
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cac@npm:^6.7.14":
|
||||
version: 6.7.14
|
||||
resolution: "cac@npm:6.7.14"
|
||||
|
@ -9626,6 +9674,15 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"content-disposition@npm:0.5.4":
|
||||
version: 0.5.4
|
||||
resolution: "content-disposition@npm:0.5.4"
|
||||
dependencies:
|
||||
safe-buffer: "npm:5.2.1"
|
||||
checksum: b7f4ce176e324f19324be69b05bf6f6e411160ac94bc523b782248129eb1ef3be006f6cff431aaea5e337fe5d176ce8830b8c2a1b721626ead8933f0cbe78720
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"content-type@npm:1.0.4":
|
||||
version: 1.0.4
|
||||
resolution: "content-type@npm:1.0.4"
|
||||
|
@ -9633,6 +9690,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"content-type@npm:~1.0.4, content-type@npm:~1.0.5":
|
||||
version: 1.0.5
|
||||
resolution: "content-type@npm:1.0.5"
|
||||
checksum: 585847d98dc7fb8035c02ae2cb76c7a9bd7b25f84c447e5ed55c45c2175e83617c8813871b4ee22f368126af6b2b167df655829007b21aa10302873ea9c62662
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"convert-hrtime@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "convert-hrtime@npm:3.0.0"
|
||||
|
@ -9647,6 +9711,20 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cookie-signature@npm:1.0.6":
|
||||
version: 1.0.6
|
||||
resolution: "cookie-signature@npm:1.0.6"
|
||||
checksum: f4e1b0a98a27a0e6e66fd7ea4e4e9d8e038f624058371bf4499cfcd8f3980be9a121486995202ba3fca74fbed93a407d6d54d43a43f96fd28d0bd7a06761591a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cookie@npm:0.6.0":
|
||||
version: 0.6.0
|
||||
resolution: "cookie@npm:0.6.0"
|
||||
checksum: c1f8f2ea7d443b9331680598b0ae4e6af18a618c37606d1bbdc75bec8361cce09fe93e727059a673f2ba24467131a9fb5a4eec76bb1b149c1b3e1ccb268dc583
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cookie@npm:^0.5.0":
|
||||
version: 0.5.0
|
||||
resolution: "cookie@npm:0.5.0"
|
||||
|
@ -9905,6 +9983,15 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"debug@npm:2.6.9":
|
||||
version: 2.6.9
|
||||
resolution: "debug@npm:2.6.9"
|
||||
dependencies:
|
||||
ms: "npm:2.0.0"
|
||||
checksum: e07005f2b40e04f1bd14a3dd20520e9c4f25f60224cb006ce9d6781732c917964e9ec029fc7f1a151083cd929025ad5133814d4dc624a9aaf020effe4914ed14
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4":
|
||||
version: 4.3.4
|
||||
resolution: "debug@npm:4.3.4"
|
||||
|
@ -9947,6 +10034,18 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"debug@npm:^4":
|
||||
version: 4.3.5
|
||||
resolution: "debug@npm:4.3.5"
|
||||
dependencies:
|
||||
ms: "npm:2.1.2"
|
||||
peerDependenciesMeta:
|
||||
supports-color:
|
||||
optional: true
|
||||
checksum: cb6eab424c410e07813ca1392888589972ce9a32b8829c6508f5e1f25f3c3e70a76731610ae55b4bbe58d1a2fffa1424b30e97fa8d394e49cd2656a9643aedd2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"decamelize@npm:^1.2.0":
|
||||
version: 1.2.0
|
||||
resolution: "decamelize@npm:1.2.0"
|
||||
|
@ -10118,6 +10217,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"depd@npm:2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "depd@npm:2.0.0"
|
||||
checksum: c0c8ff36079ce5ada64f46cc9d6fd47ebcf38241105b6e0c98f412e8ad91f084bcf906ff644cc3a4bd876ca27a62accb8b0fff72ea6ed1a414b89d8506f4a5ca
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"depd@npm:~1.1.2":
|
||||
version: 1.1.2
|
||||
resolution: "depd@npm:1.1.2"
|
||||
|
@ -10139,6 +10245,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"destroy@npm:1.2.0":
|
||||
version: 1.2.0
|
||||
resolution: "destroy@npm:1.2.0"
|
||||
checksum: 0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"detect-libc@npm:^2.0.0":
|
||||
version: 2.0.2
|
||||
resolution: "detect-libc@npm:2.0.2"
|
||||
|
@ -10462,6 +10575,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ee-first@npm:1.1.1":
|
||||
version: 1.1.1
|
||||
resolution: "ee-first@npm:1.1.1"
|
||||
checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"electron-to-chromium@npm:^1.4.648":
|
||||
version: 1.4.649
|
||||
resolution: "electron-to-chromium@npm:1.4.649"
|
||||
|
@ -10511,6 +10631,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"encodeurl@npm:~1.0.2":
|
||||
version: 1.0.2
|
||||
resolution: "encodeurl@npm:1.0.2"
|
||||
checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"encoding@npm:^0.1.12, encoding@npm:^0.1.13":
|
||||
version: 0.1.13
|
||||
resolution: "encoding@npm:0.1.13"
|
||||
|
@ -11339,7 +11466,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"escape-html@npm:^1.0.3":
|
||||
"escape-html@npm:^1.0.3, escape-html@npm:~1.0.3":
|
||||
version: 1.0.3
|
||||
resolution: "escape-html@npm:1.0.3"
|
||||
checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24
|
||||
|
@ -11801,7 +11928,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"etag@npm:1.8.1":
|
||||
"etag@npm:1.8.1, etag@npm:~1.8.1":
|
||||
version: 1.8.1
|
||||
resolution: "etag@npm:1.8.1"
|
||||
checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff
|
||||
|
@ -11989,6 +12116,45 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"express@npm:^4.19.2":
|
||||
version: 4.19.2
|
||||
resolution: "express@npm:4.19.2"
|
||||
dependencies:
|
||||
accepts: "npm:~1.3.8"
|
||||
array-flatten: "npm:1.1.1"
|
||||
body-parser: "npm:1.20.2"
|
||||
content-disposition: "npm:0.5.4"
|
||||
content-type: "npm:~1.0.4"
|
||||
cookie: "npm:0.6.0"
|
||||
cookie-signature: "npm:1.0.6"
|
||||
debug: "npm:2.6.9"
|
||||
depd: "npm:2.0.0"
|
||||
encodeurl: "npm:~1.0.2"
|
||||
escape-html: "npm:~1.0.3"
|
||||
etag: "npm:~1.8.1"
|
||||
finalhandler: "npm:1.2.0"
|
||||
fresh: "npm:0.5.2"
|
||||
http-errors: "npm:2.0.0"
|
||||
merge-descriptors: "npm:1.0.1"
|
||||
methods: "npm:~1.1.2"
|
||||
on-finished: "npm:2.4.1"
|
||||
parseurl: "npm:~1.3.3"
|
||||
path-to-regexp: "npm:0.1.7"
|
||||
proxy-addr: "npm:~2.0.7"
|
||||
qs: "npm:6.11.0"
|
||||
range-parser: "npm:~1.2.1"
|
||||
safe-buffer: "npm:5.2.1"
|
||||
send: "npm:0.18.0"
|
||||
serve-static: "npm:1.15.0"
|
||||
setprototypeof: "npm:1.2.0"
|
||||
statuses: "npm:2.0.1"
|
||||
type-is: "npm:~1.6.18"
|
||||
utils-merge: "npm:1.0.1"
|
||||
vary: "npm:~1.1.2"
|
||||
checksum: 3fcd792536f802c059789ef48db3851b87e78fba103423e524144d79af37da7952a2b8d4e1a007f423329c7377d686d9476ac42e7d9ea413b80345d495e30a3a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ext@npm:^1.1.2":
|
||||
version: 1.7.0
|
||||
resolution: "ext@npm:1.7.0"
|
||||
|
@ -12172,6 +12338,21 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"finalhandler@npm:1.2.0":
|
||||
version: 1.2.0
|
||||
resolution: "finalhandler@npm:1.2.0"
|
||||
dependencies:
|
||||
debug: "npm:2.6.9"
|
||||
encodeurl: "npm:~1.0.2"
|
||||
escape-html: "npm:~1.0.3"
|
||||
on-finished: "npm:2.4.1"
|
||||
parseurl: "npm:~1.3.3"
|
||||
statuses: "npm:2.0.1"
|
||||
unpipe: "npm:~1.0.0"
|
||||
checksum: 635718cb203c6d18e6b48dfbb6c54ccb08ea470e4f474ddcef38c47edcf3227feec316f886dd701235997d8af35240cae49856721ce18f539ad038665ebbf163
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"find-replace@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "find-replace@npm:3.0.0"
|
||||
|
@ -12336,6 +12517,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"forwarded@npm:0.2.0":
|
||||
version: 0.2.0
|
||||
resolution: "forwarded@npm:0.2.0"
|
||||
checksum: 29ba9fd347117144e97cbb8852baae5e8b2acb7d1b591ef85695ed96f5b933b1804a7fac4a15dd09ca7ac7d0cdc104410e8102aae2dd3faa570a797ba07adb81
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fp-ts@npm:^2.5.3":
|
||||
version: 2.16.2
|
||||
resolution: "fp-ts@npm:2.16.2"
|
||||
|
@ -12343,6 +12531,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fresh@npm:0.5.2":
|
||||
version: 0.5.2
|
||||
resolution: "fresh@npm:0.5.2"
|
||||
checksum: 64c88e489b5d08e2f29664eb3c79c705ff9a8eb15d3e597198ef76546d4ade295897a44abb0abd2700e7ef784b2e3cbf1161e4fbf16f59129193fd1030d16da1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fromentries@npm:^1.2.0, fromentries@npm:^1.3.2":
|
||||
version: 1.3.2
|
||||
resolution: "fromentries@npm:1.3.2"
|
||||
|
@ -13471,6 +13666,19 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"http-errors@npm:2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "http-errors@npm:2.0.0"
|
||||
dependencies:
|
||||
depd: "npm:2.0.0"
|
||||
inherits: "npm:2.0.4"
|
||||
setprototypeof: "npm:1.2.0"
|
||||
statuses: "npm:2.0.1"
|
||||
toidentifier: "npm:1.0.1"
|
||||
checksum: 0e7f76ee8ff8a33e58a3281a469815b893c41357378f408be8f6d4aa7d1efafb0da064625518e7078381b6a92325949b119dc38fcb30bdbc4e3a35f78c44c439
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"http-errors@npm:~1.4.0":
|
||||
version: 1.4.0
|
||||
resolution: "http-errors@npm:1.4.0"
|
||||
|
@ -13646,6 +13854,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ignore-by-default@npm:^1.0.1":
|
||||
version: 1.0.1
|
||||
resolution: "ignore-by-default@npm:1.0.1"
|
||||
checksum: 441509147b3615e0365e407a3c18e189f78c07af08564176c680be1fabc94b6c789cad1342ad887175d4ecd5225de86f73d376cec8e06b42fd9b429505ffcf8a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ignore@npm:^3.3.5":
|
||||
version: 3.3.10
|
||||
resolution: "ignore@npm:3.3.10"
|
||||
|
@ -13874,6 +14089,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ipaddr.js@npm:1.9.1":
|
||||
version: 1.9.1
|
||||
resolution: "ipaddr.js@npm:1.9.1"
|
||||
checksum: 864d0cced0c0832700e9621913a6429ccdc67f37c1bd78fb8c6789fff35c9d167cb329134acad2290497a53336813ab4798d2794fd675d5eb33b5fdf0982b9ca
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"is-alphabetical@npm:^2.0.0":
|
||||
version: 2.0.1
|
||||
resolution: "is-alphabetical@npm:2.0.1"
|
||||
|
@ -16359,6 +16581,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"media-typer@npm:0.3.0":
|
||||
version: 0.3.0
|
||||
resolution: "media-typer@npm:0.3.0"
|
||||
checksum: 38e0984db39139604756903a01397e29e17dcb04207bb3e081412ce725ab17338ecc47220c1b186b6bbe79a658aad1b0d41142884f5a481f36290cdefbe6aa46
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"meow@npm:^13.0.0":
|
||||
version: 13.2.0
|
||||
resolution: "meow@npm:13.2.0"
|
||||
|
@ -16366,6 +16595,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"merge-descriptors@npm:1.0.1":
|
||||
version: 1.0.1
|
||||
resolution: "merge-descriptors@npm:1.0.1"
|
||||
checksum: 5abc259d2ae25bb06d19ce2b94a21632583c74e2a9109ee1ba7fd147aa7362b380d971e0251069f8b3eb7d48c21ac839e21fa177b335e82c76ec172e30c31a26
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"merge-stream@npm:^2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "merge-stream@npm:2.0.0"
|
||||
|
@ -16380,6 +16616,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"methods@npm:~1.1.2":
|
||||
version: 1.1.2
|
||||
resolution: "methods@npm:1.1.2"
|
||||
checksum: a385dd974faa34b5dd021b2bbf78c722881bf6f003bfe6d391d7da3ea1ed625d1ff10ddd13c57531f628b3e785be38d3eed10ad03cebd90b76932413df9a1820
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"micro@npm:9.3.5-canary.3":
|
||||
version: 9.3.5-canary.3
|
||||
resolution: "micro@npm:9.3.5-canary.3"
|
||||
|
@ -17095,7 +17338,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27":
|
||||
"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34":
|
||||
version: 2.1.35
|
||||
resolution: "mime-types@npm:2.1.35"
|
||||
dependencies:
|
||||
|
@ -17104,7 +17347,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"mime@npm:^1.3.4":
|
||||
"mime@npm:1.6.0, mime@npm:^1.3.4":
|
||||
version: 1.6.0
|
||||
resolution: "mime@npm:1.6.0"
|
||||
bin:
|
||||
|
@ -17494,6 +17737,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ms@npm:2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "ms@npm:2.0.0"
|
||||
checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ms@npm:2.1.1":
|
||||
version: 2.1.1
|
||||
resolution: "ms@npm:2.1.1"
|
||||
|
@ -17599,7 +17849,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"negotiator@npm:^0.6.2, negotiator@npm:^0.6.3":
|
||||
"negotiator@npm:0.6.3, negotiator@npm:^0.6.2, negotiator@npm:^0.6.3":
|
||||
version: 0.6.3
|
||||
resolution: "negotiator@npm:0.6.3"
|
||||
checksum: 2723fb822a17ad55c93a588a4bc44d53b22855bf4be5499916ca0cab1e7165409d0b288ba2577d7b029f10ce18cf2ed8e703e5af31c984e1e2304277ef979837
|
||||
|
@ -17876,6 +18126,26 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"nodemon@npm:^3.1.4":
|
||||
version: 3.1.4
|
||||
resolution: "nodemon@npm:3.1.4"
|
||||
dependencies:
|
||||
chokidar: "npm:^3.5.2"
|
||||
debug: "npm:^4"
|
||||
ignore-by-default: "npm:^1.0.1"
|
||||
minimatch: "npm:^3.1.2"
|
||||
pstree.remy: "npm:^1.1.8"
|
||||
semver: "npm:^7.5.3"
|
||||
simple-update-notifier: "npm:^2.0.0"
|
||||
supports-color: "npm:^5.5.0"
|
||||
touch: "npm:^3.1.0"
|
||||
undefsafe: "npm:^2.0.5"
|
||||
bin:
|
||||
nodemon: bin/nodemon.js
|
||||
checksum: 2e54d3d7b8522d46b27c2537361c57a1b29ae01d1b67e558d316d284c5fc319b5267a0dcaa10821a6533a4b6ff604ac66d37e192ed4a89e794cb441b7d5a2fe1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"nopt@npm:^5.0.0":
|
||||
version: 5.0.0
|
||||
resolution: "nopt@npm:5.0.0"
|
||||
|
@ -18121,6 +18391,15 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"on-finished@npm:2.4.1":
|
||||
version: 2.4.1
|
||||
resolution: "on-finished@npm:2.4.1"
|
||||
dependencies:
|
||||
ee-first: "npm:1.1.1"
|
||||
checksum: 8e81472c5028125c8c39044ac4ab8ba51a7cdc19a9fbd4710f5d524a74c6d8c9ded4dd0eed83f28d3d33ac1d7a6a439ba948ccb765ac6ce87f30450a26bfe2ea
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0":
|
||||
version: 1.4.0
|
||||
resolution: "once@npm:1.4.0"
|
||||
|
@ -18567,6 +18846,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"parseurl@npm:~1.3.3":
|
||||
version: 1.3.3
|
||||
resolution: "parseurl@npm:1.3.3"
|
||||
checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"patch-package@npm:^8.0.0":
|
||||
version: 8.0.0
|
||||
resolution: "patch-package@npm:8.0.0"
|
||||
|
@ -18668,6 +18954,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"path-to-regexp@npm:0.1.7":
|
||||
version: 0.1.7
|
||||
resolution: "path-to-regexp@npm:0.1.7"
|
||||
checksum: 701c99e1f08e3400bea4d701cf6f03517474bb1b608da71c78b1eb261415b645c5670dfae49808c89e12cea2dccd113b069f040a80de012da0400191c6dbd1c8
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"path-to-regexp@npm:6.1.0":
|
||||
version: 6.1.0
|
||||
resolution: "path-to-regexp@npm:6.1.0"
|
||||
|
@ -18773,6 +19066,87 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pg-cloudflare@npm:^1.1.1":
|
||||
version: 1.1.1
|
||||
resolution: "pg-cloudflare@npm:1.1.1"
|
||||
checksum: 45ca0c7926967ec9e66a9efc73ca57e3e933671b541bc774631a02ce683e7f658d0a4e881119b3f61486f38e344ae1b008d3a20eb5e21701c5fa8ff8382c5538
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pg-connection-string@npm:^2.6.4":
|
||||
version: 2.6.4
|
||||
resolution: "pg-connection-string@npm:2.6.4"
|
||||
checksum: 2c1d2ac1add1f93076f1594d217a0980f79add05dc48de6363e1c550827c78a6ee3e3b5420da9c54858f6b678cdb348aed49732ee68158b6cdb70f1d1c748cf9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pg-int8@npm:1.0.1":
|
||||
version: 1.0.1
|
||||
resolution: "pg-int8@npm:1.0.1"
|
||||
checksum: a1e3a05a69005ddb73e5f324b6b4e689868a447c5fa280b44cd4d04e6916a344ac289e0b8d2695d66e8e89a7fba023affb9e0e94778770ada5df43f003d664c9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pg-pool@npm:^3.6.2":
|
||||
version: 3.6.2
|
||||
resolution: "pg-pool@npm:3.6.2"
|
||||
peerDependencies:
|
||||
pg: ">=8.0"
|
||||
checksum: d5ccefb9a4913c737e07106ada841c7d8f2b110b02ef6b4cee198e1e7e758bac43cb3b6df7646e25858b9fe300db00f2f349868296fbd4b3b4c99c15906d1596
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pg-protocol@npm:^1.6.1":
|
||||
version: 1.6.1
|
||||
resolution: "pg-protocol@npm:1.6.1"
|
||||
checksum: 9af672208adae8214f55f5b4597c4699ab9946205a99863d3e2bb8d024fdab16711457b539bc366cc29040218aa87508cf61294b76d288f48881b973d9117bd6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pg-types@npm:^2.1.0":
|
||||
version: 2.2.0
|
||||
resolution: "pg-types@npm:2.2.0"
|
||||
dependencies:
|
||||
pg-int8: "npm:1.0.1"
|
||||
postgres-array: "npm:~2.0.0"
|
||||
postgres-bytea: "npm:~1.0.0"
|
||||
postgres-date: "npm:~1.0.4"
|
||||
postgres-interval: "npm:^1.1.0"
|
||||
checksum: 87a84d4baa91378d3a3da6076c69685eb905d1087bf73525ae1ba84b291b9dd8738c6716b333d8eac6cec91bf087237adc3e9281727365e9cbab0d9d072778b1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pg@npm:^8.12.0":
|
||||
version: 8.12.0
|
||||
resolution: "pg@npm:8.12.0"
|
||||
dependencies:
|
||||
pg-cloudflare: "npm:^1.1.1"
|
||||
pg-connection-string: "npm:^2.6.4"
|
||||
pg-pool: "npm:^3.6.2"
|
||||
pg-protocol: "npm:^1.6.1"
|
||||
pg-types: "npm:^2.1.0"
|
||||
pgpass: "npm:1.x"
|
||||
peerDependencies:
|
||||
pg-native: ">=3.0.1"
|
||||
dependenciesMeta:
|
||||
pg-cloudflare:
|
||||
optional: true
|
||||
peerDependenciesMeta:
|
||||
pg-native:
|
||||
optional: true
|
||||
checksum: ce39af0e85d42bf5fc8dcc02c57b38d4cb203fea937688509a77c0b005a54d4821e5e5963a5663934d76994eab42381698f08a44e21544b4545fd9d142dcfd12
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pgpass@npm:1.x":
|
||||
version: 1.0.5
|
||||
resolution: "pgpass@npm:1.0.5"
|
||||
dependencies:
|
||||
split2: "npm:^4.1.0"
|
||||
checksum: 0a6f3bf76e36bdb3c20a7e8033140c732767bba7e81f845f7489fc3123a2bd6e3b8e704f08cba86b117435414b5d2422e20ba9d5f2efb6f0c75c9efca73e8e87
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"picocolors@npm:1.0.0, picocolors@npm:^1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "picocolors@npm:1.0.0"
|
||||
|
@ -18906,6 +19280,36 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"postgres-array@npm:~2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "postgres-array@npm:2.0.0"
|
||||
checksum: aff99e79714d1271fe942fec4ffa2007b755e7e7dc3d2feecae3f1ceecb86fd3637c8138037fc3d9e7ec369231eeb136843c0b25927bf1ce295245a40ef849b4
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"postgres-bytea@npm:~1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "postgres-bytea@npm:1.0.0"
|
||||
checksum: d844ae4ca7a941b70e45cac1261a73ee8ed39d72d3d74ab1d645248185a1b7f0ac91a3c63d6159441020f4e1f7fe64689ac56536a307b31cef361e5187335090
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"postgres-date@npm:~1.0.4":
|
||||
version: 1.0.7
|
||||
resolution: "postgres-date@npm:1.0.7"
|
||||
checksum: 571ef45bec4551bb5d608c31b79987d7a895141f7d6c7b82e936a52d23d97474c770c6143e5cf8936c1cdc8b0dfd95e79f8136bf56a90164182a60f242c19f2b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"postgres-interval@npm:^1.1.0":
|
||||
version: 1.2.0
|
||||
resolution: "postgres-interval@npm:1.2.0"
|
||||
dependencies:
|
||||
xtend: "npm:^4.0.0"
|
||||
checksum: 746b71f93805ae33b03528e429dc624706d1f9b20ee81bf743263efb6a0cd79ae02a642a8a480dbc0f09547b4315ab7df6ce5ec0be77ed700bac42730f5c76b2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"postinstall-postinstall@npm:^2.1.0":
|
||||
version: 2.1.0
|
||||
resolution: "postinstall-postinstall@npm:2.1.0"
|
||||
|
@ -19098,6 +19502,16 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"proxy-addr@npm:~2.0.7":
|
||||
version: 2.0.7
|
||||
resolution: "proxy-addr@npm:2.0.7"
|
||||
dependencies:
|
||||
forwarded: "npm:0.2.0"
|
||||
ipaddr.js: "npm:1.9.1"
|
||||
checksum: f24a0c80af0e75d31e3451398670d73406ec642914da11a2965b80b1898ca6f66a0e3e091a11a4327079b2b268795f6fa06691923fef91887215c3d0e8ea3f68
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"proxy-from-env@npm:^1.1.0":
|
||||
version: 1.1.0
|
||||
resolution: "proxy-from-env@npm:1.1.0"
|
||||
|
@ -19112,6 +19526,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pstree.remy@npm:^1.1.8":
|
||||
version: 1.1.8
|
||||
resolution: "pstree.remy@npm:1.1.8"
|
||||
checksum: ef13b1b5896b35f67dbd4fb7ba54bb2a5da1a5c317276cbad4bcad4159bf8f7b5e1748dc244bf36865f3d560d2fc952521581280a91468c9c2df166cc760c8c1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pump@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "pump@npm:3.0.0"
|
||||
|
@ -19180,6 +19601,15 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"qs@npm:6.11.0":
|
||||
version: 6.11.0
|
||||
resolution: "qs@npm:6.11.0"
|
||||
dependencies:
|
||||
side-channel: "npm:^1.0.4"
|
||||
checksum: 5a3bfea3e2f359ede1bfa5d2f0dbe54001aa55e40e27dc3e60fab814362d83a9b30758db057c2011b6f53a2d4e4e5150194b5bac45372652aecb3e3c0d4b256e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"qs@npm:^6.7.0, qs@npm:^6.9.1":
|
||||
version: 6.12.1
|
||||
resolution: "qs@npm:6.12.1"
|
||||
|
@ -19228,6 +19658,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"range-parser@npm:~1.2.1":
|
||||
version: 1.2.1
|
||||
resolution: "range-parser@npm:1.2.1"
|
||||
checksum: ce21ef2a2dd40506893157970dc76e835c78cf56437e26e19189c48d5291e7279314477b06ac38abd6a401b661a6840f7b03bd0b1249da9b691deeaa15872c26
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"raw-body@npm:2.4.1":
|
||||
version: 2.4.1
|
||||
resolution: "raw-body@npm:2.4.1"
|
||||
|
@ -19240,6 +19677,18 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"raw-body@npm:2.5.2":
|
||||
version: 2.5.2
|
||||
resolution: "raw-body@npm:2.5.2"
|
||||
dependencies:
|
||||
bytes: "npm:3.1.2"
|
||||
http-errors: "npm:2.0.0"
|
||||
iconv-lite: "npm:0.4.24"
|
||||
unpipe: "npm:1.0.0"
|
||||
checksum: 863b5171e140546a4d99f349b720abac4410338e23df5e409cfcc3752538c9caf947ce382c89129ba976f71894bd38b5806c774edac35ebf168d02aa1ac11a95
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"rc@npm:^1.2.7, rc@npm:^1.2.8, rc@npm:~1.2.7":
|
||||
version: 1.2.8
|
||||
resolution: "rc@npm:1.2.8"
|
||||
|
@ -20202,7 +20651,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0":
|
||||
"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0":
|
||||
version: 5.2.1
|
||||
resolution: "safe-buffer@npm:5.2.1"
|
||||
checksum: 32872cd0ff68a3ddade7a7617b8f4c2ae8764d8b7d884c651b74457967a9e0e886267d3ecc781220629c44a865167b61c375d2da6c720c840ecd73f45d5d9451
|
||||
|
@ -20332,6 +20781,27 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"send@npm:0.18.0":
|
||||
version: 0.18.0
|
||||
resolution: "send@npm:0.18.0"
|
||||
dependencies:
|
||||
debug: "npm:2.6.9"
|
||||
depd: "npm:2.0.0"
|
||||
destroy: "npm:1.2.0"
|
||||
encodeurl: "npm:~1.0.2"
|
||||
escape-html: "npm:~1.0.3"
|
||||
etag: "npm:~1.8.1"
|
||||
fresh: "npm:0.5.2"
|
||||
http-errors: "npm:2.0.0"
|
||||
mime: "npm:1.6.0"
|
||||
ms: "npm:2.1.3"
|
||||
on-finished: "npm:2.4.1"
|
||||
range-parser: "npm:~1.2.1"
|
||||
statuses: "npm:2.0.1"
|
||||
checksum: ec66c0ad109680ad8141d507677cfd8b4e40b9559de23191871803ed241718e99026faa46c398dcfb9250676076573bd6bfe5d0ec347f88f4b7b8533d1d391cb
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"sentence-case@npm:^3.0.4":
|
||||
version: 3.0.4
|
||||
resolution: "sentence-case@npm:3.0.4"
|
||||
|
@ -20361,6 +20831,18 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"serve-static@npm:1.15.0":
|
||||
version: 1.15.0
|
||||
resolution: "serve-static@npm:1.15.0"
|
||||
dependencies:
|
||||
encodeurl: "npm:~1.0.2"
|
||||
escape-html: "npm:~1.0.3"
|
||||
parseurl: "npm:~1.3.3"
|
||||
send: "npm:0.18.0"
|
||||
checksum: 699b2d4c29807a51d9b5e0f24955346911437aebb0178b3c4833ad30d3eca93385ff9927254f5c16da345903cad39d9cd4a532198c95a5129cc4ed43911b15a4
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"server-destroy@npm:^1.0.1":
|
||||
version: 1.0.1
|
||||
resolution: "server-destroy@npm:1.0.1"
|
||||
|
@ -20414,6 +20896,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"setprototypeof@npm:1.2.0":
|
||||
version: 1.2.0
|
||||
resolution: "setprototypeof@npm:1.2.0"
|
||||
checksum: fde1630422502fbbc19e6844346778f99d449986b2f9cdcceb8326730d2f3d9964dbcb03c02aaadaefffecd0f2c063315ebea8b3ad895914bf1afc1747fc172e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"shallowequal@npm:^1.1.0":
|
||||
version: 1.1.0
|
||||
resolution: "shallowequal@npm:1.1.0"
|
||||
|
@ -20506,6 +20995,15 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"simple-update-notifier@npm:^2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "simple-update-notifier@npm:2.0.0"
|
||||
dependencies:
|
||||
semver: "npm:^7.5.3"
|
||||
checksum: 40bd4f96aa89aedbf717ae9f4ab8fca70e8f7511e8b766feb15471cca3f6fe4fe673743309b08b4ba8abfe0965c9cd927e1de46550a757b819b70fc7430cc85d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"slash@npm:^1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "slash@npm:1.0.0"
|
||||
|
@ -20718,6 +21216,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"split2@npm:^4.1.0":
|
||||
version: 4.2.0
|
||||
resolution: "split2@npm:4.2.0"
|
||||
checksum: 09bbefc11bcf03f044584c9764cd31a252d8e52cea29130950b26161287c11f519807c5e54bd9e5804c713b79c02cefe6a98f4688630993386be353e03f534ab
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"sprintf-js@npm:~1.0.2":
|
||||
version: 1.0.3
|
||||
resolution: "sprintf-js@npm:1.0.3"
|
||||
|
@ -20816,6 +21321,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"statuses@npm:2.0.1":
|
||||
version: 2.0.1
|
||||
resolution: "statuses@npm:2.0.1"
|
||||
checksum: 18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"statuses@npm:>= 1.2.1 < 2, statuses@npm:>= 1.5.0 < 2":
|
||||
version: 1.5.0
|
||||
resolution: "statuses@npm:1.5.0"
|
||||
|
@ -21162,7 +21674,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"supports-color@npm:^5.3.0":
|
||||
"supports-color@npm:^5.3.0, supports-color@npm:^5.5.0":
|
||||
version: 5.5.0
|
||||
resolution: "supports-color@npm:5.5.0"
|
||||
dependencies:
|
||||
|
@ -21530,6 +22042,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"toidentifier@npm:1.0.1":
|
||||
version: 1.0.1
|
||||
resolution: "toidentifier@npm:1.0.1"
|
||||
checksum: 952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"toml@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "toml@npm:3.0.0"
|
||||
|
@ -21549,6 +22068,15 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"touch@npm:^3.1.0":
|
||||
version: 3.1.1
|
||||
resolution: "touch@npm:3.1.1"
|
||||
bin:
|
||||
nodetouch: bin/nodetouch.js
|
||||
checksum: 853e763a1f4903302c5654ed353f84ad85baf757dac62c2d37ab67e0477cfd271e8c64771fcfad42310aff7c9d284ddb435ee5ca13ff36d0f3693fedd8e971d1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tough-cookie@npm:^4.1.2":
|
||||
version: 4.1.3
|
||||
resolution: "tough-cookie@npm:4.1.3"
|
||||
|
@ -21947,6 +22475,16 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"type-is@npm:~1.6.18":
|
||||
version: 1.6.18
|
||||
resolution: "type-is@npm:1.6.18"
|
||||
dependencies:
|
||||
media-typer: "npm:0.3.0"
|
||||
mime-types: "npm:~2.1.24"
|
||||
checksum: 0bd9eeae5efd27d98fd63519f999908c009e148039d8e7179a074f105362d4fcc214c38b24f6cda79c87e563cbd12083a4691381ed28559220d4a10c2047bed4
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"type@npm:^1.0.1":
|
||||
version: 1.2.0
|
||||
resolution: "type@npm:1.2.0"
|
||||
|
@ -22131,6 +22669,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"undefsafe@npm:^2.0.5":
|
||||
version: 2.0.5
|
||||
resolution: "undefsafe@npm:2.0.5"
|
||||
checksum: f42ab3b5770fedd4ada175fc1b2eb775b78f609156f7c389106aafd231bfc210813ee49f54483d7191d7b76e483bc7f537b5d92d19ded27156baf57592eb02cc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"underscore@npm:^1.12.1":
|
||||
version: 1.13.6
|
||||
resolution: "underscore@npm:1.13.6"
|
||||
|
@ -22413,7 +22958,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"unpipe@npm:1.0.0":
|
||||
"unpipe@npm:1.0.0, unpipe@npm:~1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "unpipe@npm:1.0.0"
|
||||
checksum: 4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2
|
||||
|
@ -22545,6 +23090,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"utils-merge@npm:1.0.1":
|
||||
version: 1.0.1
|
||||
resolution: "utils-merge@npm:1.0.1"
|
||||
checksum: 5d6949693d58cb2e636a84f3ee1c6e7b2f9c16cb1d42d0ecb386d8c025c69e327205aa1c69e2868cc06a01e5e20681fbba55a4e0ed0cce913d60334024eae798
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"uuid-by-string@npm:^4.0.0":
|
||||
version: 4.0.0
|
||||
resolution: "uuid-by-string@npm:4.0.0"
|
||||
|
@ -22640,6 +23192,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"vary@npm:~1.1.2":
|
||||
version: 1.1.2
|
||||
resolution: "vary@npm:1.1.2"
|
||||
checksum: 31389debef15a480849b8331b220782230b9815a8e0dbb7b9a8369559aed2e9a7800cd904d4371ea74f4c3527db456dc8e7ac5befce5f0d289014dbdf47b2242
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"vectra@npm:0.4.4":
|
||||
version: 0.4.4
|
||||
resolution: "vectra@npm:0.4.4"
|
||||
|
|
Loading…
Reference in a new issue