diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index fe46b54345..f5dfa72aa0 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -17,6 +17,8 @@ jobs: uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} + - name: Start MongoDB + uses: supercharge/mongodb-github-action@1.7.0 - run: npm install -g codeclimate-test-reporter - run: npm install - run: npm test diff --git a/.gitignore b/.gitignore index 04761aa03e..a2ab84496b 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,4 @@ dist/ # TypeScript compiled files packages/**/lib +*.sqlite \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f2fcad0ae..3d5328c1f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,30 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + + +### Bug Fixes + +* **authentication-oauth:** Fix bug and properly set Grant defaults ([#2659](https://github.com/feathersjs/feathers/issues/2659)) ([cb93bb9](https://github.com/feathersjs/feathers/commit/cb93bb911fd92282424da2db805cd685b7e4a45b)) +* **authentication:** Add safe dispatch data for authentication requests ([#2662](https://github.com/feathersjs/feathers/issues/2662)) ([d8104a1](https://github.com/feathersjs/feathers/commit/d8104a19ee9181e6a5ea81014af29ff9a3c28a8a)) +* **schema:** Fix dispatch resovler hook to convert actually resolved data ([#2663](https://github.com/feathersjs/feathers/issues/2663)) ([f7e87db](https://github.com/feathersjs/feathers/commit/f7e87dbb9a0bc8d89aee47318dddbaa4d6ba5b91)) + + +### Features + +* **authentication-local:** Add passwordHash property resolver ([#2660](https://github.com/feathersjs/feathers/issues/2660)) ([b41279b](https://github.com/feathersjs/feathers/commit/b41279b55eea3771a6fa4983a37be2413287bbc6)) +* **cli:** Add generators for new Knex SQL database adapter ([#2673](https://github.com/feathersjs/feathers/issues/2673)) ([0fb2c0f](https://github.com/feathersjs/feathers/commit/0fb2c0f629116f71184b8698c383af8cfd149688)) +* **cli:** Add hook generator ([#2667](https://github.com/feathersjs/feathers/issues/2667)) ([24e4bc0](https://github.com/feathersjs/feathers/commit/24e4bc04a67fadee0e6a96a8389d788faba5c305)) +* **cli:** Add support for JavaScript to the new CLI ([#2668](https://github.com/feathersjs/feathers/issues/2668)) ([ebac587](https://github.com/feathersjs/feathers/commit/ebac587f7d00dc7607c3f546352d79f79b89a5d4)) +* **cli:** Add typed client to a generated app ([#2669](https://github.com/feathersjs/feathers/issues/2669)) ([5b801b5](https://github.com/feathersjs/feathers/commit/5b801b5017ddc3eaa95622b539f51d605916bc86)) +* **cli:** Initial Feathers v5 CLI and Pinion generator ([#2578](https://github.com/feathersjs/feathers/issues/2578)) ([7f59ae7](https://github.com/feathersjs/feathers/commit/7f59ae7f1471895ba8a82aa4702f1a23f71b7682)) +* **knex:** Add KnexJS SQL database adapter to core ([#2671](https://github.com/feathersjs/feathers/issues/2671)) ([9380fff](https://github.com/feathersjs/feathers/commit/9380fff58596e8bb90b8bb098d2795b7eadfec20)) + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) diff --git a/_templates/package/new/index.test.ts.t b/_templates/package/new/index.test.ts.t deleted file mode 100644 index 053c5be400..0000000000 --- a/_templates/package/new/index.test.ts.t +++ /dev/null @@ -1,12 +0,0 @@ ---- -to: packages/<%= name %>/test/index.test.ts ---- - -import assert from 'assert'; -import { hello } from '../src'; - -describe('@feathersjs/<%= name %>', () => { - it('initializes', async () => { - assert.strictEqual(hello(), 'Hello'); - }); -}); diff --git a/_templates/package/new/index.ts.t b/_templates/package/new/index.ts.t deleted file mode 100644 index b0120efce8..0000000000 --- a/_templates/package/new/index.ts.t +++ /dev/null @@ -1,7 +0,0 @@ ---- -to: packages/<%= name %>/src/index.ts ---- - -export function hello () { - return 'Hello'; -} diff --git a/app/config/default.json b/app/config/default.json new file mode 100644 index 0000000000..8d021f90a9 --- /dev/null +++ b/app/config/default.json @@ -0,0 +1,9 @@ +{ + "host": "localhost", + "port": 3030, + "public": "./public/", + "paginate": { + "default": 10, + "max": 50 + } +} \ No newline at end of file diff --git a/app/config/test.json b/app/config/test.json new file mode 100644 index 0000000000..ab43666340 --- /dev/null +++ b/app/config/test.json @@ -0,0 +1,3 @@ +{ + "port": 8998 +} \ No newline at end of file diff --git a/app/package.json b/app/package.json new file mode 100644 index 0000000000..b00f9d6234 --- /dev/null +++ b/app/package.json @@ -0,0 +1,61 @@ +{ + "name": "app", + "description": "", + "version": "0.0.0", + "homepage": "", + "private": true, + "keywords": [ + "feathers" + ], + "author": {}, + "contributors": [], + "bugs": {}, + "engines": { + "node": ">= 16.13.0" + }, + "feathers": { + "language": "ts", + "packager": "npm", + "database": "sequelize", + "framework": "koa", + "transports": [ + "rest", + "websockets" + ] + }, + "directories": { + "lib": "src", + "test": "test" + }, + "main": "src/", + "dependencies": { + "@feathersjs/authentication": "^5.0.0-pre.16", + "@feathersjs/configuration": "^5.0.0-pre.16", + "@feathersjs/errors": "^5.0.0-pre.16", + "@feathersjs/feathers": "^5.0.0-pre.16", + "@feathersjs/koa": "^5.0.0-pre.16", + "@feathersjs/schema": "^5.0.0-pre.16", + "@feathersjs/socketio": "^5.0.0-pre.16", + "@feathersjs/transport-commons": "^5.0.0-pre.16", + "feathers-sequelize": "^6.3.2", + "koa-static": "^5.0.0", + "winston": "^3.6.0" + }, + "devDependencies": { + "@types/koa-static": "^4.0.2", + "@types/mocha": "^9.1.0", + "@types/node": "^17.0.23", + "axios": "^0.25.0", + "mocha": "^9.2.2", + "nodemon": "^2.0.15", + "shx": "^0.3.4", + "ts-node": "^10.7.0", + "typescript": "^4.6.3" + }, + "scripts": { + "dev": "nodemon -x ts-node src/index.ts", + "compile": "shx rm -rf lib/ && tsc", + "start": "npm run compile && node lib/", + "test": "mocha test/ --require ts-node/register --recursive --extension .ts --exit" + } +} \ No newline at end of file diff --git a/app/public/index.html b/app/public/index.html new file mode 100644 index 0000000000..2980642d2d --- /dev/null +++ b/app/public/index.html @@ -0,0 +1,77 @@ + + + + app + + + + + +
+

app

+ + + + +
+ + diff --git a/app/readme.md b/app/readme.md new file mode 100644 index 0000000000..83a6a98fce --- /dev/null +++ b/app/readme.md @@ -0,0 +1,43 @@ +# app + +> + +## About + +This project uses [Feathers](http://feathersjs.com). An open source web framework for building APIs and real-time applications. + +## Getting Started + +1. Make sure you have [NodeJS](https://nodejs.org/) and [npm](https://www.npmjs.com/) installed. +2. Install your dependencies + + ``` + cd path/to/app + npm install + ``` + +3. Start your app + + ``` + npm start + ``` + +## Testing + +Run `npm test` and all your tests in the `test/` directory will be run. + +## Scaffolding + +Feathers has a powerful command line interface. Here are a few things it can do: + +``` +$ npm install -g @feathersjs/cli # Install Feathers CLI + +$ feathers generate service # Generate a new Service +$ feathers generate hook # Generate a new Hook +$ feathers help # Show all commands +``` + +## Help + +For more information on all the things you can do with Feathers visit [docs.feathersjs.com](http://docs.feathersjs.com). diff --git a/app/src/app.ts b/app/src/app.ts new file mode 100644 index 0000000000..b761d4494e --- /dev/null +++ b/app/src/app.ts @@ -0,0 +1,30 @@ +import serveStatic from 'koa-static' +import { feathers } from '@feathersjs/feathers' +import configuration from '@feathersjs/configuration' +import { koa, rest, bodyParser, errorHandler, parseAuthentication } from '@feathersjs/koa' +import socketio from '@feathersjs/socketio' + +import services from './services' +import channels from './channels' +import { logErrorHook } from './logger' +import { Application } from './declarations' + +const app: Application = koa(feathers()) + +// Load our app configuration (see config/ folder) +app.configure(configuration()) + +// Set up Koa middleware +app.use(serveStatic(app.get('public'))) +app.use(errorHandler()) +app.use(parseAuthentication()) +app.use(bodyParser()) + +// Configure services and transports +app.configure(rest()) +app.configure(socketio()) +app.configure(services) +app.configure(channels) +app.hooks([ logErrorHook ]) + +export { app } diff --git a/app/src/channels.ts b/app/src/channels.ts new file mode 100644 index 0000000000..02a218132f --- /dev/null +++ b/app/src/channels.ts @@ -0,0 +1,67 @@ +import '@feathersjs/transport-commons' +import { Application, HookContext } from './declarations' +import { logger } from './logger' + +export default function(app: Application) { + if(typeof app.channel !== 'function') { + // If no real-time functionality has been configured just return + return + } + + logger.warn('Publishing all events to all authenticated users. See `channels.js` and https://docs.feathersjs.com/api/channels.html for more information.') + + app.on('connection', (connection: any) => { + // On a new real-time connection, add it to the anonymous channel + app.channel('anonymous').join(connection) + }) + + app.on('login', (authResult: any, { connection }: any) => { + // connection can be undefined if there is no + // real-time connection, e.g. when logging in via REST + if(connection) { + // Obtain the logged in user from the connection + // const user = connection.user + + // The connection is no longer anonymous, remove it + app.channel('anonymous').leave(connection) + + // Add it to the authenticated user channel + app.channel('authenticated').join(connection) + + // Channels can be named anything and joined on any condition + + // E.g. to send real-time events only to admins use + // if(user.isAdmin) { app.channel('admins').join(connection) } + + // If the user has joined e.g. chat rooms + // if(Array.isArray(user.rooms)) user.rooms.forEach(room => app.channel(`rooms/${room.id}`).join(connection)) + + // Easily organize users by email and userid for things like messaging + // app.channel(`emails/${user.email}`).join(connection) + // app.channel(`userIds/${user.id}`).join(connection) + } + }) + + // eslint-disable-next-line no-unused-vars + app.publish((data: any, hook: HookContext) => { + // Here you can add event publishers to channels set up in `channels.js` + // To publish only for a specific event use `app.publish(eventname, () => {})` + + console.log('Publishing all events to all authenticated users. See `channels.js` and https://docs.feathersjs.com/api/channels.html for more information.') // eslint-disable-line + + // e.g. to publish all service events to all authenticated users use + return app.channel('authenticated') + }) + + // Here you can also add service specific event publishers + // e.g. the publish the `users` service `created` event to the `admins` channel + // app.service('users').publish('created', () => app.channel('admins')) + + // With the userid and email organization from above you can easily select involved users + // app.service('messages').publish(() => { + // return [ + // app.channel(`userIds/${data.createdBy}`), + // app.channel(`emails/${data.recipientEmail}`) + // ] + // }) +} diff --git a/app/src/declarations.ts b/app/src/declarations.ts new file mode 100644 index 0000000000..f1f91a965b --- /dev/null +++ b/app/src/declarations.ts @@ -0,0 +1,10 @@ +import { HookContext as FeathersHookContext } from '@feathersjs/feathers' +import { Application as FeathersApplication } from '@feathersjs/koa' + +// A mapping of service names to types. Will be extended in service files. +export interface ServiceTypes {} + +// The application instance type that will be used everywhere else +export type Application = FeathersApplication + +export type HookContext = FeathersHookContext diff --git a/app/src/index.ts b/app/src/index.ts new file mode 100644 index 0000000000..2ebc5538ef --- /dev/null +++ b/app/src/index.ts @@ -0,0 +1,9 @@ +import { app } from './app' +import { logger } from './logger' + +const port = app.get('port') +const host = app.get('host') + +app.listen(port).then(() => { + logger.info(`Feathers app listening on http://${host}:${port}`) +}) diff --git a/app/src/logger.ts b/app/src/logger.ts new file mode 100644 index 0000000000..68fe3e2944 --- /dev/null +++ b/app/src/logger.ts @@ -0,0 +1,25 @@ +import { createLogger, format, transports } from 'winston' +import { NextFunction } from '@feathersjs/feathers' +import { HookContext } from './declarations' + +// Configure the Winston logger. For the complete documentation see https://github.com/winstonjs/winston +export const logger = createLogger({ + // To see more detailed errors, change this to 'debug' + level: 'info', + format: format.combine( + format.splat(), + format.simple() + ), + transports: [ + new transports.Console() + ] +}) + +export const logErrorHook = async (context: HookContext, next: NextFunction) => { + try { + await next() + } catch (error) { + logger.error(error) + throw error + } +} diff --git a/app/src/schemas/testing.schema.ts b/app/src/schemas/testing.schema.ts new file mode 100644 index 0000000000..b4a095e927 --- /dev/null +++ b/app/src/schemas/testing.schema.ts @@ -0,0 +1,93 @@ +import { schema, resolve, Infer } from '@feathersjs/schema' +import { HookContext } from '../declarations' + +// Schema and resolver for the basic data model (e.g. creating new entries) +export const testingDataSchema = schema({ + $id: 'TestingServiceData', + type: 'object', + additionalProperties: false, + required: [ 'text' ], + properties: { + text: { + type: 'string' + } + } +} as const) + +export type TestingServiceData = Infer + +export const testingDataResolver = resolve({ + schema: testingDataSchema, + validate: 'before', + properties: {} +}) + + +// Schema and resolver for making partial updates +export const testingPatchSchema = schema({ + $id: 'TestingServicePatch', + type: 'object', + additionalProperties: false, + required: [], + properties: { + ...testingDataSchema.definition.properties + } +} as const) + +export type TestingServicePatch = Infer + +export const testingPatchResolver = resolve({ + schema: testingPatchSchema, + validate: 'before', + properties: {} +}) + + +// Schema and resolver for the data that is being returned +export const testingResultSchema = schema({ + $id: 'TestingServiceResult', + type: 'object', + additionalProperties: false, + required: [ 'text', 'id' ], + properties: { + ...testingDataSchema.definition.properties, + id: { + type: 'string' + } + } +} as const) + +export type TestingServiceResult = Infer + +export const testingResultResolver = resolve({ + schema: testingResultSchema, + validate: false, + properties: {} +}) + + +// Schema and resolver for allowed query properties +export const testingQuerySchema = schema({ + $id: 'testingQuery', + type: 'object', + additionalProperties: false, + properties: { + $limit: { + type: 'integer', + minimum: 0, + maximum: 100 + }, + $skip: { + type: 'integer', + minimum: 0 + } + } +} as const) + +export type TestingServiceQuery = Infer + +export const testingQueryResolver = resolve({ + schema: testingQuerySchema, + validate: 'before', + properties: {} +}) diff --git a/app/src/services/index.ts b/app/src/services/index.ts new file mode 100644 index 0000000000..bf13ce764b --- /dev/null +++ b/app/src/services/index.ts @@ -0,0 +1,6 @@ +import { testing } from './testing' +import { Application } from '../declarations' + +export default (app: Application) => { + app.configure(testing) +} diff --git a/app/src/services/testing.ts b/app/src/services/testing.ts new file mode 100644 index 0000000000..137256b646 --- /dev/null +++ b/app/src/services/testing.ts @@ -0,0 +1,88 @@ +import { Id, NullableId, Params, ServiceMethods } from '@feathersjs/feathers' +import { Application } from '../declarations' +import { resolveData, resolveQuery, resolveResult } from '@feathersjs/schema' + +import { + TestingServiceData, + TestingServiceResult, + testingQueryResolver, + testingDataResolver, + testingPatchResolver, + testingResultResolver +} from '../schemas/testing.schema.js' + +// The TestingService service class +export interface TestingServiceOptions { + app: Application +} + +export class TestingService implements Partial> { + constructor (public options: TestingServiceOptions) { + } + + async find (params?: Params) { + return []; + } + + async get (id: string, params?: Params) { + return { + id, text: `A new message with ID: ${id}!` + }; + } + + async create (data: TestingServiceData, params?: Params) { + return { id: 'hi', ...data }; + } + + async update (id: string, data: TestingServiceData, params?: Params) { + return { id, ...data }; + } + + async patch (id: string, data: TestingServiceData, params?: Params) { + return { id, ...data }; + } + + async remove (id: string, params?: Params) { + return { id, text: '' }; + } +} + + +export const serviceHooks = [ + resolveResult(testingResultResolver), + resolveQuery(testingQueryResolver) +] + +export const methodHooks = { + find: [], + get: [], + create: [ + resolveData(testingDataResolver) + ], + update: [ + resolveData(testingDataResolver) + ], + patch: [ + resolveData(testingPatchResolver) + ], + remove: [] +} + +export const regularHooks = { + before: {}, + after: {}, + error: {} +} + +// A configure function that registers the service and its hooks via `app.configure` +export function testing (app) { + const options = { + paginate: app.get('paginate'), + app + } + + app.use('testing', new TestingService(options)) + app.service('testing').hooks(serviceHooks) + app.service('testing').hooks(methodHooks) + app.service('testing').hooks(regularHooks) +} diff --git a/app/test/app.test.ts b/app/test/app.test.ts new file mode 100644 index 0000000000..ada75c5917 --- /dev/null +++ b/app/test/app.test.ts @@ -0,0 +1,39 @@ +import assert from 'assert' +import axios from 'axios' +import { Server } from 'http' +import { app } from '../src/app' + +const port = app.get('port') +const appUrl = `http://${app.get('host')}:${port}` + +describe('Feathers application tests', () => { + let server: Server + + before(async () => { + server = await app.listen(port) + }) + + after(done => { + server.close(done) + }) + + it('starts and shows the index page', async () => { + const { data } = await axios.get(appUrl) + + assert.ok(data.indexOf('') !== -1) + }) + + it('shows a 404 JSON error', async () => { + try { + await axios.get(`${appUrl}/path/to/nowhere`, { + responseType: 'json' + }) + assert.fail('should never get here') + } catch (error: any) { + const { response } = error + assert.strictEqual(response?.status, 404) + assert.strictEqual(response?.data?.code, 404) + assert.strictEqual(response?.data?.name, 'NotFound') + } + }) +}) diff --git a/app/test/services/testing.ts b/app/test/services/testing.ts new file mode 100644 index 0000000000..48f4ac4158 --- /dev/null +++ b/app/test/services/testing.ts @@ -0,0 +1,10 @@ +import assert from 'assert' +import { app } from '../../src/app' + +describe('testing service', () => { + it('registered the service', () => { + const service = app.service('testing') + + assert.ok(service, 'Registered the service') + }) +}) diff --git a/app/tsconfig.json b/app/tsconfig.json new file mode 100644 index 0000000000..dc49d2efad --- /dev/null +++ b/app/tsconfig.json @@ -0,0 +1,16 @@ +{ + "ts-node": { + "files": true + }, + "compilerOptions": { + "target": "es2020", + "module": "commonjs", + "outDir": "./lib", + "rootDir": "./src", + "strict": true, + "esModuleInterop": true + }, + "exclude": [ + "test" + ] +} \ No newline at end of file diff --git a/lerna.json b/lerna.json index 112ba8d55e..84ccc188f5 100644 --- a/lerna.json +++ b/lerna.json @@ -3,7 +3,7 @@ "packages": [ "packages/*" ], - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "command": { "bootstrap": { "hoist": true diff --git a/package-lock.json b/package-lock.json index 0f4002000c..10417aebd6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "dependencies": { "@babel/core": "^7.18.2", "@babel/preset-env": "^7.18.2", + "@feathershq/pinion": "^0.3.3", "@feathersjs/hooks": "^0.7.5", "@types/axios": "^0.14.0", "@types/bcryptjs": "^2.4.2", @@ -28,6 +29,7 @@ "@types/mongodb": "^4.0.6", "@types/node": "^17.0.40", "@types/node-fetch": "^2.6.1", + "@types/prettier": "^2.6.3", "@types/qs": "^6.9.7", "@types/superagent": "^4.1.15", "@types/uuid": "^8.3.4", @@ -36,6 +38,7 @@ "axios": "^0.27.2", "babel-loader": "^8.2.5", "bcryptjs": "^2.4.3", + "chalk": "^4.0.1", "config": "^3.3.7", "encodeurl": "^1.0.2", "events": "^3.3.0", @@ -45,6 +48,7 @@ "json-schema": "^0.4.0", "json-schema-to-ts": "^2.5.3", "jsonwebtoken": "^8.5.1", + "knex": "^2.1.0", "koa": "^2.13.4", "koa-bodyparser": "^4.3.0", "koa-compose": "^4.1.0", @@ -62,9 +66,11 @@ "sift": "^16.0.0", "socket.io": "^4.5.1", "socket.io-client": "^4.5.1", + "sqlite3": "^5.0.8", "superagent": "^7.1.6", "ts-loader": "^9.3.0", "ts-node": "^10.8.1", + "type-fest": "^2.13.0", "uuid": "^8.3.2", "webpack": "^5.73.0", "webpack-cli": "^4.9.2", @@ -79,11 +85,11 @@ "eslint-plugin-prettier": "^4.0.0", "lerna": "^5.0.0", "npm-check-updates": "^13.1.1", - "prettier": "2.6.2", + "prettier": "^2.7.1", "typescript": "^4.7.3" }, "engines": { - "node": ">= 12" + "node": ">= 14" }, "funding": { "type": "github", @@ -114,17 +120,17 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", - "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.5.tgz", + "integrity": "sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", - "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.5.tgz", + "integrity": "sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==", "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", @@ -132,10 +138,10 @@ "@babel/helper-compilation-targets": "^7.18.2", "@babel/helper-module-transforms": "^7.18.0", "@babel/helpers": "^7.18.2", - "@babel/parser": "^7.18.0", + "@babel/parser": "^7.18.5", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2", + "@babel/traverse": "^7.18.5", + "@babel/types": "^7.18.4", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -576,9 +582,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.4.tgz", - "integrity": "sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.5.tgz", + "integrity": "sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1277,9 +1283,9 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.4.tgz", - "integrity": "sha512-lH2UaQaHVOAeYrUUuZ8i38o76J/FnO8vu21OE+tD1MyP9lxdZoSfz+pDbWkq46GogUrdrMz3tiz/FYGB+bVThg==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz", + "integrity": "sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q==", "dependencies": { "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-module-transforms": "^7.18.0", @@ -1325,9 +1331,9 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz", - "integrity": "sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz", + "integrity": "sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg==", "dependencies": { "@babel/helper-plugin-utils": "^7.17.12" }, @@ -1651,9 +1657,9 @@ } }, "node_modules/@babel/traverse": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", - "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.5.tgz", + "integrity": "sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==", "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/generator": "^7.18.2", @@ -1661,8 +1667,8 @@ "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.18.0", - "@babel/types": "^7.18.2", + "@babel/parser": "^7.18.5", + "@babel/types": "^7.18.4", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1766,6 +1772,79 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "node_modules/@feathershq/pinion": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@feathershq/pinion/-/pinion-0.3.3.tgz", + "integrity": "sha512-JXe55z59oc4uRT8XkYMlWYoj9ZKL39N5aIIHGnwSAVQbgQgatvTZpaPzZ0cgziN6XTl/QhJO4FRed+bPTInnvA==", + "dependencies": { + "@types/inquirer": "^8.2.0", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0", + "inquirer": "^8.2.0", + "ts-node": "^10.5.0", + "yargs": "^17.3.1" + }, + "bin": { + "pinion": "bin/pinion" + }, + "engines": { + "node": ">= 14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/daffl" + } + }, + "node_modules/@feathershq/pinion/node_modules/inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@feathershq/pinion/node_modules/yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@feathershq/pinion/node_modules/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "engines": { + "node": ">=12" + } + }, "node_modules/@feathersjs/hooks": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/@feathersjs/hooks/-/hooks-0.7.5.tgz", @@ -1778,7 +1857,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true + "devOptional": true }, "node_modules/@humanwhocodes/config-array": { "version": "0.9.5", @@ -1889,16 +1968,16 @@ } }, "node_modules/@lerna/add": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/add/-/add-5.0.0.tgz", - "integrity": "sha512-KdIOQL+88iHU9zuAU8Be1AL4cOVmm77nlckylsNaVVTiomNipr/h7lStiBO52BoMkwKzNwOH6He5HGY0Yo7s2w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/add/-/add-5.1.4.tgz", + "integrity": "sha512-kysQaV0+6aFtT0rkbaeuP6qb0vYDwo7TiC+Og4STyXxv2mHXi3F8r6Z9xXNUn8LPi29gaCmB8DLmbEGlTBM4xg==", "dev": true, "dependencies": { - "@lerna/bootstrap": "5.0.0", - "@lerna/command": "5.0.0", - "@lerna/filter-options": "5.0.0", - "@lerna/npm-conf": "5.0.0", - "@lerna/validation-error": "5.0.0", + "@lerna/bootstrap": "5.1.4", + "@lerna/command": "5.1.4", + "@lerna/filter-options": "5.1.4", + "@lerna/npm-conf": "5.1.4", + "@lerna/validation-error": "5.1.4", "dedent": "^0.7.0", "npm-package-arg": "^8.1.0", "p-map": "^4.0.0", @@ -1906,75 +1985,75 @@ "semver": "^7.3.4" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/bootstrap": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-5.0.0.tgz", - "integrity": "sha512-2m1BxKbYwDABy+uE/Da3EQM61R58bI3YQ0o1rsFQq1u0ltL9CJxw1o0lMg84hwMsBb4D+kLIXLqetYlLVgbr0Q==", - "dev": true, - "dependencies": { - "@lerna/command": "5.0.0", - "@lerna/filter-options": "5.0.0", - "@lerna/has-npm-version": "5.0.0", - "@lerna/npm-install": "5.0.0", - "@lerna/package-graph": "5.0.0", - "@lerna/pulse-till-done": "5.0.0", - "@lerna/rimraf-dir": "5.0.0", - "@lerna/run-lifecycle": "5.0.0", - "@lerna/run-topologically": "5.0.0", - "@lerna/symlink-binary": "5.0.0", - "@lerna/symlink-dependencies": "5.0.0", - "@lerna/validation-error": "5.0.0", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-5.1.4.tgz", + "integrity": "sha512-uCP0WdxGCGAGkwcuhv2nLqLByq9WJ5yr+93A8T15xZJfQsXLtYjjlivIe35MjS77eR+krwl5uY6WmGPJ33+afg==", + "dev": true, + "dependencies": { + "@lerna/command": "5.1.4", + "@lerna/filter-options": "5.1.4", + "@lerna/has-npm-version": "5.1.4", + "@lerna/npm-install": "5.1.4", + "@lerna/package-graph": "5.1.4", + "@lerna/pulse-till-done": "5.1.4", + "@lerna/rimraf-dir": "5.1.4", + "@lerna/run-lifecycle": "5.1.4", + "@lerna/run-topologically": "5.1.4", + "@lerna/symlink-binary": "5.1.4", + "@lerna/symlink-dependencies": "5.1.4", + "@lerna/validation-error": "5.1.4", "@npmcli/arborist": "5.2.0", "dedent": "^0.7.0", "get-port": "^5.1.1", "multimatch": "^5.0.0", "npm-package-arg": "^8.1.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "p-map": "^4.0.0", "p-map-series": "^2.1.0", "p-waterfall": "^2.1.1", "semver": "^7.3.4" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/changed": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-5.0.0.tgz", - "integrity": "sha512-A24MHipPGODmzQBH1uIMPPUUOc1Zm7Qe/eSYzm52bFHtVxWH0nIVXfunadoMX32NhzKQH3Sw8X2rWHPQSRoUvA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-5.1.4.tgz", + "integrity": "sha512-XwA3+pw5keO2CyjobLN8dU7mvGbzB3FD+LtLPI/zk7UbNIbl7V6uaIkoPJIdTWwP1e6S1BnGCVsAMtwQ980gTA==", "dev": true, "dependencies": { - "@lerna/collect-updates": "5.0.0", - "@lerna/command": "5.0.0", - "@lerna/listable": "5.0.0", - "@lerna/output": "5.0.0" + "@lerna/collect-updates": "5.1.4", + "@lerna/command": "5.1.4", + "@lerna/listable": "5.1.4", + "@lerna/output": "5.1.4" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/check-working-tree": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-5.0.0.tgz", - "integrity": "sha512-PnUMdpT2qS4o+vs+7l5fFIizstGdqSkhLG+Z9ZiY5OMtnGd+pmAFQFlbLSZSmdvQSOSobl9fhB1St8qhPD60xQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-5.1.4.tgz", + "integrity": "sha512-yFkRmZd25viwxyyOHZd3g7k2Od2Mk0Sf15fol3h/a7P0rUMf6UaMoGo2qlyo+DS51sz+eNalMmFKLpRrDXcSSw==", "dev": true, "dependencies": { - "@lerna/collect-uncommitted": "5.0.0", - "@lerna/describe-ref": "5.0.0", - "@lerna/validation-error": "5.0.0" + "@lerna/collect-uncommitted": "5.1.4", + "@lerna/describe-ref": "5.1.4", + "@lerna/validation-error": "5.1.4" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/child-process": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-5.0.0.tgz", - "integrity": "sha512-cFVNkedrlU8XTt15EvUtQ84hqtV4oToQW/elKNv//mhCz06HY8Y+Ia6XevK2zrIhZjS6DT576F/7SmTk3vnpmg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-5.1.4.tgz", + "integrity": "sha512-F7xP+bEdkE3JTyKz0t33QA5v2meXZrQQ0JmHa7/AlEg6D2r7gQ8UHSHuSUiNfX4drjpePe/9XaZylj01KLcx/w==", "dev": true, "dependencies": { "chalk": "^4.1.0", @@ -1982,126 +2061,125 @@ "strong-log-transformer": "^2.1.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/clean": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-5.0.0.tgz", - "integrity": "sha512-7B+0Nx6MEPmCfnEa1JFyZwJsC7qlGrikWXyLglLb/wcbapYVsuDauOl9AT1iOFoXKw82P77HWYUKWeD9DQgw/w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-5.1.4.tgz", + "integrity": "sha512-4Du/r8iYSYFpo1t5J1BYivmj84n9mGebt89isVsyqMmrCqd5B2ix/Z8PYPQFMwm7k9YYbV+sZGSpRvtXkn8kIw==", "dev": true, "dependencies": { - "@lerna/command": "5.0.0", - "@lerna/filter-options": "5.0.0", - "@lerna/prompt": "5.0.0", - "@lerna/pulse-till-done": "5.0.0", - "@lerna/rimraf-dir": "5.0.0", + "@lerna/command": "5.1.4", + "@lerna/filter-options": "5.1.4", + "@lerna/prompt": "5.1.4", + "@lerna/pulse-till-done": "5.1.4", + "@lerna/rimraf-dir": "5.1.4", "p-map": "^4.0.0", "p-map-series": "^2.1.0", "p-waterfall": "^2.1.1" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/cli": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-5.0.0.tgz", - "integrity": "sha512-g8Nifko8XNySOl8u2molSHVl+fk/E1e5FSn/W2ekeijmc3ezktp+xbPWofNq71N/d297+KPQpLBfwzXSo9ufIQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-5.1.4.tgz", + "integrity": "sha512-ckLSNJBY4iVmu6nBhHb8UchpWGm49z9pjsAEJQ4F/VNkT6zKsmOCfv2ahkvudQ77gc0K/dH+MTvoOHsH85bpow==", "dev": true, "dependencies": { - "@lerna/global-options": "5.0.0", + "@lerna/global-options": "5.1.4", "dedent": "^0.7.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "yargs": "^16.2.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/collect-uncommitted": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-5.0.0.tgz", - "integrity": "sha512-mga/2S9rK0TP5UCulWiCTrC/uKaiIlOro1n8R3oCw6eRw9eupCSRx5zGI7pdh8CPD82MDL7w0a6OTep3WBSBVA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-5.1.4.tgz", + "integrity": "sha512-CI9PXYQuewqA4ZBMRycDUSVRJmAxUeP8HEZ3aKNvAwlLxLlGCueh8qOHXZHxgkmF6eQtcEjblsReiDt8bFJZpA==", "dev": true, "dependencies": { - "@lerna/child-process": "5.0.0", + "@lerna/child-process": "5.1.4", "chalk": "^4.1.0", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/collect-updates": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-5.0.0.tgz", - "integrity": "sha512-X82i8SVgBXLCk8vbKWfQPRLTAXROCANL8Z/bU1l6n7yycsHKdjrrlNi1+KprFdfRsMvSm10R4qPNcl9jgsp/IA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-5.1.4.tgz", + "integrity": "sha512-P1zlaZ0QkKIjbU3o7hjd4zcxzti1ndS4+eQNmlxZP3IcmlJ4+Ne+VxGeaACsjzPPBqSBWX1xcyMFLALH/Jo2CA==", "dev": true, "dependencies": { - "@lerna/child-process": "5.0.0", - "@lerna/describe-ref": "5.0.0", + "@lerna/child-process": "5.1.4", + "@lerna/describe-ref": "5.1.4", "minimatch": "^3.0.4", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "slash": "^3.0.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/command": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/command/-/command-5.0.0.tgz", - "integrity": "sha512-j7/apU5d/nhSc1qIZgcV03KyO5jz3y7cwSum3IuK8/XF6rKwt3FVnbue1V3l9sJ6IRJjsRGKyViB1IdP5nSX4Q==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/command/-/command-5.1.4.tgz", + "integrity": "sha512-S/3oIagN9/ntuGtljSxHu4liB9e9YFWsq/xZOR8YoqROJENv5G5zyAmHjXq90AR/tGmLvufzFliBfEIG9CywFA==", "dev": true, "dependencies": { - "@lerna/child-process": "5.0.0", - "@lerna/package-graph": "5.0.0", - "@lerna/project": "5.0.0", - "@lerna/validation-error": "5.0.0", - "@lerna/write-log-file": "5.0.0", + "@lerna/child-process": "5.1.4", + "@lerna/package-graph": "5.1.4", + "@lerna/project": "5.1.4", + "@lerna/validation-error": "5.1.4", + "@lerna/write-log-file": "5.1.4", "clone-deep": "^4.0.1", "dedent": "^0.7.0", "execa": "^5.0.0", "is-ci": "^2.0.0", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/conventional-commits": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-5.0.0.tgz", - "integrity": "sha512-tUCRTAycDCtSlCEI0hublq4uKHeV0UHpwIb3Fdt6iv2AoTSPBSX/Dwu/6VqguysOSEkkR4M2JCOLvJCl4IMxwg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-5.1.4.tgz", + "integrity": "sha512-0v0exYOH9cJTNpKggqAw7vHVLlPjqO6Y20PUg44F3GOEjd54VIGDqu+MkVhflqvUftzZjmcUHDUGHVP+8dFBNw==", "dev": true, "dependencies": { - "@lerna/validation-error": "5.0.0", + "@lerna/validation-error": "5.1.4", "conventional-changelog-angular": "^5.0.12", "conventional-changelog-core": "^4.2.2", "conventional-recommended-bump": "^6.1.0", "fs-extra": "^9.1.0", "get-stream": "^6.0.0", - "lodash.template": "^4.5.0", "npm-package-arg": "^8.1.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "pify": "^5.0.0", "semver": "^7.3.4" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/create": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/create/-/create-5.0.0.tgz", - "integrity": "sha512-sdFTVTLOVuhHpzIYhFAwK0Ry3p4d7uMe9ZG/Ii128/pB9kEEfCth+1WBq6mBpYZ5mOLLgxJbWalbiJFl0toQRw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-5.1.4.tgz", + "integrity": "sha512-UPR5EnFg0WzXiRIKl+MGHH3hBB6s1xkLDJNLGzac5Ztry/ibLDhl47wYoYcToiQ3/y3/3751WLJErF+A52mCyw==", "dev": true, "dependencies": { - "@lerna/child-process": "5.0.0", - "@lerna/command": "5.0.0", - "@lerna/npm-conf": "5.0.0", - "@lerna/validation-error": "5.0.0", + "@lerna/child-process": "5.1.4", + "@lerna/command": "5.1.4", + "@lerna/npm-conf": "5.1.4", + "@lerna/validation-error": "5.1.4", "dedent": "^0.7.0", "fs-extra": "^9.1.0", "globby": "^11.0.2", @@ -2118,21 +2196,21 @@ "yargs-parser": "20.2.4" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/create-symlink": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-5.0.0.tgz", - "integrity": "sha512-nHYNacrh15Y0yEofVlUVu9dhf4JjIn9hY7v7rOUXzUeQ91iXY5Q3PVHkBeRUigyT5CWP5qozZwraCMwp+lDWYg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-5.1.4.tgz", + "integrity": "sha512-VTTuCgM5gXk0frAFxfVQqfX9QxXKz6TKpKsHcC39BAR3aiSUW8vqRImbLvaFtKpnEMW0HshDfuzp6rRkaiyWYw==", "dev": true, "dependencies": { "cmd-shim": "^4.1.0", "fs-extra": "^9.1.0", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/create/node_modules/yargs-parser": { @@ -2145,96 +2223,96 @@ } }, "node_modules/@lerna/describe-ref": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-5.0.0.tgz", - "integrity": "sha512-iLvMHp3nl4wcMR3/lVkz0ng7pAHfLQ7yvz2HsYBq7wllCcEzpchzPgyVzyvbpJ+Ke/MKjQTsrHE/yOGOH67GVw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-5.1.4.tgz", + "integrity": "sha512-ztLWLIyrHPxVhs8yfVpCDIw2st5c246KfoTqjEX8N6s8v0dLs3vfCKCM70ej6lBNkwqBXSilgHrd3AkGq3kq6Q==", "dev": true, "dependencies": { - "@lerna/child-process": "5.0.0", - "npmlog": "^4.1.2" + "@lerna/child-process": "5.1.4", + "npmlog": "^6.0.2" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-S4XJ6i9oP77cSmJ3oRUJGMgrI+jOTmkYWur2nqgSdyJBE1J2eClgTJknb3WAHg2cHALT18WzFqNghFOGM+9dRA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-5.1.4.tgz", + "integrity": "sha512-o5chvMHcKQS4zkdGX7LCaMgNn0flrG9OEiGt8DCIzRUa6aWJAlE2oZyOj+VsiUxzaZJxm2oV+GkISQYRJPlPug==", "dev": true, "dependencies": { - "@lerna/child-process": "5.0.0", - "@lerna/command": "5.0.0", - "@lerna/validation-error": "5.0.0", - "npmlog": "^4.1.2" + "@lerna/child-process": "5.1.4", + "@lerna/command": "5.1.4", + "@lerna/validation-error": "5.1.4", + "npmlog": "^6.0.2" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/exec": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-5.0.0.tgz", - "integrity": "sha512-g5i+2RclCGWLsl88m11j99YM2Gqnwa2lxZ5tDeqqWZFno6Dlvop17Yl6/MFH42EgM2DQHUUCammvcLIAJ2XwEA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-5.1.4.tgz", + "integrity": "sha512-6vn1UCxJZTTt90WlWItI05yj4xaNOShgIl5Yi9mx1Ex6nVS32mmTOqHI/+Cn4M+P0C4u1hFymd2aIEfWnmdUsA==", "dev": true, "dependencies": { - "@lerna/child-process": "5.0.0", - "@lerna/command": "5.0.0", - "@lerna/filter-options": "5.0.0", - "@lerna/profiler": "5.0.0", - "@lerna/run-topologically": "5.0.0", - "@lerna/validation-error": "5.0.0", + "@lerna/child-process": "5.1.4", + "@lerna/command": "5.1.4", + "@lerna/filter-options": "5.1.4", + "@lerna/profiler": "5.1.4", + "@lerna/run-topologically": "5.1.4", + "@lerna/validation-error": "5.1.4", "p-map": "^4.0.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/filter-options": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-5.0.0.tgz", - "integrity": "sha512-un73aYkXlzKlnDPx2AlqNW+ArCZ20XaX+Y6C0F+av9VZriiBsCgZTnflhih9fiSMnXjN5r9CA8YdWvZqa3oAcQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-5.1.4.tgz", + "integrity": "sha512-a6hLVZOb7awjI9Tk5hx90BB6GZz59npBRQN0kSG6drV1H+vi+wU7ee6OZ5EMHQgnzdZ6OjZQRHlWCCTXyNdKgQ==", "dev": true, "dependencies": { - "@lerna/collect-updates": "5.0.0", - "@lerna/filter-packages": "5.0.0", + "@lerna/collect-updates": "5.1.4", + "@lerna/filter-packages": "5.1.4", "dedent": "^0.7.0", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/filter-packages": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-5.0.0.tgz", - "integrity": "sha512-+EIjVVaMPDZ05F/gZa+kcXjBOLXqEamcEIDr+2ZXRgJmnrLx9BBY1B7sBEFHg7JXbeOKS+fKtMGVveV0SzgH3Q==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-5.1.4.tgz", + "integrity": "sha512-a+ThrgYyGrTfBZUMfi/WvcqX3Ce6JaMZjTYoNAmKpHYNZFRqdmgOT1fFLLF+/y62XGqCf0wo50xRYNg0hIAf3Q==", "dev": true, "dependencies": { - "@lerna/validation-error": "5.0.0", + "@lerna/validation-error": "5.1.4", "multimatch": "^5.0.0", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/get-npm-exec-opts": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.0.0.tgz", - "integrity": "sha512-ZOg3kc5FXYA1kVFD2hfJOl64hNASWD6panwD0HlyzXgfKKTDRm/P/qtAqS8WGCzQWgEdx4wvsDe/58Lzzh6QzQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.1.4.tgz", + "integrity": "sha512-A+cNgTWWQOcNGWz9wj40/NWK46v8TtTAmXuEPfzDruv6VdmXEVIuq7SCeUPj9+aRxMQXVCil0/Vyo2z6R9TDLw==", "dev": true, "dependencies": { - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/get-packed": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-5.0.0.tgz", - "integrity": "sha512-fks7Tg7DvcCZxRWPS3JAWVuLnwjPC/hLlNsdYmK9nN3+RtPhmYQgBjLSONcENw1E46t4Aph72lA9nLcYBLksqw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-5.1.4.tgz", + "integrity": "sha512-JD9U4Sp7Dpt3nUdXAo5f9SIXK2QsBaguChCZ8VTAl3eb7j0o7nrHYoh1eAa8rDT2L9+AxcUFDMi/wDdCotlJmA==", "dev": true, "dependencies": { "fs-extra": "^9.1.0", @@ -2242,295 +2320,295 @@ "tar": "^6.1.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/github-client": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-5.0.0.tgz", - "integrity": "sha512-NoEyRkQ8XgBnrjRfC9ph1npfg1/4OdYG+r8lG/1WkJbdt1Wlym4VNZU2BYPMWwSQYMJuppoEr0LL2uuVcS4ZUw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-5.1.4.tgz", + "integrity": "sha512-VAaH9ycnGVsaGWM5uRKvd0oXlOERHOEOwxXLaCnR1mA7k5490B5jTlwhSWYdA4s40CF9AOdIVNgBhP+T7MlcPw==", "dev": true, "dependencies": { - "@lerna/child-process": "5.0.0", + "@lerna/child-process": "5.1.4", "@octokit/plugin-enterprise-rest": "^6.0.1", "@octokit/rest": "^18.1.0", "git-url-parse": "^11.4.4", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/gitlab-client": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-5.0.0.tgz", - "integrity": "sha512-WREAT7qzta9hxNxktTX0x1/sEMpBP+4Gc00QSJYXt+ZzxY0t5RUx/ZK5pQl+IDhtkajrvXT6fSfZjMxxyE8hhQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-5.1.4.tgz", + "integrity": "sha512-F0Pa6Cv6TE0gbhuHR2gVVwdzstqePMZhTNcVY5So3YJrb1ppuUH/4cVXhRcEOj16QuWJ6yysxb7mj8tY4Zv0Bw==", "dev": true, "dependencies": { "node-fetch": "^2.6.1", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "whatwg-url": "^8.4.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/global-options": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-5.0.0.tgz", - "integrity": "sha512-PZYy/3mTZwtA9lNmHHRCc/Ty1W20qGJ/BdDIo4bw/Bk0AOcoBCLT9b3Mjijkl4AbC9+eSGk3flUYapCGVuS32Q==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-5.1.4.tgz", + "integrity": "sha512-gs6y97tomIuyYdDr9uKQ5B5AR9m6wVft6lrxWlGlLo0prz39tx7fJ9wT2IpJ9iALCadkQW6g7XFtddwfm5VRhg==", "dev": true, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/has-npm-version": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-5.0.0.tgz", - "integrity": "sha512-zJPgcml86nhJFJTpT+kjkcafuCFvK7PSq3oDC2KJxwB1bhlYwy+SKtAEypHSsHQ2DwP0YgPITcy1pvtHkie1SA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-5.1.4.tgz", + "integrity": "sha512-U81b1nvqwF8PGyHib8/AWeGbaNipGdqXZsRO5g3ob9A5X57GXJ86cQVLejLi+znY4SmQcHladC4TotJkpNF1Ag==", "dev": true, "dependencies": { - "@lerna/child-process": "5.0.0", + "@lerna/child-process": "5.1.4", "semver": "^7.3.4" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/import": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/import/-/import-5.0.0.tgz", - "integrity": "sha512-cD+Is7eV/I+ZU0Wlg+yAgKaZbOvfzA7kBj2Qu1HtxeLhc7joTR8PFW1gNjEsvrWOTiaHAtObbo1A+MKYQ/T12g==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/import/-/import-5.1.4.tgz", + "integrity": "sha512-Kswe1NKJDUDlO/gbkFcurzaYlaj/fXlapHTaih9LmQDiVPOE9GphD5qnABCV0c4CqeSnCzRujT5BUjjL5z7viA==", "dev": true, "dependencies": { - "@lerna/child-process": "5.0.0", - "@lerna/command": "5.0.0", - "@lerna/prompt": "5.0.0", - "@lerna/pulse-till-done": "5.0.0", - "@lerna/validation-error": "5.0.0", + "@lerna/child-process": "5.1.4", + "@lerna/command": "5.1.4", + "@lerna/prompt": "5.1.4", + "@lerna/pulse-till-done": "5.1.4", + "@lerna/validation-error": "5.1.4", "dedent": "^0.7.0", "fs-extra": "^9.1.0", "p-map-series": "^2.1.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/info/-/info-5.0.0.tgz", - "integrity": "sha512-k9TMK81apTjxxpnjfFOABKXndTtHBPgB8UO+I6zKhsfRqVb9FCz2MHOx8cQiSyolvNyGSQdSylSo4p7EBBomQQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/info/-/info-5.1.4.tgz", + "integrity": "sha512-9OMdNtmDMKLwfX+aZk9nHLfksYXuU7IcIiVJ9dR7gYx1PoKjXvTpd/+hd7t/tmElM21kmPVxQBu02L3KmXw+hQ==", "dev": true, "dependencies": { - "@lerna/command": "5.0.0", - "@lerna/output": "5.0.0", + "@lerna/command": "5.1.4", + "@lerna/output": "5.1.4", "envinfo": "^7.7.4" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/init": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/init/-/init-5.0.0.tgz", - "integrity": "sha512-2n68x7AIqVa+Vev9xF3NV9ba0C599KYf7JsIrQ5ESv4593ftInJpwgMwjroLT3X/Chi4BK7y2/xGmrfFVwgILg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/init/-/init-5.1.4.tgz", + "integrity": "sha512-OdI5iWYT1JcB6f5mjmCjgpkOrpDdSSDzmSi34kp/NP1FkbskDoMffVBTQiV8/h6zAg3jk1+aLQYLMuR5E6nIwA==", "dev": true, "dependencies": { - "@lerna/child-process": "5.0.0", - "@lerna/command": "5.0.0", + "@lerna/child-process": "5.1.4", + "@lerna/command": "5.1.4", "fs-extra": "^9.1.0", "p-map": "^4.0.0", "write-json-file": "^4.3.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/link": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/link/-/link-5.0.0.tgz", - "integrity": "sha512-00YxQ06TVhQJthOjcuxCCJRjkAM+qM/8Lv0ckdCzBBCSr4RdAGBp6QcAX/gjLNasgmNpyiza3ADet7mCH7uodw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/link/-/link-5.1.4.tgz", + "integrity": "sha512-j73MW+vam6e8XdwyQGeHR9X7TUmgvLG0wV1vDLjSyrhk/Q5oFo0RTRgfDJqR4tCtRnv0vujvw5oDXfSbBmg67g==", "dev": true, "dependencies": { - "@lerna/command": "5.0.0", - "@lerna/package-graph": "5.0.0", - "@lerna/symlink-dependencies": "5.0.0", + "@lerna/command": "5.1.4", + "@lerna/package-graph": "5.1.4", + "@lerna/symlink-dependencies": "5.1.4", "p-map": "^4.0.0", "slash": "^3.0.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/list": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/list/-/list-5.0.0.tgz", - "integrity": "sha512-+B0yFil2AFdiYO8hyU1bFbKXGBAUUQQ43/fp2XS2jBFCipLme4eTILL5gMKOhr2Xg9AsfYPXRMRer5VW7qTeeQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/list/-/list-5.1.4.tgz", + "integrity": "sha512-D7FAUik18s5FtHnBoPzodR8LUvH5b0a/ziV8ICaKWZ98H4w9qpNsQtBe0O+7DwUuqLKYpycst5tY5WVGnNwuNA==", "dev": true, "dependencies": { - "@lerna/command": "5.0.0", - "@lerna/filter-options": "5.0.0", - "@lerna/listable": "5.0.0", - "@lerna/output": "5.0.0" + "@lerna/command": "5.1.4", + "@lerna/filter-options": "5.1.4", + "@lerna/listable": "5.1.4", + "@lerna/output": "5.1.4" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/listable": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-5.0.0.tgz", - "integrity": "sha512-Rd5sE7KTbqA8u048qThH5IyBuJIwMcUnEObjFyJyKpc1SEWSumo4yAYmcEeN/9z62tcdud5wHYPSbVgfXJq37g==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-5.1.4.tgz", + "integrity": "sha512-grGLrffBNX38l5mzZgkv4xE9UcAAKBi1s+LgloI3rusgTdE/B8gvCOYMqLf9V08iojs7Ke2xPf0whJmbEeK/qA==", "dev": true, "dependencies": { - "@lerna/query-graph": "5.0.0", + "@lerna/query-graph": "5.1.4", "chalk": "^4.1.0", - "columnify": "^1.5.4" + "columnify": "^1.6.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/log-packed": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-5.0.0.tgz", - "integrity": "sha512-0TxKX+XnlEYj0du9U2kg3HEyIb/0QsM0Slt8utuCxALUnXRHTEKohjqVKsBdvh1QmJpnUbL5I+vfoYqno4Y42w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-5.1.4.tgz", + "integrity": "sha512-qJlWMVjc/uM1I7AWqrOPeBLVZy9YExi/QqUyvmkb8mmsPXnW7rxIJQdYgRifS5aFNTbX/MtG8Q65Rr4syiVnSA==", "dev": true, "dependencies": { "byte-size": "^7.0.0", - "columnify": "^1.5.4", + "columnify": "^1.6.0", "has-unicode": "^2.0.1", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/npm-conf": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-5.0.0.tgz", - "integrity": "sha512-KSftxtMNVhLol1JNwFFNgh5jiCG010pewM+uKeSrUe0BCB3lnidiEDzu2CCn8JYYfIXqAiou/pScUiOxVLpcAA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-5.1.4.tgz", + "integrity": "sha512-kNbw2jO0HD9P4+nS8RIFub549BiQYG/sdFUuNWu7cCjErB+g/5ayfE6Mn5HyiRPMYXVw73iR8IzvkCCDWEOB7Q==", "dev": true, "dependencies": { "config-chain": "^1.1.12", "pify": "^5.0.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/npm-dist-tag": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-5.0.0.tgz", - "integrity": "sha512-ccUFhp9Wu/FHW5/5fL+vLiSTcUZXtKQ7c0RMXtNRzIdTXBxPBkVi1k5QAnBAAffsz6Owc/K++cb+/zQ/asrG3g==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-5.1.4.tgz", + "integrity": "sha512-9q5N3iy8KGFBsyRBmNEftj8ACeCXNh2JUBqk/wYGiB0WH0oVf0UY/uo6VUy8dZjyJ9Q0eZa1ONtFHIg3QrzGDA==", "dev": true, "dependencies": { - "@lerna/otplease": "5.0.0", + "@lerna/otplease": "5.1.4", "npm-package-arg": "^8.1.0", "npm-registry-fetch": "^9.0.0", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/npm-install": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-5.0.0.tgz", - "integrity": "sha512-72Jf05JCIdeSBWXAiNjd/y2AQH4Ojgas55ojV2sAcEYz2wgyR7wSpiI6fHBRlRP+3XPjV9MXKxI3ZwOnznQxqQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-5.1.4.tgz", + "integrity": "sha512-DbbUK2Zy7ZBpkHimlFKf7XbGzBsoPfqzf0i9hIYBHmND9YWSgIgVFJcyRH7E6UKpr4wRChW4h6xEV81jKykB7w==", "dev": true, "dependencies": { - "@lerna/child-process": "5.0.0", - "@lerna/get-npm-exec-opts": "5.0.0", + "@lerna/child-process": "5.1.4", + "@lerna/get-npm-exec-opts": "5.1.4", "fs-extra": "^9.1.0", "npm-package-arg": "^8.1.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "signal-exit": "^3.0.3", "write-pkg": "^4.0.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/npm-publish": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-5.0.0.tgz", - "integrity": "sha512-jnapZ2jRajSzshSfd1Y3rHH5R7QC+JJlYST04FBebIH3VePwDT7uAglDCI4um2THvxkW4420EzE4BUMUwKlnXA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-5.1.4.tgz", + "integrity": "sha512-MXtd2cFN+oJMxj9m1fXYAo+KE2BzO84Ukt3uAhQb1cXU01ZCwqGl/lQRWw5vI88emrKs0akx3d6E77PFpX9rpw==", "dev": true, "dependencies": { - "@lerna/otplease": "5.0.0", - "@lerna/run-lifecycle": "5.0.0", + "@lerna/otplease": "5.1.4", + "@lerna/run-lifecycle": "5.1.4", "fs-extra": "^9.1.0", "libnpmpublish": "^4.0.0", "npm-package-arg": "^8.1.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "pify": "^5.0.0", "read-package-json": "^3.0.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/npm-run-script": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-5.0.0.tgz", - "integrity": "sha512-qgGf0Wc/E2YxPwIiF8kC/OB9ffPf0/HVtPVkqrblVuNE9XVP80WilOH966PIDiXzwXaCo/cTswFoBeseccYRGw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-5.1.4.tgz", + "integrity": "sha512-vw2G69lFmFzdX553GidE66QgCZ3cGyxoOvnpCdvZ1n9AS5ZwZSiL8Ms6N3Vj+AOhESFZmFZkzIVhtpX5/xNzLg==", "dev": true, "dependencies": { - "@lerna/child-process": "5.0.0", - "@lerna/get-npm-exec-opts": "5.0.0", - "npmlog": "^4.1.2" + "@lerna/child-process": "5.1.4", + "@lerna/get-npm-exec-opts": "5.1.4", + "npmlog": "^6.0.2" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/otplease": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-5.0.0.tgz", - "integrity": "sha512-QLLkEy1DPN1XFRAAZDHxAD26MHFQDHfzB6KKSzRYxbHc6lH/YbDaMH1RloSWIm7Hwkxl/3NgpokgN4Lj5XFuzg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-5.1.4.tgz", + "integrity": "sha512-t3qKC55D7rCacNTsqQwn25XxDRQXgRHYWS0gqn2ch+dTwXOI61Uto9okVhgn2ZfZVydJ3sjnktOsPeSXhQRQew==", "dev": true, "dependencies": { - "@lerna/prompt": "5.0.0" + "@lerna/prompt": "5.1.4" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/output": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/output/-/output-5.0.0.tgz", - "integrity": "sha512-/7sUJQWPcvnLudjVIdN7t9MlfBLuP4JCDAWgQMqZe+wpQRuKNyKQ5dLBH5NHU/ElJCjAwMPfWuk3mh3GuvuiGA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/output/-/output-5.1.4.tgz", + "integrity": "sha512-E9nLEcV5GJbTKJd/d+cvU54CIzQqoU2rJAeXeyHTufbjgCTPk4I8uDNHmG7uJ+aPrif6PPBt1IIw+w5UnStfdw==", "dev": true, "dependencies": { - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/pack-directory": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-5.0.0.tgz", - "integrity": "sha512-E1SNDS7xSWhJrTSmRzJK7DibneljrymviKcsZW3mRl4TmF4CpYJmNXCMlhEtKEy6ghnGQvnl3/4+eslHDJ5J/w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-5.1.4.tgz", + "integrity": "sha512-TsltQrbwC/bPwQbL5i7WCMNM4Chl8+iqzawRZbILfjYpt3UK9xSV2tWfc9QtbmRBETvcFz/UMKQQDz+LMWN9jw==", "dev": true, "dependencies": { - "@lerna/get-packed": "5.0.0", - "@lerna/package": "5.0.0", - "@lerna/run-lifecycle": "5.0.0", - "@lerna/temp-write": "5.0.0", + "@lerna/get-packed": "5.1.4", + "@lerna/package": "5.1.4", + "@lerna/run-lifecycle": "5.1.4", + "@lerna/temp-write": "5.1.4", "npm-packlist": "^2.1.4", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "tar": "^6.1.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/package": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/package/-/package-5.0.0.tgz", - "integrity": "sha512-/JiUU88bhbYEUTzPqoGLGwrrdWWTIVMlBb1OPxCGNGDEqYYNySX+OTTSs3zGMcmJnRNI0UyQALiEd0sh3JFN5w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/package/-/package-5.1.4.tgz", + "integrity": "sha512-L0zsxslJZ+swkG/KLU3TQHmWPR0hf0eLIdOROyA9Nxvuo8C/702ddYZcuEYcz9t/jOuSgSB2s90iK2oTIncNbw==", "dev": true, "dependencies": { "load-json-file": "^6.2.0", @@ -2538,72 +2616,72 @@ "write-pkg": "^4.0.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/package-graph": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-5.0.0.tgz", - "integrity": "sha512-Z3QeUQVjux0Blo64rA3/NivoLDlsQBjsZRIgGLbcQh7l7pJrqLK1WyNCBbPJ0KQNljQqUXthCKzdefnEWe37Ew==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-5.1.4.tgz", + "integrity": "sha512-dP1gLcrqou5/8zef7u5ne4GTslNXULjpi3dDiljohKNR4XelsC4lkkF9m1Uzn9E1nAphHRhWXrRq40kqxmdYXg==", "dev": true, "dependencies": { - "@lerna/prerelease-id-from-version": "5.0.0", - "@lerna/validation-error": "5.0.0", + "@lerna/prerelease-id-from-version": "5.1.4", + "@lerna/validation-error": "5.1.4", "npm-package-arg": "^8.1.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "semver": "^7.3.4" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/prerelease-id-from-version": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.0.0.tgz", - "integrity": "sha512-bUZwyx6evRn2RxogOQXaiYxRK1U/1Mh/KLO4n49wUhqb8S8Vb9aG3+7lLOgg4ZugHpj9KAlD3YGEKvwYQiWzhg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.1.4.tgz", + "integrity": "sha512-kDcXKKFD6Ww/FinLEvsY1P3aIiuVLyonkttvfKJTJvm3ymz7/fBKz8GotFXuONVC1xSIK9Nrk3jGYs6ZGoha+w==", "dev": true, "dependencies": { "semver": "^7.3.4" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/profiler": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-5.0.0.tgz", - "integrity": "sha512-hFX+ZtoH7BdDoGI+bqOYaSptJTFI58wNK9qq/pHwL5ksV7vOhxP2cQAuo1SjgBKHGl0Ex/9ZT080YVV4jP1ehw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-5.1.4.tgz", + "integrity": "sha512-JLkS90+CSmi85v3SlJc5Wjk73MHmIviqtL3fM/Z6clBLbsRPkbBBfSwXKp7O281knF6E2UNTrWOtEG7b6wG3TQ==", "dev": true, "dependencies": { "fs-extra": "^9.1.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "upath": "^2.0.1" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/project": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/project/-/project-5.0.0.tgz", - "integrity": "sha512-+izHk7D/Di2b0s69AzKzAa/qBz32H9s67oN9aKntrjNylpY7iN5opU157l60Kh4TprYHU5bLisqzFLZsHHADGw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/project/-/project-5.1.4.tgz", + "integrity": "sha512-k0z3w45t746uAUkN+jY/jF+/BqHodGFYaUfM0DTDOGUWC8tXzxuqk3bchShp6Wct2gwNQWbtWHl50Jhhw5PC5g==", "dev": true, "dependencies": { - "@lerna/package": "5.0.0", - "@lerna/validation-error": "5.0.0", + "@lerna/package": "5.1.4", + "@lerna/validation-error": "5.1.4", "cosmiconfig": "^7.0.0", "dedent": "^0.7.0", "dot-prop": "^6.0.1", "glob-parent": "^5.1.1", "globby": "^11.0.2", "load-json-file": "^6.2.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "p-map": "^4.0.0", "resolve-from": "^5.0.0", "write-json-file": "^4.3.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/project/node_modules/glob-parent": { @@ -2628,193 +2706,193 @@ } }, "node_modules/@lerna/prompt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-5.0.0.tgz", - "integrity": "sha512-cq2k04kOPY1yuJNHJn4qfBDDrCi9PF4Q228JICa6bxaONRf/C/TRsEQXHVIdlax8B3l53LnlGv5GECwRuvkQbA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-5.1.4.tgz", + "integrity": "sha512-AiE8NIzh+x2+F0t96M+rfwLtKzBNXjQEWXtBfEcA1eRqanMWUr6ejfmdkoEzXVrMzyY/ugPdWQYbGCI00iF7Tg==", "dev": true, "dependencies": { "inquirer": "^7.3.3", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/publish": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-5.0.0.tgz", - "integrity": "sha512-QEWFtN8fW1M+YXEQOWb2XBBCT137CrwHYK29ojMXW9HShvSZezf8Q/niH91nZ4kIhWdpOGz4w3rKopsumAM5SA==", - "dev": true, - "dependencies": { - "@lerna/check-working-tree": "5.0.0", - "@lerna/child-process": "5.0.0", - "@lerna/collect-updates": "5.0.0", - "@lerna/command": "5.0.0", - "@lerna/describe-ref": "5.0.0", - "@lerna/log-packed": "5.0.0", - "@lerna/npm-conf": "5.0.0", - "@lerna/npm-dist-tag": "5.0.0", - "@lerna/npm-publish": "5.0.0", - "@lerna/otplease": "5.0.0", - "@lerna/output": "5.0.0", - "@lerna/pack-directory": "5.0.0", - "@lerna/prerelease-id-from-version": "5.0.0", - "@lerna/prompt": "5.0.0", - "@lerna/pulse-till-done": "5.0.0", - "@lerna/run-lifecycle": "5.0.0", - "@lerna/run-topologically": "5.0.0", - "@lerna/validation-error": "5.0.0", - "@lerna/version": "5.0.0", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-5.1.4.tgz", + "integrity": "sha512-hbFAwOlyUR4AUBd7qTQXXVKgaxTS4Mz4Kkjxz8g7jtqo+T0KvU3JbfwDqxOiCwcDk+qkrBbkwbvc27jcObSwkw==", + "dev": true, + "dependencies": { + "@lerna/check-working-tree": "5.1.4", + "@lerna/child-process": "5.1.4", + "@lerna/collect-updates": "5.1.4", + "@lerna/command": "5.1.4", + "@lerna/describe-ref": "5.1.4", + "@lerna/log-packed": "5.1.4", + "@lerna/npm-conf": "5.1.4", + "@lerna/npm-dist-tag": "5.1.4", + "@lerna/npm-publish": "5.1.4", + "@lerna/otplease": "5.1.4", + "@lerna/output": "5.1.4", + "@lerna/pack-directory": "5.1.4", + "@lerna/prerelease-id-from-version": "5.1.4", + "@lerna/prompt": "5.1.4", + "@lerna/pulse-till-done": "5.1.4", + "@lerna/run-lifecycle": "5.1.4", + "@lerna/run-topologically": "5.1.4", + "@lerna/validation-error": "5.1.4", + "@lerna/version": "5.1.4", "fs-extra": "^9.1.0", "libnpmaccess": "^4.0.1", "npm-package-arg": "^8.1.0", "npm-registry-fetch": "^9.0.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "p-map": "^4.0.0", "p-pipe": "^3.1.0", "pacote": "^13.4.1", "semver": "^7.3.4" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/pulse-till-done": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-5.0.0.tgz", - "integrity": "sha512-qFeVybGIZbQSWKasWIzZmHsvCQMC/AwTz5B44a0zTt5eSNQuI65HRpKKUgmFFu/Jzd7u+yp7eP+NQ53gjOcQlQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-5.1.4.tgz", + "integrity": "sha512-zFPzv6cY0OcqtcR91ueZqd+ulTLE4vPk9l6iPAfefgqh6w0E6hSmG6J9RmYE3gaMHSFJdvYHb/yyTPLF32J9lg==", "dev": true, "dependencies": { - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/query-graph": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-5.0.0.tgz", - "integrity": "sha512-C/HXssBI8DVsZ/7IDW6JG9xhoHtWywi3L5oZB9q84MBYpQ9otUv6zbB+K4JCj7w9WHcuFWe2T/mc9wsaFuvB5g==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-5.1.4.tgz", + "integrity": "sha512-G8DYNqp5ISbbMjEJhGst1GHk59zO18IG9oaVSK14M7iF3qCLtg0iJ1Do4LDNpda3EF8PrLOx2mrNM5MBcGMjEg==", "dev": true, "dependencies": { - "@lerna/package-graph": "5.0.0" + "@lerna/package-graph": "5.1.4" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/resolve-symlink": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-5.0.0.tgz", - "integrity": "sha512-O1EMQh3O3nKjLyI2guCCaxmi9xzZXpiMZhrz2ki5ENEDB2N1+f7cZ2THT0lEOIkLRuADI6hrzoN1obJ+TTk+KQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-5.1.4.tgz", + "integrity": "sha512-hpnaX5tznAtbQXlyc92kJiywdTnnbCf6wihSZwDiVnVgXuHJ3LvmjN677h9A0jobY6KdTT+wIoAHpJuZHj60vQ==", "dev": true, "dependencies": { "fs-extra": "^9.1.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "read-cmd-shim": "^2.0.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/rimraf-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-5.0.0.tgz", - "integrity": "sha512-hWJg/13CiSUrWWEek3B/A1mkvBbcPvG5z69/Ugyerdpzlw44ubf02MAZ0/kXPJjkICI2hMrS07YotQ60LdYpCw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-5.1.4.tgz", + "integrity": "sha512-WvHm4gE1/HWbI4gCjJw3clPT+FRq2Ob9I9EDbfw4c307MNT4kW4bJU2mt0nyv/uwYhUkTG+GQVrlt+Dtcif77g==", "dev": true, "dependencies": { - "@lerna/child-process": "5.0.0", - "npmlog": "^4.1.2", + "@lerna/child-process": "5.1.4", + "npmlog": "^6.0.2", "path-exists": "^4.0.0", "rimraf": "^3.0.2" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/run": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/run/-/run-5.0.0.tgz", - "integrity": "sha512-8nBZstqKSO+7wHlKk1g+iexSYRVVNJq/u5ZbAzBiHNrABtqA6/0G7q9vsAEMsnPZ8ARAUYpwvbfKTipjpWH0VA==", - "dev": true, - "dependencies": { - "@lerna/command": "5.0.0", - "@lerna/filter-options": "5.0.0", - "@lerna/npm-run-script": "5.0.0", - "@lerna/output": "5.0.0", - "@lerna/profiler": "5.0.0", - "@lerna/run-topologically": "5.0.0", - "@lerna/timer": "5.0.0", - "@lerna/validation-error": "5.0.0", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/run/-/run-5.1.4.tgz", + "integrity": "sha512-iaTioOF66z02Y9ml/Ba0ePpXOwZ+BkODcNXrJbyW8WhraL0fSjyno0FspO1Eu0nG4JMtgCsoEzHNphsk7Wg+7A==", + "dev": true, + "dependencies": { + "@lerna/command": "5.1.4", + "@lerna/filter-options": "5.1.4", + "@lerna/npm-run-script": "5.1.4", + "@lerna/output": "5.1.4", + "@lerna/profiler": "5.1.4", + "@lerna/run-topologically": "5.1.4", + "@lerna/timer": "5.1.4", + "@lerna/validation-error": "5.1.4", "p-map": "^4.0.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/run-lifecycle": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-5.0.0.tgz", - "integrity": "sha512-36mAm9rC5DSliFShI0Y4ICjgrJXdIIVt7VW9rdbdJ8/XYjRHDzhGPB9Sc1neJOVlGL4DmaArvh5tGgo62KPJYQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-5.1.4.tgz", + "integrity": "sha512-ubmqi1ixebBHSTYS0oK8MoqBoJE7UDrXWTWsv84UrXiPutTffLR8ZQJKlMEcetQVzX9qbjpKbzc+jQWXPWid2A==", "dev": true, "dependencies": { - "@lerna/npm-conf": "5.0.0", + "@lerna/npm-conf": "5.1.4", "@npmcli/run-script": "^3.0.2", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/run-topologically": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-5.0.0.tgz", - "integrity": "sha512-B2s1N/+r3sfPOLRA2svNk+C52JpXQleMuGap0yhOx5mZzR1M2Lo4vpe9Ody4hCvXQjfdLx/U342fxVmgugUtfQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-5.1.4.tgz", + "integrity": "sha512-MckWfLu/xuRtaThdUgrJC2naumv2LOIiMoJfxCdYpiCrIgq5YrwqOxjQ0awHqQhkvFZ5G91ucBcBEIMsOou1iw==", "dev": true, "dependencies": { - "@lerna/query-graph": "5.0.0", + "@lerna/query-graph": "5.1.4", "p-queue": "^6.6.2" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/symlink-binary": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-5.0.0.tgz", - "integrity": "sha512-uYyiiNjkdL1tWf8MDXIIyCa/a2gmYaUxagqMgEZ4wRtOk+PDypDwMUFVop/EQtUWZqG5CAJBJYOztG3DdapTbA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-5.1.4.tgz", + "integrity": "sha512-SNjHxCNTCD0Xfj3CNBTG+3ut4aDAVaq+SrB2ckFNmZ5Z9yFdnX6aP+PBzLD/0q5hj18lGlaJ8iZjD/ubbrgFCA==", "dev": true, "dependencies": { - "@lerna/create-symlink": "5.0.0", - "@lerna/package": "5.0.0", + "@lerna/create-symlink": "5.1.4", + "@lerna/package": "5.1.4", "fs-extra": "^9.1.0", "p-map": "^4.0.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/symlink-dependencies": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-5.0.0.tgz", - "integrity": "sha512-wlZGOOB87XMy278hpF4fOwGNnjTXf1vJ/cFHIdKsJAiDipyhtnuCiJLBDPh4NzEGb02o4rhaqt8Nl5yWRu9CNA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-5.1.4.tgz", + "integrity": "sha512-SuzylyNs1R5bVRqSCwfbQLdDP83RX8ncQxOy2SSSrScwkzdBCDqDPh4haeADsq2+RoOQBItn1PDfzUCNAWomDA==", "dev": true, "dependencies": { - "@lerna/create-symlink": "5.0.0", - "@lerna/resolve-symlink": "5.0.0", - "@lerna/symlink-binary": "5.0.0", + "@lerna/create-symlink": "5.1.4", + "@lerna/resolve-symlink": "5.1.4", + "@lerna/symlink-binary": "5.1.4", "fs-extra": "^9.1.0", "p-map": "^4.0.0", "p-map-series": "^2.1.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/temp-write": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/temp-write/-/temp-write-5.0.0.tgz", - "integrity": "sha512-JOkRR6xyASuBy1udyS/VD52Wgywnz7cSKppD+QKIDseNzTq27I9mNmb702BSXNXIdD19lLVQ7q6WoAlpnelnZg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/temp-write/-/temp-write-5.1.4.tgz", + "integrity": "sha512-f+6+ud87pyitM9zAq7GBhB7uoHTcgLJvR3YGv5sNja4jIl3+zdKPDcyxzVyQb38knuRSkGM8NjYOWi4zwcMaGw==", "dev": true, "dependencies": { "graceful-fs": "^4.1.15", @@ -2825,51 +2903,51 @@ } }, "node_modules/@lerna/timer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-5.0.0.tgz", - "integrity": "sha512-p2vevkpB6V/b0aR8VyMLDfg0Arp9VvMxcZOEu+IfZ9XKTtnbwjWPHKUOS34x/VGa6bnOIWjE046ixWymOs/fTw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-5.1.4.tgz", + "integrity": "sha512-fhQtqkLxNexPWzhI1WAxZnHIBM8VhChvUJu503u1Rmp2JxhXbTE4Txnu1gPvqlDjdoE6ck0vN5icmfMVRwKc8g==", "dev": true, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/validation-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-5.0.0.tgz", - "integrity": "sha512-fu/MhqRXiRQM2cirP/HoSkfwc5XtJ21G60WHv74RnanKBqWEZAUALWa3MQN2sYhVV/FpDW3GLkO008IW5NWzdg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-5.1.4.tgz", + "integrity": "sha512-wys9Fv/bUy7sYXOK9t+V3XSyEHK5tUXwY22nfIDYu416WcSkkE4DI8Q2nTv4nYYOmG2Y7IOhaSenbsPLQ0VqtQ==", "dev": true, "dependencies": { - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/version": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/version/-/version-5.0.0.tgz", - "integrity": "sha512-M8KvdyG5kR/d3wgg5S46Q2YMf0L9iw9MiumTvlDP4ckysTt+04kS74Vp4+aClgPM4xaoI5OuMrs6wy5ICcd3Pw==", - "dev": true, - "dependencies": { - "@lerna/check-working-tree": "5.0.0", - "@lerna/child-process": "5.0.0", - "@lerna/collect-updates": "5.0.0", - "@lerna/command": "5.0.0", - "@lerna/conventional-commits": "5.0.0", - "@lerna/github-client": "5.0.0", - "@lerna/gitlab-client": "5.0.0", - "@lerna/output": "5.0.0", - "@lerna/prerelease-id-from-version": "5.0.0", - "@lerna/prompt": "5.0.0", - "@lerna/run-lifecycle": "5.0.0", - "@lerna/run-topologically": "5.0.0", - "@lerna/temp-write": "5.0.0", - "@lerna/validation-error": "5.0.0", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/version/-/version-5.1.4.tgz", + "integrity": "sha512-cYgm1SNdiK129JoWI8WMwjsxaIyeAC1gCaToWk36Tw+BCF3PbkdoTKdneDmJ+7qbX1QrzxsgHTcjwIt4lZPEqQ==", + "dev": true, + "dependencies": { + "@lerna/check-working-tree": "5.1.4", + "@lerna/child-process": "5.1.4", + "@lerna/collect-updates": "5.1.4", + "@lerna/command": "5.1.4", + "@lerna/conventional-commits": "5.1.4", + "@lerna/github-client": "5.1.4", + "@lerna/gitlab-client": "5.1.4", + "@lerna/output": "5.1.4", + "@lerna/prerelease-id-from-version": "5.1.4", + "@lerna/prompt": "5.1.4", + "@lerna/run-lifecycle": "5.1.4", + "@lerna/run-topologically": "5.1.4", + "@lerna/temp-write": "5.1.4", + "@lerna/validation-error": "5.1.4", "chalk": "^4.1.0", "dedent": "^0.7.0", "load-json-file": "^6.2.0", "minimatch": "^3.0.4", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "p-map": "^4.0.0", "p-pipe": "^3.1.0", "p-reduce": "^2.1.0", @@ -2879,20 +2957,81 @@ "write-json-file": "^4.3.0" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/write-log-file": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-5.0.0.tgz", - "integrity": "sha512-kpPNxe9xm36QbCWY7DwO96Na6FpCHzZinJtw6ttBHslIcdR38lZuCp+/2KfJcVsRIPNOsp1VvgP7EZIKiBhgjw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-5.1.4.tgz", + "integrity": "sha512-ISJbkjaSKhJ4d7V90RFvuwDQFq9ZH/KN475KFJr+TBFZTwMiXuBahlq+j8/a+nItejNnuPD4/xlWuzCOuGJORQ==", "dev": true, "dependencies": { - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "write-file-atomic": "^3.0.3" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", + "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" } }, "node_modules/@nodelib/fs.scandir": { @@ -2987,19 +3126,6 @@ "node": ">= 10" } }, - "node_modules/@npmcli/arborist/node_modules/are-we-there-yet": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", - "dev": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, "node_modules/@npmcli/arborist/node_modules/builtins": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", @@ -3009,25 +3135,6 @@ "semver": "^7.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "dev": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/@npmcli/arborist/node_modules/hosted-git-info": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", @@ -3054,19 +3161,10 @@ "node": ">= 6" } }, - "node_modules/@npmcli/arborist/node_modules/lru-cache": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", - "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/@npmcli/arborist/node_modules/make-fetch-happen": { - "version": "10.1.7", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.7.tgz", - "integrity": "sha512-J/2xa2+7zlIUKqfyXDCXFpH3ypxO4k3rgkZHPSZkyUYcBT/hM80M3oyKLM/9dVriZFiGeGGS2Ei+0v2zfhqj3Q==", + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz", + "integrity": "sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==", "dev": true, "dependencies": { "agentkeepalive": "^4.2.1", @@ -3139,21 +3237,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "dev": true, - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/@npmcli/arborist/node_modules/socks-proxy-agent": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", @@ -3231,15 +3314,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", - "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/@npmcli/installed-package-contents": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", @@ -3280,25 +3354,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/@npmcli/map-workspaces/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", @@ -3440,9 +3495,9 @@ } }, "node_modules/@octokit/openapi-types": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", - "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.4.0.tgz", + "integrity": "sha512-Npcb7Pv30b33U04jvcD7l75yLU0mxhuX2Xqrn51YyZ5WTkF04bpbxLaZ6GcaTqu03WZQHoO/Gbfp95NGRueDUA==", "dev": true }, "node_modules/@octokit/plugin-enterprise-rest": { @@ -3452,12 +3507,12 @@ "dev": true }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", - "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.19.0.tgz", + "integrity": "sha512-hQ4Qysg2hNmEMuZeJkvyzM4eSZiTifOKqYAMsW8FnxFKowhuwWICSgBQ9Gn9GpUmgKB7qaf1hFvMjYaTAg5jQA==", "dev": true, "dependencies": { - "@octokit/types": "^6.34.0" + "@octokit/types": "^6.36.0" }, "peerDependencies": { "@octokit/core": ">=2" @@ -3473,12 +3528,12 @@ } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", - "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.15.0.tgz", + "integrity": "sha512-Gsw9+Xm56jVhfbJoy4pt6eOOyf8/3K6CAnx1Sl7U2GhZWcg8MR6YgXWnpfdF69S2ViMXLA7nfvTDAsZpFlkLRw==", "dev": true, "dependencies": { - "@octokit/types": "^6.34.0", + "@octokit/types": "^6.36.0", "deprecation": "^2.3.1" }, "peerDependencies": { @@ -3523,12 +3578,12 @@ } }, "node_modules/@octokit/types": { - "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", - "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "version": "6.37.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.37.0.tgz", + "integrity": "sha512-BXWQhFKRkjX4dVW5L2oYa0hzWOAqsEsujXsQLSdepPoDZfYdubrD1KDGpyNldGXtR8QM/WezDcxcIN1UKJMGPA==", "dev": true, "dependencies": { - "@octokit/openapi-types": "^11.2.0" + "@octokit/openapi-types": "^12.4.0" } }, "node_modules/@sindresorhus/is": { @@ -3561,30 +3616,30 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 6" } }, "node_modules/@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==" + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" }, "node_modules/@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==" + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" }, "node_modules/@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" }, "node_modules/@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==" }, "node_modules/@types/accepts": { "version": "1.3.5", @@ -3672,9 +3727,9 @@ "integrity": "sha512-iO2Q6xQOJ5DtOB6wJ2KIetFq9JRTbpzcKTe2aS6CCsa+W9KNWX2yXx9KeB5sY/nBfAWN43LkPg6SFB+ldsW9ZA==" }, "node_modules/@types/eslint": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", - "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz", + "integrity": "sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -3706,9 +3761,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "version": "4.17.29", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", + "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -3733,6 +3788,15 @@ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==" }, + "node_modules/@types/inquirer": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.1.tgz", + "integrity": "sha512-wKW3SKIUMmltbykg4I5JzCVzUhkuD9trD6efAmYgN2MrSntY0SMRQzEnD3mkyJ/rv9NLbTC7g3hKKE86YwEDLw==", + "dependencies": { + "@types/through": "*", + "rxjs": "^7.2.0" + } + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -3833,14 +3897,14 @@ } }, "node_modules/@types/node": { - "version": "17.0.40", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.40.tgz", - "integrity": "sha512-UXdBxNGqTMtm7hCwh9HtncFVLrXoqA3oJW30j6XWp5BH/wu3mVeaxo7cq5benFdBw34HB3XDT2TRPI7rXZ+mDg==" + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" }, "node_modules/@types/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", "dependencies": { "@types/node": "*", "form-data": "^3.0.0" @@ -3858,6 +3922,11 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "node_modules/@types/prettier": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz", + "integrity": "sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==" + }, "node_modules/@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -3886,6 +3955,14 @@ "@types/node": "*" } }, + "node_modules/@types/through": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", + "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/tmp": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.3.tgz", @@ -3910,15 +3987,28 @@ "@types/webidl-conversions": "*" } }, + "node_modules/@types/yargs": { + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.10.tgz", + "integrity": "sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" + }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.27.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.27.1.tgz", - "integrity": "sha512-6dM5NKT57ZduNnJfpY81Phe9nc9wolnMCnknb1im6brWi1RYv84nbMS3olJa27B6+irUVV1X/Wb+Am0FjJdGFw==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.29.0.tgz", + "integrity": "sha512-kgTsISt9pM53yRFQmLZ4npj99yGl3x3Pl7z4eA66OuTzAGC4bQB5H5fuLwPnqTKU3yyrrg4MIhjF17UYnL4c0w==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.27.1", - "@typescript-eslint/type-utils": "5.27.1", - "@typescript-eslint/utils": "5.27.1", + "@typescript-eslint/scope-manager": "5.29.0", + "@typescript-eslint/type-utils": "5.29.0", + "@typescript-eslint/utils": "5.29.0", "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", @@ -3944,14 +4034,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.27.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.27.1.tgz", - "integrity": "sha512-7Va2ZOkHi5NP+AZwb5ReLgNF6nWLGTeUJfxdkVUAPPSaAdbWNnFZzLZ4EGGmmiCTg+AwlbE1KyUYTBglosSLHQ==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.29.0.tgz", + "integrity": "sha512-ruKWTv+x0OOxbzIw9nW5oWlUopvP/IQDjB5ZqmTglLIoDTctLlAJpAQFpNPJP/ZI7hTT9sARBosEfaKbcFuECw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.27.1", - "@typescript-eslint/types": "5.27.1", - "@typescript-eslint/typescript-estree": "5.27.1", + "@typescript-eslint/scope-manager": "5.29.0", + "@typescript-eslint/types": "5.29.0", + "@typescript-eslint/typescript-estree": "5.29.0", "debug": "^4.3.4" }, "engines": { @@ -3971,13 +4061,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.27.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.27.1.tgz", - "integrity": "sha512-fQEOSa/QroWE6fAEg+bJxtRZJTH8NTskggybogHt4H9Da8zd4cJji76gA5SBlR0MgtwF7rebxTbDKB49YUCpAg==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.29.0.tgz", + "integrity": "sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.27.1", - "@typescript-eslint/visitor-keys": "5.27.1" + "@typescript-eslint/types": "5.29.0", + "@typescript-eslint/visitor-keys": "5.29.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3988,12 +4078,12 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.27.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.27.1.tgz", - "integrity": "sha512-+UC1vVUWaDHRnC2cQrCJ4QtVjpjjCgjNFpg8b03nERmkHv9JV9X5M19D7UFMd+/G7T/sgFwX2pGmWK38rqyvXw==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.29.0.tgz", + "integrity": "sha512-JK6bAaaiJozbox3K220VRfCzLa9n0ib/J+FHIwnaV3Enw/TO267qe0pM1b1QrrEuy6xun374XEAsRlA86JJnyg==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.27.1", + "@typescript-eslint/utils": "5.29.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -4014,9 +4104,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.27.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.27.1.tgz", - "integrity": "sha512-LgogNVkBhCTZU/m8XgEYIWICD6m4dmEDbKXESCbqOXfKZxRKeqpiJXQIErv66sdopRKZPo5l32ymNqibYEH/xg==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.29.0.tgz", + "integrity": "sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4027,13 +4117,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.27.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.27.1.tgz", - "integrity": "sha512-DnZvvq3TAJ5ke+hk0LklvxwYsnXpRdqUY5gaVS0D4raKtbznPz71UJGnPTHEFo0GDxqLOLdMkkmVZjSpET1hFw==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.29.0.tgz", + "integrity": "sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.27.1", - "@typescript-eslint/visitor-keys": "5.27.1", + "@typescript-eslint/types": "5.29.0", + "@typescript-eslint/visitor-keys": "5.29.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4054,15 +4144,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.27.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.27.1.tgz", - "integrity": "sha512-mZ9WEn1ZLDaVrhRaYgzbkXBkTPghPFsup8zDbbsYTxC5OmqrFE7skkKS/sraVsLP3TcT3Ki5CSyEFBRkLH/H/w==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.29.0.tgz", + "integrity": "sha512-3Eos6uP1nyLOBayc/VUdKZikV90HahXE5Dx9L5YlSd/7ylQPXhLk1BYb29SDgnBnTp+jmSZUU0QxUiyHgW4p7A==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.27.1", - "@typescript-eslint/types": "5.27.1", - "@typescript-eslint/typescript-estree": "5.27.1", + "@typescript-eslint/scope-manager": "5.29.0", + "@typescript-eslint/types": "5.29.0", + "@typescript-eslint/typescript-estree": "5.29.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -4078,12 +4168,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.27.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.27.1.tgz", - "integrity": "sha512-xYs6ffo01nhdJgPieyk7HAOpjhTsx7r/oB9LWEhwAXgwn33tkr+W8DI2ChboqhZlC4q3TC6geDYPoiX8ROqyOQ==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.29.0.tgz", + "integrity": "sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.27.1", + "@typescript-eslint/types": "5.29.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -4231,18 +4321,18 @@ } }, "node_modules/@webpack-cli/configtest": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", - "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", "peerDependencies": { "webpack": "4.x.x || 5.x.x", "webpack-cli": "4.x.x" } }, "node_modules/@webpack-cli/info": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", - "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", "dependencies": { "envinfo": "^7.7.3" }, @@ -4251,9 +4341,9 @@ } }, "node_modules/@webpack-cli/serve": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", - "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", "peerDependencies": { "webpack-cli": "4.x.x" }, @@ -4276,8 +4366,7 @@ "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "node_modules/accepts": { "version": "1.3.8", @@ -4347,7 +4436,7 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "dev": true, + "devOptional": true, "dependencies": { "debug": "^4.1.0", "depd": "^1.1.2", @@ -4361,7 +4450,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, + "devOptional": true, "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -4446,7 +4535,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, "dependencies": { "type-fest": "^0.21.3" }, @@ -4461,7 +4549,6 @@ "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, "engines": { "node": ">=10" }, @@ -4516,47 +4603,19 @@ "node_modules/aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" }, "node_modules/are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "devOptional": true, "dependencies": { "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/are-we-there-yet/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/are-we-there-yet/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/are-we-there-yet/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" } }, "node_modules/arg": { @@ -4672,7 +4731,7 @@ "node_modules/assert/node_modules/util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", "dependencies": { "inherits": "2.0.1" } @@ -4686,9 +4745,9 @@ } }, "node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, "node_modules/async-limiter": { "version": "1.0.1", @@ -4801,7 +4860,7 @@ "node_modules/babel-code-frame/node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -4812,7 +4871,7 @@ "node_modules/babel-code-frame/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "engines": { "node": ">=0.8.0" } @@ -4867,7 +4926,7 @@ "node_modules/babel-core/node_modules/slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", "engines": { "node": ">=0.10.0" } @@ -4875,7 +4934,7 @@ "node_modules/babel-core/node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "engines": { "node": ">=0.10.0" } @@ -4917,7 +4976,7 @@ "node_modules/babel-generator/node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "engines": { "node": ">=0.10.0" } @@ -5304,7 +5363,7 @@ "node_modules/babel-plugin-istanbul/node_modules/read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", "dependencies": { "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", @@ -5317,7 +5376,7 @@ "node_modules/babel-plugin-istanbul/node_modules/read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", "dependencies": { "find-up": "^1.0.0", "read-pkg": "^1.0.0" @@ -5360,7 +5419,7 @@ "node_modules/babel-plugin-istanbul/node_modules/strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", "dependencies": { "is-utf8": "^0.2.0" }, @@ -5677,7 +5736,7 @@ "node_modules/babel-plugin-transform-es2015-unicode-regex/node_modules/regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "integrity": "sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ==", "dependencies": { "regenerate": "^1.2.1", "regjsgen": "^0.2.0", @@ -5687,12 +5746,12 @@ "node_modules/babel-plugin-transform-es2015-unicode-regex/node_modules/regjsgen": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" + "integrity": "sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g==" }, "node_modules/babel-plugin-transform-es2015-unicode-regex/node_modules/regjsparser": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "integrity": "sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw==", "dependencies": { "jsesc": "~0.5.0" }, @@ -5832,7 +5891,7 @@ "node_modules/babel-register/node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "engines": { "node": ">=0.10.0" } @@ -5922,7 +5981,7 @@ "node_modules/babel-types/node_modules/to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", "engines": { "node": ">=0.10.0" } @@ -6064,7 +6123,7 @@ "node_modules/bl/node_modules/readable-stream": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -6075,7 +6134,7 @@ "node_modules/bl/node_modules/string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" }, "node_modules/bluebird": { "version": "3.7.2", @@ -6132,6 +6191,20 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/boxen": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", @@ -6166,6 +6239,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/boxen/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -6203,9 +6288,9 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" }, "node_modules/browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "version": "4.20.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz", + "integrity": "sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==", "funding": [ { "type": "opencollective", @@ -6217,10 +6302,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", + "caniuse-lite": "^1.0.30001349", + "electron-to-chromium": "^1.4.147", "escalade": "^3.1.1", - "node-releases": "^2.0.3", + "node-releases": "^2.0.5", "picocolors": "^1.0.0" }, "bin": { @@ -6360,55 +6445,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/cacache/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", - "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/cacache/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/cacache/node_modules/ssri": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", @@ -6531,9 +6567,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001346", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001346.tgz", - "integrity": "sha512-q6ibZUO2t88QCIPayP/euuDREq+aMAxFE5S70PkrLh0iTDj/zEhgvJRKC2+CvXY6EWc6oQwUR48lL5vCW6jiXQ==", + "version": "1.0.30001357", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001357.tgz", + "integrity": "sha512-b+KbWHdHePp+ZpNj+RDHFChZmuN+J5EvuQUlee9jOQIUAdhv9uvAZeEtUeLAknXbkiu1uxjQ9NLp1ie894CuWg==", "funding": [ { "type": "opencollective", @@ -6596,8 +6632,7 @@ "node_modules/chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, "node_modules/chokidar": { "version": "3.5.3", @@ -6640,7 +6675,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, "engines": { "node": ">=10" } @@ -6669,7 +6703,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, + "devOptional": true, "engines": { "node": ">=6" } @@ -6690,7 +6724,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, "dependencies": { "restore-cursor": "^3.1.0" }, @@ -6698,6 +6731,17 @@ "node": ">=8" } }, + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cli-table": { "version": "0.3.11", "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", @@ -6714,7 +6758,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, "engines": { "node": ">= 10" } @@ -6733,7 +6776,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, "engines": { "node": ">=0.8" } @@ -6803,15 +6845,6 @@ "type-is": "^1.6.16" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -6832,15 +6865,14 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true, "bin": { "color-support": "bin.js" } }, "node_modules/colorette": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.17.tgz", - "integrity": "sha512-hJo+3Bkn0NCHybn9Tu35fIeoOKGOk5OCC32y4Hz2It+qlCO2Q3DeQ1hRn/tDDMQKRYUEzqsl7jbF6dYKjlE60g==" + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" }, "node_modules/colors": { "version": "1.0.3", @@ -6879,7 +6911,6 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", - "dev": true, "engines": { "node": "^12.20.0 || >=14" } @@ -7003,8 +7034,7 @@ "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, "node_modules/content-disposition": { "version": "0.5.4", @@ -7223,11 +7253,11 @@ "hasInstallScript": true }, "node_modules/core-js-compat": { - "version": "3.22.8", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.8.tgz", - "integrity": "sha512-pQnwg4xtuvc2Bs/5zYQPaEYYSuTxsF7LBWF0SvnVhthZo/Qe+rJpcEekrdNK5DWwDJ0gv0oI9NNX5Mppdy0ctg==", + "version": "3.23.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.2.tgz", + "integrity": "sha512-lrgZvxFwbQp9v7E8mX0rJ+JX7Bvh4eGULZXA1IAyjlsnWvCdw6TF8Tg6xtaSUSJMrSrMaLdpmk+V54LM1dvfOA==", "dependencies": { - "browserslist": "^4.20.3", + "browserslist": "^4.20.4", "semver": "7.0.0" }, "funding": { @@ -7244,9 +7274,9 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "node_modules/cors": { "version": "2.8.5", @@ -7417,7 +7447,7 @@ "node_modules/deep-eql/node_modules/type-detect": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", + "integrity": "sha512-5rqszGVwYgBoDkIm2oUtvkfZMQ0vk29iDMU0W2qCa3rG0vPDNczCMT4hV/bLBgLg8k8ri6+u3Zbt+S/14eMzlA==", "engines": { "node": "*" } @@ -7445,7 +7475,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", - "dev": true, "dependencies": { "clone": "^1.0.2" } @@ -7519,7 +7548,7 @@ "node_modules/deresolve/node_modules/resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==", "engines": { "node": ">=0.10.0" } @@ -7542,6 +7571,14 @@ "node": ">=8" } }, + "node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "engines": { + "node": ">=8" + } + }, "node_modules/dezalgo": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", @@ -7592,7 +7629,7 @@ "node_modules/dissolve/node_modules/readable-stream": { "version": "1.1.14", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -7603,7 +7640,7 @@ "node_modules/dissolve/node_modules/string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" }, "node_modules/doctrine": { "version": "3.0.0", @@ -7658,9 +7695,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.146", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.146.tgz", - "integrity": "sha512-4eWebzDLd+hYLm4csbyMU2EbBnqhwl8Oe9eF/7CBDPWcRxFmqzx4izxvHH+lofQxzieg8UbB8ZuzNTxeukzfTg==" + "version": "1.4.163", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.163.tgz", + "integrity": "sha512-c9q94pUVqIdc8hyr7jZDB4bNEoNF3QJ7y35lnddMD+mXtiv5GsL1bT/RmfW/KEOmvlNg5Oy1qioiy4tA7e864Q==" }, "node_modules/elliptic": { "version": "6.5.4", @@ -7831,7 +7868,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, + "devOptional": true, "engines": { "node": ">=6" } @@ -7851,7 +7888,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true + "devOptional": true }, "node_modules/error-ex": { "version": "1.3.2", @@ -7862,9 +7899,9 @@ } }, "node_modules/error-stack-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.3.tgz", - "integrity": "sha512-F9KypcaAvLzI4yXneZzOvzZoqakhbjuAGFK0aLy33tYaDqdu6v+lzrN/TTG/mM48Op624zZZ2RpXRx3wA0+zmg==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", "dependencies": { "stackframe": "^1.3.4" } @@ -7980,7 +8017,7 @@ "node_modules/escodegen/node_modules/type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dependencies": { "prelude-ls": "~1.1.2" }, @@ -7989,9 +8026,9 @@ } }, "node_modules/eslint": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.17.0.tgz", - "integrity": "sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.18.0.tgz", + "integrity": "sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==", "dev": true, "dependencies": { "@eslint/eslintrc": "^1.3.0", @@ -8165,6 +8202,14 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "engines": { + "node": ">=6" + } + }, "node_modules/espree": { "version": "9.3.2", "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", @@ -8281,6 +8326,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -8478,6 +8524,20 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/express/node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -8487,7 +8547,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -8681,7 +8740,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -8696,7 +8754,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, "engines": { "node": ">=0.8.0" } @@ -8976,7 +9033,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -9022,72 +9078,22 @@ "dev": true }, "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", - "dev": true, - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/gauge/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "node_modules/gauge/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "devOptional": true, "dependencies": { - "ansi-regex": "^2.0.0" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" }, "engines": { - "node": ">=0.10.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/gensync": { @@ -9107,18 +9113,26 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/get-pkg-repo": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", @@ -9204,6 +9218,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, "engines": { "node": ">=10" }, @@ -9211,6 +9226,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/getopts": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz", + "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==" + }, "node_modules/git-raw-commits": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", @@ -9306,19 +9326,19 @@ } }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -9380,6 +9400,27 @@ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/global-dirs": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", @@ -9419,6 +9460,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -9632,8 +9685,7 @@ "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, "node_modules/has-yarn": { "version": "2.1.0", @@ -9705,6 +9757,18 @@ "node": ">=10" } }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -9750,7 +9814,7 @@ "node_modules/http-assert/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "engines": { "node": ">= 0.6" } @@ -9759,7 +9823,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true + "devOptional": true }, "node_modules/http-errors": { "version": "2.0.0", @@ -9788,7 +9852,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, + "devOptional": true, "dependencies": { "@tootallnate/once": "1", "agent-base": "6", @@ -9814,6 +9878,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, "engines": { "node": ">=10.17.0" } @@ -9822,7 +9887,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "dev": true, + "devOptional": true, "dependencies": { "ms": "^2.0.0" } @@ -9932,7 +9997,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.8.19" } @@ -9941,7 +10006,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, + "devOptional": true, "engines": { "node": ">=8" } @@ -9950,7 +10015,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true + "devOptional": true }, "node_modules/inflation": { "version": "2.0.0", @@ -9998,6 +10063,26 @@ "node": ">=10" } }, + "node_modules/init-package-json/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/init-package-json/node_modules/read-package-json": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.2.tgz", @@ -10050,9 +10135,9 @@ } }, "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "engines": { "node": ">= 0.10" } @@ -10229,11 +10314,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true + "devOptional": true }, "node_modules/is-npm": { "version": "5.0.0", @@ -10331,6 +10424,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, "engines": { "node": ">=8" }, @@ -10794,6 +10888,64 @@ "node": ">=6" } }, + "node_modules/knex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/knex/-/knex-2.1.0.tgz", + "integrity": "sha512-vVsnD6UJdSJy55TvCXfFF9syfwyXNxfE9mvr2hJL/4Obciy2EPGoqjDpgRSlMruHuPWDOeYAG25nyrGvU+jJog==", + "dependencies": { + "colorette": "2.0.16", + "commander": "^9.1.0", + "debug": "4.3.4", + "escalade": "^3.1.1", + "esm": "^3.2.25", + "get-package-type": "^0.1.0", + "getopts": "2.3.0", + "interpret": "^2.2.0", + "lodash": "^4.17.21", + "pg-connection-string": "2.5.0", + "rechoir": "^0.8.0", + "resolve-from": "^5.0.0", + "tarn": "^3.0.2", + "tildify": "2.0.0" + }, + "bin": { + "knex": "bin/cli.js" + }, + "engines": { + "node": ">=12" + }, + "peerDependenciesMeta": { + "better-sqlite3": { + "optional": true + }, + "mysql": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-native": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "tedious": { + "optional": true + } + } + }, + "node_modules/knex/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "engines": { + "node": ">=8" + } + }, "node_modules/koa": { "version": "2.13.4", "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz", @@ -10902,7 +11054,7 @@ "node_modules/koa/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "engines": { "node": ">= 0.6" } @@ -10959,7 +11111,7 @@ "node_modules/lasso-babel-transform/node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "engines": { "node": ">=0.10.0" } @@ -11040,7 +11192,7 @@ "node_modules/lasso-minify-js/node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "engines": { "node": ">=0.10.0" } @@ -11048,7 +11200,7 @@ "node_modules/lasso-minify-js/node_modules/uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "integrity": "sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w==", "dependencies": { "source-map": "~0.5.1", "yargs": "~3.10.0" @@ -11066,7 +11218,7 @@ "node_modules/lasso-minify-js/node_modules/wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "integrity": "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==", "engines": { "node": ">=0.4.0" } @@ -11074,7 +11226,7 @@ "node_modules/lasso-minify-js/node_modules/yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "integrity": "sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A==", "dependencies": { "camelcase": "^1.0.2", "cliui": "^2.1.0", @@ -11187,7 +11339,7 @@ "node_modules/lasso-resolve-from/node_modules/resolve-from": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "integrity": "sha512-qpFcKaXsq8+oRoLilkwyc7zHGF5i9Q2/25NIgLQQ/+VVv9rU4qvr6nXVAw1DsnXJyQkZsR4Ytfbtg5ehfcUssQ==", "engines": { "node": ">=0.10.0" } @@ -11226,6 +11378,25 @@ "node": ">= 0.6" } }, + "node_modules/lasso/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/lasso/node_modules/http-errors": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", @@ -11284,7 +11455,7 @@ "node_modules/lasso/node_modules/resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==", "engines": { "node": ">=0.10.0" } @@ -11292,7 +11463,7 @@ "node_modules/lasso/node_modules/send": { "version": "0.13.2", "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", - "integrity": "sha1-dl52B8gFVFK7pvCwUllTUJhgNt4=", + "integrity": "sha512-cQ0rmXHrdO2Iof08igV2bG/yXWD106ANwBg6DkGQNT2Vsznbgq6T0oAIQboy1GoFsIuy51jCim26aA9tj3Z3Zg==", "dependencies": { "debug": "~2.2.0", "depd": "~1.1.0", @@ -11314,12 +11485,12 @@ "node_modules/lasso/node_modules/statuses": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", - "integrity": "sha1-3e1FzBglbVHtQK7BQkidXGECbSg=" + "integrity": "sha512-pVEuxHdSGrt8QmQ3LOZXLhSA6MP/iPqKzZeO6Squ7PNGkA/9MBsSfV0/L+bIxkoDmjF4tZcLpcVq/fkqoHvuKg==" }, "node_modules/lasso/node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "engines": { "node": ">=0.10.0" } @@ -11345,35 +11516,35 @@ } }, "node_modules/lerna": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/lerna/-/lerna-5.0.0.tgz", - "integrity": "sha512-dUYmJ7H9k/xHtwKpQWLTNUa1jnFUiW4o4K2LFkRchlIijoIUT4yK/RprIxNvYCrLrEaOdZryvY5UZvSHI2tBxA==", - "dev": true, - "dependencies": { - "@lerna/add": "5.0.0", - "@lerna/bootstrap": "5.0.0", - "@lerna/changed": "5.0.0", - "@lerna/clean": "5.0.0", - "@lerna/cli": "5.0.0", - "@lerna/create": "5.0.0", - "@lerna/diff": "5.0.0", - "@lerna/exec": "5.0.0", - "@lerna/import": "5.0.0", - "@lerna/info": "5.0.0", - "@lerna/init": "5.0.0", - "@lerna/link": "5.0.0", - "@lerna/list": "5.0.0", - "@lerna/publish": "5.0.0", - "@lerna/run": "5.0.0", - "@lerna/version": "5.0.0", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-5.1.4.tgz", + "integrity": "sha512-WwSbMslPxWSV7ARsGzkhJAFC1uQcuNGgiy2vZho4bpXVC+A7ZLXy8FngDbcAn7hCGC3ZDnl/4jdY6d84j63Y4g==", + "dev": true, + "dependencies": { + "@lerna/add": "5.1.4", + "@lerna/bootstrap": "5.1.4", + "@lerna/changed": "5.1.4", + "@lerna/clean": "5.1.4", + "@lerna/cli": "5.1.4", + "@lerna/create": "5.1.4", + "@lerna/diff": "5.1.4", + "@lerna/exec": "5.1.4", + "@lerna/import": "5.1.4", + "@lerna/info": "5.1.4", + "@lerna/init": "5.1.4", + "@lerna/link": "5.1.4", + "@lerna/list": "5.1.4", + "@lerna/publish": "5.1.4", + "@lerna/run": "5.1.4", + "@lerna/version": "5.1.4", "import-local": "^3.0.2", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" }, "bin": { "lerna": "cli.js" }, "engines": { - "node": "^14.19.3 || >=16.0.0" + "node": "^14.15.0 || >=16.0.0" } }, "node_modules/levn": { @@ -11558,12 +11729,6 @@ "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", "integrity": "sha512-De+ZbrMu6eThFti/CSzhRvTKMgQToLxbij58LMfM8JnYDNSOjkjTCIaa8ixglOeGh2nyPlakbt5bJWJ7gvpYlQ==" }, - "node_modules/lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", - "dev": true - }, "node_modules/lodash.create": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", @@ -11646,25 +11811,6 @@ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, - "node_modules/lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "dependencies": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "node_modules/lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "dev": true, - "dependencies": { - "lodash._reinterpolate": "^3.0.0" - } - }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -11714,14 +11860,12 @@ } }, "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", + "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", + "dev": true, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/make-dir": { @@ -11755,7 +11899,7 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, + "devOptional": true, "dependencies": { "agentkeepalive": "^4.1.3", "cacache": "^15.2.0", @@ -11782,7 +11926,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, + "devOptional": true, "dependencies": { "@gar/promisify": "^1.0.1", "semver": "^7.3.5" @@ -11792,7 +11936,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, + "devOptional": true, "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -11805,7 +11949,7 @@ "version": "15.3.0", "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, + "devOptional": true, "dependencies": { "@npmcli/fs": "^1.0.0", "@npmcli/move-file": "^1.0.1", @@ -11830,6 +11974,38 @@ "node": ">= 10" } }, + "node_modules/make-fetch-happen/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "devOptional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "devOptional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", @@ -11919,7 +12095,7 @@ "node_modules/marko/node_modules/resolve-from": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "integrity": "sha512-qpFcKaXsq8+oRoLilkwyc7zHGF5i9Q2/25NIgLQQ/+VVv9rU4qvr6nXVAw1DsnXJyQkZsR4Ytfbtg5ehfcUssQ==", "engines": { "node": ">=0.10.0" } @@ -11927,7 +12103,7 @@ "node_modules/marko/node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "engines": { "node": ">=0.10.0" } @@ -12266,10 +12442,9 @@ } }, "node_modules/minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.3.tgz", + "integrity": "sha512-N0BOsdFAlNRfmwMhjAsLVWOk7Ljmeb39iqFlsV1At+jqRhSUP9yeof8FyJu4imaJiSUp8vQebWD/guZwGQC8iA==", "dependencies": { "yallist": "^4.0.0" }, @@ -12281,7 +12456,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, + "devOptional": true, "dependencies": { "minipass": "^3.0.0" }, @@ -12293,7 +12468,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "dev": true, + "devOptional": true, "dependencies": { "minipass": "^3.1.0", "minipass-sized": "^1.0.3", @@ -12310,7 +12485,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, + "devOptional": true, "dependencies": { "minipass": "^3.0.0" }, @@ -12332,7 +12507,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, + "devOptional": true, "dependencies": { "minipass": "^3.0.0" }, @@ -12344,7 +12519,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, + "devOptional": true, "dependencies": { "minipass": "^3.0.0" }, @@ -12356,7 +12531,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -12369,7 +12543,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -12518,6 +12691,22 @@ "url": "https://ko-fi.com/tunnckoCore/commissions" } }, + "node_modules/mocha-puppeteer/node_modules/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-mRyN/EsN2SyNhKWykF3eEGhDpeNplMWaW18Bmh76tnOqk5TbELAVwFAYOCmKVssOYFrYvvLMguiA+NXO3ZTuVA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, "node_modules/mocha-puppeteer/node_modules/has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -12578,22 +12767,6 @@ "npm": ">= 1.4.x" } }, - "node_modules/mocha-puppeteer/node_modules/mocha/node_modules/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-mRyN/EsN2SyNhKWykF3eEGhDpeNplMWaW18Bmh76tnOqk5TbELAVwFAYOCmKVssOYFrYvvLMguiA+NXO3ZTuVA==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/mocha-puppeteer/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -12624,6 +12797,25 @@ "rimraf": "bin.js" } }, + "node_modules/mocha-puppeteer/node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/mocha-puppeteer/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -12674,7 +12866,7 @@ "node_modules/mocha-puppeteer/node_modules/supports-color": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", - "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "integrity": "sha512-F8dvPrZJtNzvDRX26eNXT4a7AecAvTGljmmnI39xEgSpbHKhQ7N0dO/NTxUExd0wuLHp4zbwYY7lvHq0aKpwrA==", "dependencies": { "has-flag": "^1.0.0" }, @@ -12777,9 +12969,9 @@ } }, "node_modules/mongodb": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.6.0.tgz", - "integrity": "sha512-1gsxVXmjFTPJ+CkMG9olE4bcVsyY8lBJN9m5B5vj+LZ7wkBqq3PO8RVmNX9GwCBOBz1KV0zM00vPviUearSv7A==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.7.0.tgz", + "integrity": "sha512-HhVar6hsUeMAVlIbwQwWtV36iyjKd9qdhY+s4wcU8K6TOj4Q331iiMy+FoPuxEntDIijTYWivwFJkLv8q/ZgvA==", "dependencies": { "bson": "^4.6.3", "denque": "^2.0.1", @@ -12834,12 +13026,12 @@ } }, "node_modules/mongodb-memory-server": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/mongodb-memory-server/-/mongodb-memory-server-8.6.0.tgz", - "integrity": "sha512-4I3qpIN3Ls5Vs8CPIl7SiT/rQUYmpgP27csDqgkSY7fu09mEqT3ieIC7cRhgx8wuRKr3rTotKMP4G1+Qw7+9Kw==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/mongodb-memory-server/-/mongodb-memory-server-8.7.0.tgz", + "integrity": "sha512-xn8RvdqeNfqLsv7LQIFy/VyDLE3AzylddcMGpQzZnVdHVuHEA09m+uGWplU4CkduGyvZTCFP9cbj+kFSX79BDA==", "hasInstallScript": true, "dependencies": { - "mongodb-memory-server-core": "8.6.0", + "mongodb-memory-server-core": "8.7.0", "tslib": "^2.4.0" }, "engines": { @@ -12847,9 +13039,9 @@ } }, "node_modules/mongodb-memory-server-core": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/mongodb-memory-server-core/-/mongodb-memory-server-core-8.6.0.tgz", - "integrity": "sha512-vuJfoK1TUPKwmspRxvkMUod34BInHmWF6li3nXlQ9bvaA2Xg4p3GsTkplyuwTBkLgeLL9AwIU0rk3CDwKpym1w==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/mongodb-memory-server-core/-/mongodb-memory-server-core-8.7.0.tgz", + "integrity": "sha512-dYJ+u9ZP4koCcMzxTwAUDxsG92evcJdXt70spMXrRUVQL7PI5Q83yLOHdqKhjevwfzJwyE8pFCGDGU+Qxs/cUA==", "dependencies": { "@types/tmp": "^0.2.3", "async-mutex": "^0.3.2", @@ -12859,8 +13051,8 @@ "get-port": "^5.1.1", "https-proxy-agent": "^5.0.1", "md5-file": "^5.0.0", - "mongodb": "^4.5.0", - "new-find-package-json": "^1.1.0", + "mongodb": "^4.7.0", + "new-find-package-json": "^2.0.0", "semver": "^7.3.7", "tar-stream": "^2.1.4", "tmp": "^0.2.1", @@ -12940,8 +13132,7 @@ "node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "node_modules/nanoid": { "version": "3.3.3", @@ -12974,21 +13165,20 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "node_modules/new-find-package-json": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/new-find-package-json/-/new-find-package-json-1.2.0.tgz", - "integrity": "sha512-Z4v/wBxApGh1cCGEhNmq4p8wjDvM6R6vEuYzlAhzOlXBKLJfjyMvwd+ZHR9fyYKVvXfEn4Z3YX6MD470PxpVbQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/new-find-package-json/-/new-find-package-json-2.0.0.tgz", + "integrity": "sha512-lDcBsjBSMlj3LXH2v/FW3txlh2pYTjmbOXPYJD93HI5EwuLzI11tdHSIpUMmfq/IOsldj4Ps8M8flhm+pCK4Ew==", "dependencies": { - "debug": "^4.3.4", - "tslib": "^2.4.0" + "debug": "^4.3.4" }, "engines": { "node": ">=12.22.0" } }, - "node_modules/new-find-package-json/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" }, "node_modules/node-fetch": { "version": "2.6.7", @@ -13012,17 +13202,17 @@ "node_modules/node-fetch/node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/node-fetch/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/node-fetch/node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -13032,7 +13222,7 @@ "version": "8.4.1", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "dev": true, + "devOptional": true, "dependencies": { "env-paths": "^2.2.0", "glob": "^7.1.4", @@ -13052,51 +13242,24 @@ "node": ">= 10.12.0" } }, - "node_modules/node-gyp/node_modules/are-we-there-yet": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", - "dev": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, - "node_modules/node-gyp/node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "dev": true, + "node_modules/node-gyp/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "devOptional": true, "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-gyp/node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "dev": true, - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" + "node": "*" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/node-releases": { @@ -13108,7 +13271,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, "dependencies": { "abbrev": "1" }, @@ -13164,9 +13326,9 @@ } }, "node_modules/npm-check-updates": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-13.1.1.tgz", - "integrity": "sha512-f4gLbUJJh5qvkNvrSG3b05y3ZvyZ4Sl3Uk95DSyCjIWwpwmAwzU9dMCA/Gg2AmIKqkH4ml6X9kxcZsu+tAd94g==", + "version": "13.1.5", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-13.1.5.tgz", + "integrity": "sha512-vAVYlrrxJIPH/R5mxMzrNwP33hYflvk7oQqPjPOySCavCFwhXKmfK5sn/rogyebg7cLnECiDxsczGqvTOEBRAA==", "dev": true, "dependencies": { "chalk": "^4.1.2", @@ -13227,15 +13389,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "node_modules/npm-check-updates/node_modules/lru-cache": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", - "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/npm-check-updates/node_modules/minimatch": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", @@ -13307,6 +13460,26 @@ "node": ">=10" } }, + "node_modules/npm-packlist/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/npm-pick-manifest": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", @@ -13343,15 +13516,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "node_modules/npm-pick-manifest/node_modules/lru-cache": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", - "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/npm-pick-manifest/node_modules/npm-package-arg": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.2.tgz", @@ -13449,6 +13613,38 @@ "node": ">= 10" } }, + "node_modules/npm-registry-fetch/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm-registry-fetch/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { "version": "8.0.14", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", @@ -13493,6 +13689,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, "dependencies": { "path-key": "^3.0.0" }, @@ -13501,24 +13698,18 @@ } }, "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "devOptional": true, "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "dev": true, + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/oauth-sign": { @@ -13645,6 +13836,38 @@ "node": ">= 0.8.0" } }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "node_modules/os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -13711,7 +13934,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, + "devOptional": true, "dependencies": { "aggregate-error": "^3.0.0" }, @@ -13883,29 +14106,10 @@ "node_modules/pacote/node_modules/builtins": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/pacote/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "semver": "^7.0.0" } }, "node_modules/pacote/node_modules/hosted-git-info": { @@ -13946,19 +14150,10 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/pacote/node_modules/lru-cache": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", - "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/pacote/node_modules/make-fetch-happen": { - "version": "10.1.7", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.7.tgz", - "integrity": "sha512-J/2xa2+7zlIUKqfyXDCXFpH3ypxO4k3rgkZHPSZkyUYcBT/hM80M3oyKLM/9dVriZFiGeGGS2Ei+0v2zfhqj3Q==", + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz", + "integrity": "sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==", "dev": true, "dependencies": { "agentkeepalive": "^4.2.1", @@ -14219,9 +14414,9 @@ } }, "node_modules/parse-path": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.3.tgz", - "integrity": "sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.4.tgz", + "integrity": "sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw==", "dev": true, "dependencies": { "is-ssh": "^1.3.0", @@ -14303,6 +14498,11 @@ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" }, + "node_modules/pg-connection-string": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -14436,9 +14636,9 @@ } }, "node_modules/prettier": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", - "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -14522,13 +14722,13 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true + "devOptional": true }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, + "devOptional": true, "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -14662,6 +14862,25 @@ "ms": "2.0.0" } }, + "node_modules/puppeteer/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/puppeteer/node_modules/https-proxy-agent": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", @@ -14713,9 +14932,9 @@ } }, "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.10.5", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.5.tgz", + "integrity": "sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ==", "dependencies": { "side-channel": "^1.0.4" }, @@ -14994,7 +15213,7 @@ "node_modules/rc/node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -15003,7 +15222,7 @@ "node_modules/read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", "dev": true, "dependencies": { "mute-stream": "~0.0.4" @@ -15046,10 +15265,30 @@ "node": ">=10" } }, + "node_modules/read-package-json/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, "dependencies": { "load-json-file": "^4.0.0", @@ -15063,7 +15302,7 @@ "node_modules/read-pkg-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", "dev": true, "dependencies": { "find-up": "^2.0.0", @@ -15219,7 +15458,7 @@ "node_modules/read-pkg/node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "engines": { "node": ">=4" @@ -15262,14 +15501,14 @@ } }, "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dependencies": { - "resolve": "^1.1.6" + "resolve": "^1.20.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/redent": { @@ -15304,7 +15543,7 @@ "node_modules/regenerator-runtime": { "version": "0.10.5", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" + "integrity": "sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w==" }, "node_modules/regenerator-transform": { "version": "0.15.0", @@ -15354,12 +15593,12 @@ } }, "node_modules/registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", "dev": true, "dependencies": { - "rc": "^1.2.8" + "rc": "1.2.8" }, "engines": { "node": ">=6.0.0" @@ -15413,7 +15652,7 @@ "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" }, "node_modules/repeat-element": { "version": "1.1.4", @@ -15426,7 +15665,7 @@ "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "engines": { "node": ">=0.10" } @@ -15434,7 +15673,7 @@ "node_modules/repeating": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", "dependencies": { "is-finite": "^1.0.0" }, @@ -15466,7 +15705,7 @@ "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "engines": { "node": ">=0.10.0" } @@ -15482,14 +15721,14 @@ "node_modules/require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==" }, "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dependencies": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.9.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -15530,7 +15769,7 @@ "node_modules/responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", "dev": true, "dependencies": { "lowercase-keys": "^1.0.0" @@ -15540,7 +15779,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -15552,8 +15790,8 @@ "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true, + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "devOptional": true, "engines": { "node": ">= 4" } @@ -15571,7 +15809,7 @@ "node_modules/right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "integrity": "sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg==", "dependencies": { "align-text": "^0.1.1" }, @@ -15593,11 +15831,29 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -15773,6 +16029,17 @@ "integrity": "sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==", "dev": true }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", @@ -15847,8 +16114,7 @@ "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "node_modules/setprototypeof": { "version": "1.2.0", @@ -15901,6 +16167,44 @@ "node": ">=4" } }, + "node_modules/shelljs/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/shelljs/node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/shelljs/node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/shx": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", @@ -16048,7 +16352,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "dev": true, + "devOptional": true, "dependencies": { "agent-base": "^6.0.2", "debug": "^4.3.3", @@ -16102,7 +16406,7 @@ "node_modules/sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", "optional": true, "dependencies": { "memory-pager": "^1.0.2" @@ -16175,10 +16479,32 @@ "readable-stream": "^3.0.0" } }, + "node_modules/sqlite3": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.8.tgz", + "integrity": "sha512-f2ACsbSyb2D1qFFcqIXPfFscLtPVOWJr5GmUzYxf4W+0qelu5MWrR+FAQE1d5IUArEltBrzSDxDORG8P/IkqyQ==", + "hasInstallScript": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.0", + "node-addon-api": "^4.2.0", + "tar": "^6.1.11" + }, + "optionalDependencies": { + "node-gyp": "8.x" + }, + "peerDependencies": { + "node-gyp": "8.x" + }, + "peerDependenciesMeta": { + "node-gyp": { + "optional": true + } + } + }, "node_modules/sqwish": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/sqwish/-/sqwish-0.2.2.tgz", - "integrity": "sha1-AP4maBBPEii1u37nOe9gEhu8sFc=", + "integrity": "sha512-MyaCOSCiThzFPcXHebkWiiXDDlEzbHtbdJBqos4CkUwiKdCgQU0IOzBJwswhBv2Qg3glj5TxzDxvKobuyB4e8w==", "bin": { "sqwish": "bin/sqwish" }, @@ -16190,7 +16516,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, + "devOptional": true, "dependencies": { "minipass": "^3.1.1" }, @@ -16250,7 +16576,7 @@ "node_modules/strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", "dev": true, "engines": { "node": ">=4" @@ -16301,6 +16627,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, "engines": { "node": ">=6" } @@ -16424,7 +16751,6 @@ "version": "6.1.11", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -16462,19 +16788,27 @@ "readable-stream": "^3.4.0" } }, + "node_modules/tarn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", + "integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/temp-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/terser": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.0.tgz", - "integrity": "sha512-JC6qfIEkPBd9j1SMO3Pfn+A6w2kQV54tv+ABQLgZr7dA3k/DL/OBoYSWxzVpZev3J+bUHXfr55L8Mox7AaNo6g==", + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.1.tgz", + "integrity": "sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==", "dependencies": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", @@ -16585,6 +16919,26 @@ "node": ">=8" } }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/text-extensions": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", @@ -16597,13 +16951,13 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "node_modules/through2": { "version": "4.0.2", @@ -16614,11 +16968,18 @@ "readable-stream": "3" } }, + "node_modules/tildify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", + "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==", + "engines": { + "node": ">=8" + } + }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -16629,7 +16990,7 @@ "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "engines": { "node": ">=4" } @@ -16695,7 +17056,7 @@ "node_modules/trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", "engines": { "node": ">=0.10.0" } @@ -16825,18 +17186,17 @@ "node_modules/type-detect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", - "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", + "integrity": "sha512-f9Uv6ezcpvCQjJU0Zqbg+65qdcszv3qUQsZfjdRbWiZ7AMenrX1u0lNk9EoWWX6e1F+NULyg27mtdeZ5WhpljA==", "engines": { "node": "*" } }, "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.13.1.tgz", + "integrity": "sha512-hXYyrPFwETT2swFLHeoKtJrvSF/ftG/sA15/8nGaLuaDGfVAaq8DYFpu4yOyV4tzp082WqnTEoMsm3flKMI2FQ==", "engines": { - "node": ">=10" + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -16857,7 +17217,7 @@ "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", @@ -16869,9 +17229,9 @@ } }, "node_modules/typescript": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz", - "integrity": "sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==", + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -16881,9 +17241,9 @@ } }, "node_modules/uglify-js": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.0.tgz", - "integrity": "sha512-FEikl6bR30n0T3amyBh3LoiBdqHRy/f4H80+My34HOesOKyHfOsxAPAxOoqC0JUnC1amnO0IwkYC3sko51caSw==", + "version": "3.16.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.1.tgz", + "integrity": "sha512-X5BGTIDH8U6IQ1TIRP62YC36k+ULAa1d59BxlWvPUJ1NkW5L3FwcGfEzuVvGmhJFBu0YJ5Ge25tmRISqCmLiRQ==", "dev": true, "optional": true, "bin": { @@ -16896,7 +17256,7 @@ "node_modules/uglify-to-browserify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "integrity": "sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==", "optional": true }, "node_modules/uid-safe": { @@ -16918,7 +17278,7 @@ "node_modules/unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", "engines": { "node": ">=0.10.0" } @@ -16963,7 +17323,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, + "devOptional": true, "dependencies": { "unique-slug": "^2.0.0" } @@ -16972,7 +17332,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, + "devOptional": true, "dependencies": { "imurmurhash": "^0.1.4" } @@ -17007,7 +17367,7 @@ "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "engines": { "node": ">= 0.8" } @@ -17061,7 +17421,7 @@ "node_modules/url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", "dependencies": { "punycode": "1.3.2", "querystring": "0.2.0" @@ -17070,7 +17430,7 @@ "node_modules/url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", "dev": true, "dependencies": { "prepend-http": "^2.0.0" @@ -17095,7 +17455,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/util/node_modules/inherits": { "version": "2.0.3", @@ -17105,7 +17465,7 @@ "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "engines": { "node": ">= 0.4.0" } @@ -17130,12 +17490,12 @@ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" }, "node_modules/v8-to-istanbul": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.0.tgz", - "integrity": "sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", + "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^1.6.0" }, @@ -17155,7 +17515,7 @@ "node_modules/validate-npm-package-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", "dev": true, "dependencies": { "builtins": "^1.0.3" @@ -17164,7 +17524,7 @@ "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "engines": { "node": ">= 0.8" } @@ -17195,8 +17555,7 @@ "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dependencies": { "defaults": "^1.0.3" } @@ -17257,17 +17616,17 @@ } }, "node_modules/webpack-cli": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", - "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "dependencies": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.1", - "@webpack-cli/info": "^1.4.1", - "@webpack-cli/serve": "^1.6.1", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", "colorette": "^2.0.14", "commander": "^7.0.0", - "execa": "^5.0.0", + "cross-spawn": "^7.0.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", "interpret": "^2.2.0", @@ -17280,6 +17639,10 @@ "engines": { "node": ">=10.13.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, "peerDependencies": { "webpack": "4.x.x || 5.x.x" }, @@ -17306,14 +17669,6 @@ "node": ">= 10" } }, - "node_modules/webpack-cli/node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/webpack-cli/node_modules/rechoir": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", @@ -17422,7 +17777,6 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } @@ -17447,7 +17801,7 @@ "node_modules/window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "integrity": "sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==", "engines": { "node": ">= 0.8.0" } @@ -17463,7 +17817,7 @@ "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, "node_modules/workerpool": { @@ -17490,7 +17844,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write-file-atomic": { "version": "3.0.3", @@ -17590,7 +17944,7 @@ "node_modules/write-pkg/node_modules/sort-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", "dev": true, "dependencies": { "is-plain-obj": "^1.0.0" @@ -17771,7 +18125,7 @@ "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -17824,14 +18178,14 @@ } }, "@babel/compat-data": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", - "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==" + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.5.tgz", + "integrity": "sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==" }, "@babel/core": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", - "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.5.tgz", + "integrity": "sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==", "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", @@ -17839,10 +18193,10 @@ "@babel/helper-compilation-targets": "^7.18.2", "@babel/helper-module-transforms": "^7.18.0", "@babel/helpers": "^7.18.2", - "@babel/parser": "^7.18.0", + "@babel/parser": "^7.18.5", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2", + "@babel/traverse": "^7.18.5", + "@babel/types": "^7.18.4", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -18172,9 +18526,9 @@ } }, "@babel/parser": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.4.tgz", - "integrity": "sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==" + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.5.tgz", + "integrity": "sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.17.12", @@ -18611,9 +18965,9 @@ } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.4.tgz", - "integrity": "sha512-lH2UaQaHVOAeYrUUuZ8i38o76J/FnO8vu21OE+tD1MyP9lxdZoSfz+pDbWkq46GogUrdrMz3tiz/FYGB+bVThg==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz", + "integrity": "sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q==", "requires": { "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-module-transforms": "^7.18.0", @@ -18641,9 +18995,9 @@ } }, "@babel/plugin-transform-new-target": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz", - "integrity": "sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz", + "integrity": "sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg==", "requires": { "@babel/helper-plugin-utils": "^7.17.12" } @@ -18875,9 +19229,9 @@ } }, "@babel/traverse": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", - "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.5.tgz", + "integrity": "sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==", "requires": { "@babel/code-frame": "^7.16.7", "@babel/generator": "^7.18.2", @@ -18885,8 +19239,8 @@ "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.18.0", - "@babel/types": "^7.18.2", + "@babel/parser": "^7.18.5", + "@babel/types": "^7.18.4", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -18974,6 +19328,62 @@ } } }, + "@feathershq/pinion": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@feathershq/pinion/-/pinion-0.3.3.tgz", + "integrity": "sha512-JXe55z59oc4uRT8XkYMlWYoj9ZKL39N5aIIHGnwSAVQbgQgatvTZpaPzZ0cgziN6XTl/QhJO4FRed+bPTInnvA==", + "requires": { + "@types/inquirer": "^8.2.0", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0", + "inquirer": "^8.2.0", + "ts-node": "^10.5.0", + "yargs": "^17.3.1" + }, + "dependencies": { + "inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + } + }, + "yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==" + } + } + }, "@feathersjs/hooks": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/@feathersjs/hooks/-/hooks-0.7.5.tgz", @@ -18983,7 +19393,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true + "devOptional": true }, "@humanwhocodes/config-array": { "version": "0.9.5", @@ -19075,16 +19485,16 @@ } }, "@lerna/add": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/add/-/add-5.0.0.tgz", - "integrity": "sha512-KdIOQL+88iHU9zuAU8Be1AL4cOVmm77nlckylsNaVVTiomNipr/h7lStiBO52BoMkwKzNwOH6He5HGY0Yo7s2w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/add/-/add-5.1.4.tgz", + "integrity": "sha512-kysQaV0+6aFtT0rkbaeuP6qb0vYDwo7TiC+Og4STyXxv2mHXi3F8r6Z9xXNUn8LPi29gaCmB8DLmbEGlTBM4xg==", "dev": true, "requires": { - "@lerna/bootstrap": "5.0.0", - "@lerna/command": "5.0.0", - "@lerna/filter-options": "5.0.0", - "@lerna/npm-conf": "5.0.0", - "@lerna/validation-error": "5.0.0", + "@lerna/bootstrap": "5.1.4", + "@lerna/command": "5.1.4", + "@lerna/filter-options": "5.1.4", + "@lerna/npm-conf": "5.1.4", + "@lerna/validation-error": "5.1.4", "dedent": "^0.7.0", "npm-package-arg": "^8.1.0", "p-map": "^4.0.0", @@ -19093,29 +19503,29 @@ } }, "@lerna/bootstrap": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-5.0.0.tgz", - "integrity": "sha512-2m1BxKbYwDABy+uE/Da3EQM61R58bI3YQ0o1rsFQq1u0ltL9CJxw1o0lMg84hwMsBb4D+kLIXLqetYlLVgbr0Q==", - "dev": true, - "requires": { - "@lerna/command": "5.0.0", - "@lerna/filter-options": "5.0.0", - "@lerna/has-npm-version": "5.0.0", - "@lerna/npm-install": "5.0.0", - "@lerna/package-graph": "5.0.0", - "@lerna/pulse-till-done": "5.0.0", - "@lerna/rimraf-dir": "5.0.0", - "@lerna/run-lifecycle": "5.0.0", - "@lerna/run-topologically": "5.0.0", - "@lerna/symlink-binary": "5.0.0", - "@lerna/symlink-dependencies": "5.0.0", - "@lerna/validation-error": "5.0.0", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-5.1.4.tgz", + "integrity": "sha512-uCP0WdxGCGAGkwcuhv2nLqLByq9WJ5yr+93A8T15xZJfQsXLtYjjlivIe35MjS77eR+krwl5uY6WmGPJ33+afg==", + "dev": true, + "requires": { + "@lerna/command": "5.1.4", + "@lerna/filter-options": "5.1.4", + "@lerna/has-npm-version": "5.1.4", + "@lerna/npm-install": "5.1.4", + "@lerna/package-graph": "5.1.4", + "@lerna/pulse-till-done": "5.1.4", + "@lerna/rimraf-dir": "5.1.4", + "@lerna/run-lifecycle": "5.1.4", + "@lerna/run-topologically": "5.1.4", + "@lerna/symlink-binary": "5.1.4", + "@lerna/symlink-dependencies": "5.1.4", + "@lerna/validation-error": "5.1.4", "@npmcli/arborist": "5.2.0", "dedent": "^0.7.0", "get-port": "^5.1.1", "multimatch": "^5.0.0", "npm-package-arg": "^8.1.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "p-map": "^4.0.0", "p-map-series": "^2.1.0", "p-waterfall": "^2.1.1", @@ -19123,32 +19533,32 @@ } }, "@lerna/changed": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-5.0.0.tgz", - "integrity": "sha512-A24MHipPGODmzQBH1uIMPPUUOc1Zm7Qe/eSYzm52bFHtVxWH0nIVXfunadoMX32NhzKQH3Sw8X2rWHPQSRoUvA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-5.1.4.tgz", + "integrity": "sha512-XwA3+pw5keO2CyjobLN8dU7mvGbzB3FD+LtLPI/zk7UbNIbl7V6uaIkoPJIdTWwP1e6S1BnGCVsAMtwQ980gTA==", "dev": true, "requires": { - "@lerna/collect-updates": "5.0.0", - "@lerna/command": "5.0.0", - "@lerna/listable": "5.0.0", - "@lerna/output": "5.0.0" + "@lerna/collect-updates": "5.1.4", + "@lerna/command": "5.1.4", + "@lerna/listable": "5.1.4", + "@lerna/output": "5.1.4" } }, "@lerna/check-working-tree": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-5.0.0.tgz", - "integrity": "sha512-PnUMdpT2qS4o+vs+7l5fFIizstGdqSkhLG+Z9ZiY5OMtnGd+pmAFQFlbLSZSmdvQSOSobl9fhB1St8qhPD60xQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-5.1.4.tgz", + "integrity": "sha512-yFkRmZd25viwxyyOHZd3g7k2Od2Mk0Sf15fol3h/a7P0rUMf6UaMoGo2qlyo+DS51sz+eNalMmFKLpRrDXcSSw==", "dev": true, "requires": { - "@lerna/collect-uncommitted": "5.0.0", - "@lerna/describe-ref": "5.0.0", - "@lerna/validation-error": "5.0.0" + "@lerna/collect-uncommitted": "5.1.4", + "@lerna/describe-ref": "5.1.4", + "@lerna/validation-error": "5.1.4" } }, "@lerna/child-process": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-5.0.0.tgz", - "integrity": "sha512-cFVNkedrlU8XTt15EvUtQ84hqtV4oToQW/elKNv//mhCz06HY8Y+Ia6XevK2zrIhZjS6DT576F/7SmTk3vnpmg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-5.1.4.tgz", + "integrity": "sha512-F7xP+bEdkE3JTyKz0t33QA5v2meXZrQQ0JmHa7/AlEg6D2r7gQ8UHSHuSUiNfX4drjpePe/9XaZylj01KLcx/w==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -19157,104 +19567,103 @@ } }, "@lerna/clean": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-5.0.0.tgz", - "integrity": "sha512-7B+0Nx6MEPmCfnEa1JFyZwJsC7qlGrikWXyLglLb/wcbapYVsuDauOl9AT1iOFoXKw82P77HWYUKWeD9DQgw/w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-5.1.4.tgz", + "integrity": "sha512-4Du/r8iYSYFpo1t5J1BYivmj84n9mGebt89isVsyqMmrCqd5B2ix/Z8PYPQFMwm7k9YYbV+sZGSpRvtXkn8kIw==", "dev": true, "requires": { - "@lerna/command": "5.0.0", - "@lerna/filter-options": "5.0.0", - "@lerna/prompt": "5.0.0", - "@lerna/pulse-till-done": "5.0.0", - "@lerna/rimraf-dir": "5.0.0", + "@lerna/command": "5.1.4", + "@lerna/filter-options": "5.1.4", + "@lerna/prompt": "5.1.4", + "@lerna/pulse-till-done": "5.1.4", + "@lerna/rimraf-dir": "5.1.4", "p-map": "^4.0.0", "p-map-series": "^2.1.0", "p-waterfall": "^2.1.1" } }, "@lerna/cli": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-5.0.0.tgz", - "integrity": "sha512-g8Nifko8XNySOl8u2molSHVl+fk/E1e5FSn/W2ekeijmc3ezktp+xbPWofNq71N/d297+KPQpLBfwzXSo9ufIQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-5.1.4.tgz", + "integrity": "sha512-ckLSNJBY4iVmu6nBhHb8UchpWGm49z9pjsAEJQ4F/VNkT6zKsmOCfv2ahkvudQ77gc0K/dH+MTvoOHsH85bpow==", "dev": true, "requires": { - "@lerna/global-options": "5.0.0", + "@lerna/global-options": "5.1.4", "dedent": "^0.7.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "yargs": "^16.2.0" } }, "@lerna/collect-uncommitted": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-5.0.0.tgz", - "integrity": "sha512-mga/2S9rK0TP5UCulWiCTrC/uKaiIlOro1n8R3oCw6eRw9eupCSRx5zGI7pdh8CPD82MDL7w0a6OTep3WBSBVA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-5.1.4.tgz", + "integrity": "sha512-CI9PXYQuewqA4ZBMRycDUSVRJmAxUeP8HEZ3aKNvAwlLxLlGCueh8qOHXZHxgkmF6eQtcEjblsReiDt8bFJZpA==", "dev": true, "requires": { - "@lerna/child-process": "5.0.0", + "@lerna/child-process": "5.1.4", "chalk": "^4.1.0", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" } }, "@lerna/collect-updates": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-5.0.0.tgz", - "integrity": "sha512-X82i8SVgBXLCk8vbKWfQPRLTAXROCANL8Z/bU1l6n7yycsHKdjrrlNi1+KprFdfRsMvSm10R4qPNcl9jgsp/IA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-5.1.4.tgz", + "integrity": "sha512-P1zlaZ0QkKIjbU3o7hjd4zcxzti1ndS4+eQNmlxZP3IcmlJ4+Ne+VxGeaACsjzPPBqSBWX1xcyMFLALH/Jo2CA==", "dev": true, "requires": { - "@lerna/child-process": "5.0.0", - "@lerna/describe-ref": "5.0.0", + "@lerna/child-process": "5.1.4", + "@lerna/describe-ref": "5.1.4", "minimatch": "^3.0.4", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "slash": "^3.0.0" } }, "@lerna/command": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/command/-/command-5.0.0.tgz", - "integrity": "sha512-j7/apU5d/nhSc1qIZgcV03KyO5jz3y7cwSum3IuK8/XF6rKwt3FVnbue1V3l9sJ6IRJjsRGKyViB1IdP5nSX4Q==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/command/-/command-5.1.4.tgz", + "integrity": "sha512-S/3oIagN9/ntuGtljSxHu4liB9e9YFWsq/xZOR8YoqROJENv5G5zyAmHjXq90AR/tGmLvufzFliBfEIG9CywFA==", "dev": true, "requires": { - "@lerna/child-process": "5.0.0", - "@lerna/package-graph": "5.0.0", - "@lerna/project": "5.0.0", - "@lerna/validation-error": "5.0.0", - "@lerna/write-log-file": "5.0.0", + "@lerna/child-process": "5.1.4", + "@lerna/package-graph": "5.1.4", + "@lerna/project": "5.1.4", + "@lerna/validation-error": "5.1.4", + "@lerna/write-log-file": "5.1.4", "clone-deep": "^4.0.1", "dedent": "^0.7.0", "execa": "^5.0.0", "is-ci": "^2.0.0", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" } }, "@lerna/conventional-commits": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-5.0.0.tgz", - "integrity": "sha512-tUCRTAycDCtSlCEI0hublq4uKHeV0UHpwIb3Fdt6iv2AoTSPBSX/Dwu/6VqguysOSEkkR4M2JCOLvJCl4IMxwg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-5.1.4.tgz", + "integrity": "sha512-0v0exYOH9cJTNpKggqAw7vHVLlPjqO6Y20PUg44F3GOEjd54VIGDqu+MkVhflqvUftzZjmcUHDUGHVP+8dFBNw==", "dev": true, "requires": { - "@lerna/validation-error": "5.0.0", + "@lerna/validation-error": "5.1.4", "conventional-changelog-angular": "^5.0.12", "conventional-changelog-core": "^4.2.2", "conventional-recommended-bump": "^6.1.0", "fs-extra": "^9.1.0", "get-stream": "^6.0.0", - "lodash.template": "^4.5.0", "npm-package-arg": "^8.1.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "pify": "^5.0.0", "semver": "^7.3.4" } }, "@lerna/create": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/create/-/create-5.0.0.tgz", - "integrity": "sha512-sdFTVTLOVuhHpzIYhFAwK0Ry3p4d7uMe9ZG/Ii128/pB9kEEfCth+1WBq6mBpYZ5mOLLgxJbWalbiJFl0toQRw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-5.1.4.tgz", + "integrity": "sha512-UPR5EnFg0WzXiRIKl+MGHH3hBB6s1xkLDJNLGzac5Ztry/ibLDhl47wYoYcToiQ3/y3/3751WLJErF+A52mCyw==", "dev": true, "requires": { - "@lerna/child-process": "5.0.0", - "@lerna/command": "5.0.0", - "@lerna/npm-conf": "5.0.0", - "@lerna/validation-error": "5.0.0", + "@lerna/child-process": "5.1.4", + "@lerna/command": "5.1.4", + "@lerna/npm-conf": "5.1.4", + "@lerna/validation-error": "5.1.4", "dedent": "^0.7.0", "fs-extra": "^9.1.0", "globby": "^11.0.2", @@ -19280,89 +19689,89 @@ } }, "@lerna/create-symlink": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-5.0.0.tgz", - "integrity": "sha512-nHYNacrh15Y0yEofVlUVu9dhf4JjIn9hY7v7rOUXzUeQ91iXY5Q3PVHkBeRUigyT5CWP5qozZwraCMwp+lDWYg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-5.1.4.tgz", + "integrity": "sha512-VTTuCgM5gXk0frAFxfVQqfX9QxXKz6TKpKsHcC39BAR3aiSUW8vqRImbLvaFtKpnEMW0HshDfuzp6rRkaiyWYw==", "dev": true, "requires": { "cmd-shim": "^4.1.0", "fs-extra": "^9.1.0", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" } }, "@lerna/describe-ref": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-5.0.0.tgz", - "integrity": "sha512-iLvMHp3nl4wcMR3/lVkz0ng7pAHfLQ7yvz2HsYBq7wllCcEzpchzPgyVzyvbpJ+Ke/MKjQTsrHE/yOGOH67GVw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-5.1.4.tgz", + "integrity": "sha512-ztLWLIyrHPxVhs8yfVpCDIw2st5c246KfoTqjEX8N6s8v0dLs3vfCKCM70ej6lBNkwqBXSilgHrd3AkGq3kq6Q==", "dev": true, "requires": { - "@lerna/child-process": "5.0.0", - "npmlog": "^4.1.2" + "@lerna/child-process": "5.1.4", + "npmlog": "^6.0.2" } }, "@lerna/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-S4XJ6i9oP77cSmJ3oRUJGMgrI+jOTmkYWur2nqgSdyJBE1J2eClgTJknb3WAHg2cHALT18WzFqNghFOGM+9dRA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-5.1.4.tgz", + "integrity": "sha512-o5chvMHcKQS4zkdGX7LCaMgNn0flrG9OEiGt8DCIzRUa6aWJAlE2oZyOj+VsiUxzaZJxm2oV+GkISQYRJPlPug==", "dev": true, "requires": { - "@lerna/child-process": "5.0.0", - "@lerna/command": "5.0.0", - "@lerna/validation-error": "5.0.0", - "npmlog": "^4.1.2" + "@lerna/child-process": "5.1.4", + "@lerna/command": "5.1.4", + "@lerna/validation-error": "5.1.4", + "npmlog": "^6.0.2" } }, "@lerna/exec": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-5.0.0.tgz", - "integrity": "sha512-g5i+2RclCGWLsl88m11j99YM2Gqnwa2lxZ5tDeqqWZFno6Dlvop17Yl6/MFH42EgM2DQHUUCammvcLIAJ2XwEA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-5.1.4.tgz", + "integrity": "sha512-6vn1UCxJZTTt90WlWItI05yj4xaNOShgIl5Yi9mx1Ex6nVS32mmTOqHI/+Cn4M+P0C4u1hFymd2aIEfWnmdUsA==", "dev": true, "requires": { - "@lerna/child-process": "5.0.0", - "@lerna/command": "5.0.0", - "@lerna/filter-options": "5.0.0", - "@lerna/profiler": "5.0.0", - "@lerna/run-topologically": "5.0.0", - "@lerna/validation-error": "5.0.0", + "@lerna/child-process": "5.1.4", + "@lerna/command": "5.1.4", + "@lerna/filter-options": "5.1.4", + "@lerna/profiler": "5.1.4", + "@lerna/run-topologically": "5.1.4", + "@lerna/validation-error": "5.1.4", "p-map": "^4.0.0" } }, "@lerna/filter-options": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-5.0.0.tgz", - "integrity": "sha512-un73aYkXlzKlnDPx2AlqNW+ArCZ20XaX+Y6C0F+av9VZriiBsCgZTnflhih9fiSMnXjN5r9CA8YdWvZqa3oAcQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-5.1.4.tgz", + "integrity": "sha512-a6hLVZOb7awjI9Tk5hx90BB6GZz59npBRQN0kSG6drV1H+vi+wU7ee6OZ5EMHQgnzdZ6OjZQRHlWCCTXyNdKgQ==", "dev": true, "requires": { - "@lerna/collect-updates": "5.0.0", - "@lerna/filter-packages": "5.0.0", + "@lerna/collect-updates": "5.1.4", + "@lerna/filter-packages": "5.1.4", "dedent": "^0.7.0", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" } }, "@lerna/filter-packages": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-5.0.0.tgz", - "integrity": "sha512-+EIjVVaMPDZ05F/gZa+kcXjBOLXqEamcEIDr+2ZXRgJmnrLx9BBY1B7sBEFHg7JXbeOKS+fKtMGVveV0SzgH3Q==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-5.1.4.tgz", + "integrity": "sha512-a+ThrgYyGrTfBZUMfi/WvcqX3Ce6JaMZjTYoNAmKpHYNZFRqdmgOT1fFLLF+/y62XGqCf0wo50xRYNg0hIAf3Q==", "dev": true, "requires": { - "@lerna/validation-error": "5.0.0", + "@lerna/validation-error": "5.1.4", "multimatch": "^5.0.0", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" } }, "@lerna/get-npm-exec-opts": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.0.0.tgz", - "integrity": "sha512-ZOg3kc5FXYA1kVFD2hfJOl64hNASWD6panwD0HlyzXgfKKTDRm/P/qtAqS8WGCzQWgEdx4wvsDe/58Lzzh6QzQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.1.4.tgz", + "integrity": "sha512-A+cNgTWWQOcNGWz9wj40/NWK46v8TtTAmXuEPfzDruv6VdmXEVIuq7SCeUPj9+aRxMQXVCil0/Vyo2z6R9TDLw==", "dev": true, "requires": { - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" } }, "@lerna/get-packed": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-5.0.0.tgz", - "integrity": "sha512-fks7Tg7DvcCZxRWPS3JAWVuLnwjPC/hLlNsdYmK9nN3+RtPhmYQgBjLSONcENw1E46t4Aph72lA9nLcYBLksqw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-5.1.4.tgz", + "integrity": "sha512-JD9U4Sp7Dpt3nUdXAo5f9SIXK2QsBaguChCZ8VTAl3eb7j0o7nrHYoh1eAa8rDT2L9+AxcUFDMi/wDdCotlJmA==", "dev": true, "requires": { "fs-extra": "^9.1.0", @@ -19371,137 +19780,137 @@ } }, "@lerna/github-client": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-5.0.0.tgz", - "integrity": "sha512-NoEyRkQ8XgBnrjRfC9ph1npfg1/4OdYG+r8lG/1WkJbdt1Wlym4VNZU2BYPMWwSQYMJuppoEr0LL2uuVcS4ZUw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-5.1.4.tgz", + "integrity": "sha512-VAaH9ycnGVsaGWM5uRKvd0oXlOERHOEOwxXLaCnR1mA7k5490B5jTlwhSWYdA4s40CF9AOdIVNgBhP+T7MlcPw==", "dev": true, "requires": { - "@lerna/child-process": "5.0.0", + "@lerna/child-process": "5.1.4", "@octokit/plugin-enterprise-rest": "^6.0.1", "@octokit/rest": "^18.1.0", "git-url-parse": "^11.4.4", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" } }, "@lerna/gitlab-client": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-5.0.0.tgz", - "integrity": "sha512-WREAT7qzta9hxNxktTX0x1/sEMpBP+4Gc00QSJYXt+ZzxY0t5RUx/ZK5pQl+IDhtkajrvXT6fSfZjMxxyE8hhQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-5.1.4.tgz", + "integrity": "sha512-F0Pa6Cv6TE0gbhuHR2gVVwdzstqePMZhTNcVY5So3YJrb1ppuUH/4cVXhRcEOj16QuWJ6yysxb7mj8tY4Zv0Bw==", "dev": true, "requires": { "node-fetch": "^2.6.1", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "whatwg-url": "^8.4.0" } }, "@lerna/global-options": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-5.0.0.tgz", - "integrity": "sha512-PZYy/3mTZwtA9lNmHHRCc/Ty1W20qGJ/BdDIo4bw/Bk0AOcoBCLT9b3Mjijkl4AbC9+eSGk3flUYapCGVuS32Q==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-5.1.4.tgz", + "integrity": "sha512-gs6y97tomIuyYdDr9uKQ5B5AR9m6wVft6lrxWlGlLo0prz39tx7fJ9wT2IpJ9iALCadkQW6g7XFtddwfm5VRhg==", "dev": true }, "@lerna/has-npm-version": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-5.0.0.tgz", - "integrity": "sha512-zJPgcml86nhJFJTpT+kjkcafuCFvK7PSq3oDC2KJxwB1bhlYwy+SKtAEypHSsHQ2DwP0YgPITcy1pvtHkie1SA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-5.1.4.tgz", + "integrity": "sha512-U81b1nvqwF8PGyHib8/AWeGbaNipGdqXZsRO5g3ob9A5X57GXJ86cQVLejLi+znY4SmQcHladC4TotJkpNF1Ag==", "dev": true, "requires": { - "@lerna/child-process": "5.0.0", + "@lerna/child-process": "5.1.4", "semver": "^7.3.4" } }, "@lerna/import": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/import/-/import-5.0.0.tgz", - "integrity": "sha512-cD+Is7eV/I+ZU0Wlg+yAgKaZbOvfzA7kBj2Qu1HtxeLhc7joTR8PFW1gNjEsvrWOTiaHAtObbo1A+MKYQ/T12g==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/import/-/import-5.1.4.tgz", + "integrity": "sha512-Kswe1NKJDUDlO/gbkFcurzaYlaj/fXlapHTaih9LmQDiVPOE9GphD5qnABCV0c4CqeSnCzRujT5BUjjL5z7viA==", "dev": true, "requires": { - "@lerna/child-process": "5.0.0", - "@lerna/command": "5.0.0", - "@lerna/prompt": "5.0.0", - "@lerna/pulse-till-done": "5.0.0", - "@lerna/validation-error": "5.0.0", + "@lerna/child-process": "5.1.4", + "@lerna/command": "5.1.4", + "@lerna/prompt": "5.1.4", + "@lerna/pulse-till-done": "5.1.4", + "@lerna/validation-error": "5.1.4", "dedent": "^0.7.0", "fs-extra": "^9.1.0", "p-map-series": "^2.1.0" } }, "@lerna/info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/info/-/info-5.0.0.tgz", - "integrity": "sha512-k9TMK81apTjxxpnjfFOABKXndTtHBPgB8UO+I6zKhsfRqVb9FCz2MHOx8cQiSyolvNyGSQdSylSo4p7EBBomQQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/info/-/info-5.1.4.tgz", + "integrity": "sha512-9OMdNtmDMKLwfX+aZk9nHLfksYXuU7IcIiVJ9dR7gYx1PoKjXvTpd/+hd7t/tmElM21kmPVxQBu02L3KmXw+hQ==", "dev": true, "requires": { - "@lerna/command": "5.0.0", - "@lerna/output": "5.0.0", + "@lerna/command": "5.1.4", + "@lerna/output": "5.1.4", "envinfo": "^7.7.4" } }, "@lerna/init": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/init/-/init-5.0.0.tgz", - "integrity": "sha512-2n68x7AIqVa+Vev9xF3NV9ba0C599KYf7JsIrQ5ESv4593ftInJpwgMwjroLT3X/Chi4BK7y2/xGmrfFVwgILg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/init/-/init-5.1.4.tgz", + "integrity": "sha512-OdI5iWYT1JcB6f5mjmCjgpkOrpDdSSDzmSi34kp/NP1FkbskDoMffVBTQiV8/h6zAg3jk1+aLQYLMuR5E6nIwA==", "dev": true, "requires": { - "@lerna/child-process": "5.0.0", - "@lerna/command": "5.0.0", + "@lerna/child-process": "5.1.4", + "@lerna/command": "5.1.4", "fs-extra": "^9.1.0", "p-map": "^4.0.0", "write-json-file": "^4.3.0" } }, "@lerna/link": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/link/-/link-5.0.0.tgz", - "integrity": "sha512-00YxQ06TVhQJthOjcuxCCJRjkAM+qM/8Lv0ckdCzBBCSr4RdAGBp6QcAX/gjLNasgmNpyiza3ADet7mCH7uodw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/link/-/link-5.1.4.tgz", + "integrity": "sha512-j73MW+vam6e8XdwyQGeHR9X7TUmgvLG0wV1vDLjSyrhk/Q5oFo0RTRgfDJqR4tCtRnv0vujvw5oDXfSbBmg67g==", "dev": true, "requires": { - "@lerna/command": "5.0.0", - "@lerna/package-graph": "5.0.0", - "@lerna/symlink-dependencies": "5.0.0", + "@lerna/command": "5.1.4", + "@lerna/package-graph": "5.1.4", + "@lerna/symlink-dependencies": "5.1.4", "p-map": "^4.0.0", "slash": "^3.0.0" } }, "@lerna/list": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/list/-/list-5.0.0.tgz", - "integrity": "sha512-+B0yFil2AFdiYO8hyU1bFbKXGBAUUQQ43/fp2XS2jBFCipLme4eTILL5gMKOhr2Xg9AsfYPXRMRer5VW7qTeeQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/list/-/list-5.1.4.tgz", + "integrity": "sha512-D7FAUik18s5FtHnBoPzodR8LUvH5b0a/ziV8ICaKWZ98H4w9qpNsQtBe0O+7DwUuqLKYpycst5tY5WVGnNwuNA==", "dev": true, "requires": { - "@lerna/command": "5.0.0", - "@lerna/filter-options": "5.0.0", - "@lerna/listable": "5.0.0", - "@lerna/output": "5.0.0" + "@lerna/command": "5.1.4", + "@lerna/filter-options": "5.1.4", + "@lerna/listable": "5.1.4", + "@lerna/output": "5.1.4" } }, "@lerna/listable": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-5.0.0.tgz", - "integrity": "sha512-Rd5sE7KTbqA8u048qThH5IyBuJIwMcUnEObjFyJyKpc1SEWSumo4yAYmcEeN/9z62tcdud5wHYPSbVgfXJq37g==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-5.1.4.tgz", + "integrity": "sha512-grGLrffBNX38l5mzZgkv4xE9UcAAKBi1s+LgloI3rusgTdE/B8gvCOYMqLf9V08iojs7Ke2xPf0whJmbEeK/qA==", "dev": true, "requires": { - "@lerna/query-graph": "5.0.0", + "@lerna/query-graph": "5.1.4", "chalk": "^4.1.0", - "columnify": "^1.5.4" + "columnify": "^1.6.0" } }, "@lerna/log-packed": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-5.0.0.tgz", - "integrity": "sha512-0TxKX+XnlEYj0du9U2kg3HEyIb/0QsM0Slt8utuCxALUnXRHTEKohjqVKsBdvh1QmJpnUbL5I+vfoYqno4Y42w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-5.1.4.tgz", + "integrity": "sha512-qJlWMVjc/uM1I7AWqrOPeBLVZy9YExi/QqUyvmkb8mmsPXnW7rxIJQdYgRifS5aFNTbX/MtG8Q65Rr4syiVnSA==", "dev": true, "requires": { "byte-size": "^7.0.0", - "columnify": "^1.5.4", + "columnify": "^1.6.0", "has-unicode": "^2.0.1", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" } }, "@lerna/npm-conf": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-5.0.0.tgz", - "integrity": "sha512-KSftxtMNVhLol1JNwFFNgh5jiCG010pewM+uKeSrUe0BCB3lnidiEDzu2CCn8JYYfIXqAiou/pScUiOxVLpcAA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-5.1.4.tgz", + "integrity": "sha512-kNbw2jO0HD9P4+nS8RIFub549BiQYG/sdFUuNWu7cCjErB+g/5ayfE6Mn5HyiRPMYXVw73iR8IzvkCCDWEOB7Q==", "dev": true, "requires": { "config-chain": "^1.1.12", @@ -19509,96 +19918,96 @@ } }, "@lerna/npm-dist-tag": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-5.0.0.tgz", - "integrity": "sha512-ccUFhp9Wu/FHW5/5fL+vLiSTcUZXtKQ7c0RMXtNRzIdTXBxPBkVi1k5QAnBAAffsz6Owc/K++cb+/zQ/asrG3g==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-5.1.4.tgz", + "integrity": "sha512-9q5N3iy8KGFBsyRBmNEftj8ACeCXNh2JUBqk/wYGiB0WH0oVf0UY/uo6VUy8dZjyJ9Q0eZa1ONtFHIg3QrzGDA==", "dev": true, "requires": { - "@lerna/otplease": "5.0.0", + "@lerna/otplease": "5.1.4", "npm-package-arg": "^8.1.0", "npm-registry-fetch": "^9.0.0", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" } }, "@lerna/npm-install": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-5.0.0.tgz", - "integrity": "sha512-72Jf05JCIdeSBWXAiNjd/y2AQH4Ojgas55ojV2sAcEYz2wgyR7wSpiI6fHBRlRP+3XPjV9MXKxI3ZwOnznQxqQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-5.1.4.tgz", + "integrity": "sha512-DbbUK2Zy7ZBpkHimlFKf7XbGzBsoPfqzf0i9hIYBHmND9YWSgIgVFJcyRH7E6UKpr4wRChW4h6xEV81jKykB7w==", "dev": true, "requires": { - "@lerna/child-process": "5.0.0", - "@lerna/get-npm-exec-opts": "5.0.0", + "@lerna/child-process": "5.1.4", + "@lerna/get-npm-exec-opts": "5.1.4", "fs-extra": "^9.1.0", "npm-package-arg": "^8.1.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "signal-exit": "^3.0.3", "write-pkg": "^4.0.0" } }, "@lerna/npm-publish": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-5.0.0.tgz", - "integrity": "sha512-jnapZ2jRajSzshSfd1Y3rHH5R7QC+JJlYST04FBebIH3VePwDT7uAglDCI4um2THvxkW4420EzE4BUMUwKlnXA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-5.1.4.tgz", + "integrity": "sha512-MXtd2cFN+oJMxj9m1fXYAo+KE2BzO84Ukt3uAhQb1cXU01ZCwqGl/lQRWw5vI88emrKs0akx3d6E77PFpX9rpw==", "dev": true, "requires": { - "@lerna/otplease": "5.0.0", - "@lerna/run-lifecycle": "5.0.0", + "@lerna/otplease": "5.1.4", + "@lerna/run-lifecycle": "5.1.4", "fs-extra": "^9.1.0", "libnpmpublish": "^4.0.0", "npm-package-arg": "^8.1.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "pify": "^5.0.0", "read-package-json": "^3.0.0" } }, "@lerna/npm-run-script": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-5.0.0.tgz", - "integrity": "sha512-qgGf0Wc/E2YxPwIiF8kC/OB9ffPf0/HVtPVkqrblVuNE9XVP80WilOH966PIDiXzwXaCo/cTswFoBeseccYRGw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-5.1.4.tgz", + "integrity": "sha512-vw2G69lFmFzdX553GidE66QgCZ3cGyxoOvnpCdvZ1n9AS5ZwZSiL8Ms6N3Vj+AOhESFZmFZkzIVhtpX5/xNzLg==", "dev": true, "requires": { - "@lerna/child-process": "5.0.0", - "@lerna/get-npm-exec-opts": "5.0.0", - "npmlog": "^4.1.2" + "@lerna/child-process": "5.1.4", + "@lerna/get-npm-exec-opts": "5.1.4", + "npmlog": "^6.0.2" } }, "@lerna/otplease": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-5.0.0.tgz", - "integrity": "sha512-QLLkEy1DPN1XFRAAZDHxAD26MHFQDHfzB6KKSzRYxbHc6lH/YbDaMH1RloSWIm7Hwkxl/3NgpokgN4Lj5XFuzg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-5.1.4.tgz", + "integrity": "sha512-t3qKC55D7rCacNTsqQwn25XxDRQXgRHYWS0gqn2ch+dTwXOI61Uto9okVhgn2ZfZVydJ3sjnktOsPeSXhQRQew==", "dev": true, "requires": { - "@lerna/prompt": "5.0.0" + "@lerna/prompt": "5.1.4" } }, "@lerna/output": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/output/-/output-5.0.0.tgz", - "integrity": "sha512-/7sUJQWPcvnLudjVIdN7t9MlfBLuP4JCDAWgQMqZe+wpQRuKNyKQ5dLBH5NHU/ElJCjAwMPfWuk3mh3GuvuiGA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/output/-/output-5.1.4.tgz", + "integrity": "sha512-E9nLEcV5GJbTKJd/d+cvU54CIzQqoU2rJAeXeyHTufbjgCTPk4I8uDNHmG7uJ+aPrif6PPBt1IIw+w5UnStfdw==", "dev": true, "requires": { - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" } }, "@lerna/pack-directory": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-5.0.0.tgz", - "integrity": "sha512-E1SNDS7xSWhJrTSmRzJK7DibneljrymviKcsZW3mRl4TmF4CpYJmNXCMlhEtKEy6ghnGQvnl3/4+eslHDJ5J/w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-5.1.4.tgz", + "integrity": "sha512-TsltQrbwC/bPwQbL5i7WCMNM4Chl8+iqzawRZbILfjYpt3UK9xSV2tWfc9QtbmRBETvcFz/UMKQQDz+LMWN9jw==", "dev": true, "requires": { - "@lerna/get-packed": "5.0.0", - "@lerna/package": "5.0.0", - "@lerna/run-lifecycle": "5.0.0", - "@lerna/temp-write": "5.0.0", + "@lerna/get-packed": "5.1.4", + "@lerna/package": "5.1.4", + "@lerna/run-lifecycle": "5.1.4", + "@lerna/temp-write": "5.1.4", "npm-packlist": "^2.1.4", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "tar": "^6.1.0" } }, "@lerna/package": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/package/-/package-5.0.0.tgz", - "integrity": "sha512-/JiUU88bhbYEUTzPqoGLGwrrdWWTIVMlBb1OPxCGNGDEqYYNySX+OTTSs3zGMcmJnRNI0UyQALiEd0sh3JFN5w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/package/-/package-5.1.4.tgz", + "integrity": "sha512-L0zsxslJZ+swkG/KLU3TQHmWPR0hf0eLIdOROyA9Nxvuo8C/702ddYZcuEYcz9t/jOuSgSB2s90iK2oTIncNbw==", "dev": true, "requires": { "load-json-file": "^6.2.0", @@ -19607,53 +20016,53 @@ } }, "@lerna/package-graph": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-5.0.0.tgz", - "integrity": "sha512-Z3QeUQVjux0Blo64rA3/NivoLDlsQBjsZRIgGLbcQh7l7pJrqLK1WyNCBbPJ0KQNljQqUXthCKzdefnEWe37Ew==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-5.1.4.tgz", + "integrity": "sha512-dP1gLcrqou5/8zef7u5ne4GTslNXULjpi3dDiljohKNR4XelsC4lkkF9m1Uzn9E1nAphHRhWXrRq40kqxmdYXg==", "dev": true, "requires": { - "@lerna/prerelease-id-from-version": "5.0.0", - "@lerna/validation-error": "5.0.0", + "@lerna/prerelease-id-from-version": "5.1.4", + "@lerna/validation-error": "5.1.4", "npm-package-arg": "^8.1.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "semver": "^7.3.4" } }, "@lerna/prerelease-id-from-version": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.0.0.tgz", - "integrity": "sha512-bUZwyx6evRn2RxogOQXaiYxRK1U/1Mh/KLO4n49wUhqb8S8Vb9aG3+7lLOgg4ZugHpj9KAlD3YGEKvwYQiWzhg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.1.4.tgz", + "integrity": "sha512-kDcXKKFD6Ww/FinLEvsY1P3aIiuVLyonkttvfKJTJvm3ymz7/fBKz8GotFXuONVC1xSIK9Nrk3jGYs6ZGoha+w==", "dev": true, "requires": { "semver": "^7.3.4" } }, "@lerna/profiler": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-5.0.0.tgz", - "integrity": "sha512-hFX+ZtoH7BdDoGI+bqOYaSptJTFI58wNK9qq/pHwL5ksV7vOhxP2cQAuo1SjgBKHGl0Ex/9ZT080YVV4jP1ehw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-5.1.4.tgz", + "integrity": "sha512-JLkS90+CSmi85v3SlJc5Wjk73MHmIviqtL3fM/Z6clBLbsRPkbBBfSwXKp7O281knF6E2UNTrWOtEG7b6wG3TQ==", "dev": true, "requires": { "fs-extra": "^9.1.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "upath": "^2.0.1" } }, "@lerna/project": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/project/-/project-5.0.0.tgz", - "integrity": "sha512-+izHk7D/Di2b0s69AzKzAa/qBz32H9s67oN9aKntrjNylpY7iN5opU157l60Kh4TprYHU5bLisqzFLZsHHADGw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/project/-/project-5.1.4.tgz", + "integrity": "sha512-k0z3w45t746uAUkN+jY/jF+/BqHodGFYaUfM0DTDOGUWC8tXzxuqk3bchShp6Wct2gwNQWbtWHl50Jhhw5PC5g==", "dev": true, "requires": { - "@lerna/package": "5.0.0", - "@lerna/validation-error": "5.0.0", + "@lerna/package": "5.1.4", + "@lerna/validation-error": "5.1.4", "cosmiconfig": "^7.0.0", "dedent": "^0.7.0", "dot-prop": "^6.0.1", "glob-parent": "^5.1.1", "globby": "^11.0.2", "load-json-file": "^6.2.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "p-map": "^4.0.0", "resolve-from": "^5.0.0", "write-json-file": "^4.3.0" @@ -19677,45 +20086,45 @@ } }, "@lerna/prompt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-5.0.0.tgz", - "integrity": "sha512-cq2k04kOPY1yuJNHJn4qfBDDrCi9PF4Q228JICa6bxaONRf/C/TRsEQXHVIdlax8B3l53LnlGv5GECwRuvkQbA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-5.1.4.tgz", + "integrity": "sha512-AiE8NIzh+x2+F0t96M+rfwLtKzBNXjQEWXtBfEcA1eRqanMWUr6ejfmdkoEzXVrMzyY/ugPdWQYbGCI00iF7Tg==", "dev": true, "requires": { "inquirer": "^7.3.3", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" } }, "@lerna/publish": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-5.0.0.tgz", - "integrity": "sha512-QEWFtN8fW1M+YXEQOWb2XBBCT137CrwHYK29ojMXW9HShvSZezf8Q/niH91nZ4kIhWdpOGz4w3rKopsumAM5SA==", - "dev": true, - "requires": { - "@lerna/check-working-tree": "5.0.0", - "@lerna/child-process": "5.0.0", - "@lerna/collect-updates": "5.0.0", - "@lerna/command": "5.0.0", - "@lerna/describe-ref": "5.0.0", - "@lerna/log-packed": "5.0.0", - "@lerna/npm-conf": "5.0.0", - "@lerna/npm-dist-tag": "5.0.0", - "@lerna/npm-publish": "5.0.0", - "@lerna/otplease": "5.0.0", - "@lerna/output": "5.0.0", - "@lerna/pack-directory": "5.0.0", - "@lerna/prerelease-id-from-version": "5.0.0", - "@lerna/prompt": "5.0.0", - "@lerna/pulse-till-done": "5.0.0", - "@lerna/run-lifecycle": "5.0.0", - "@lerna/run-topologically": "5.0.0", - "@lerna/validation-error": "5.0.0", - "@lerna/version": "5.0.0", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-5.1.4.tgz", + "integrity": "sha512-hbFAwOlyUR4AUBd7qTQXXVKgaxTS4Mz4Kkjxz8g7jtqo+T0KvU3JbfwDqxOiCwcDk+qkrBbkwbvc27jcObSwkw==", + "dev": true, + "requires": { + "@lerna/check-working-tree": "5.1.4", + "@lerna/child-process": "5.1.4", + "@lerna/collect-updates": "5.1.4", + "@lerna/command": "5.1.4", + "@lerna/describe-ref": "5.1.4", + "@lerna/log-packed": "5.1.4", + "@lerna/npm-conf": "5.1.4", + "@lerna/npm-dist-tag": "5.1.4", + "@lerna/npm-publish": "5.1.4", + "@lerna/otplease": "5.1.4", + "@lerna/output": "5.1.4", + "@lerna/pack-directory": "5.1.4", + "@lerna/prerelease-id-from-version": "5.1.4", + "@lerna/prompt": "5.1.4", + "@lerna/pulse-till-done": "5.1.4", + "@lerna/run-lifecycle": "5.1.4", + "@lerna/run-topologically": "5.1.4", + "@lerna/validation-error": "5.1.4", + "@lerna/version": "5.1.4", "fs-extra": "^9.1.0", "libnpmaccess": "^4.0.1", "npm-package-arg": "^8.1.0", "npm-registry-fetch": "^9.0.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "p-map": "^4.0.0", "p-pipe": "^3.1.0", "pacote": "^13.4.1", @@ -19723,114 +20132,114 @@ } }, "@lerna/pulse-till-done": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-5.0.0.tgz", - "integrity": "sha512-qFeVybGIZbQSWKasWIzZmHsvCQMC/AwTz5B44a0zTt5eSNQuI65HRpKKUgmFFu/Jzd7u+yp7eP+NQ53gjOcQlQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-5.1.4.tgz", + "integrity": "sha512-zFPzv6cY0OcqtcR91ueZqd+ulTLE4vPk9l6iPAfefgqh6w0E6hSmG6J9RmYE3gaMHSFJdvYHb/yyTPLF32J9lg==", "dev": true, "requires": { - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" } }, "@lerna/query-graph": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-5.0.0.tgz", - "integrity": "sha512-C/HXssBI8DVsZ/7IDW6JG9xhoHtWywi3L5oZB9q84MBYpQ9otUv6zbB+K4JCj7w9WHcuFWe2T/mc9wsaFuvB5g==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-5.1.4.tgz", + "integrity": "sha512-G8DYNqp5ISbbMjEJhGst1GHk59zO18IG9oaVSK14M7iF3qCLtg0iJ1Do4LDNpda3EF8PrLOx2mrNM5MBcGMjEg==", "dev": true, "requires": { - "@lerna/package-graph": "5.0.0" + "@lerna/package-graph": "5.1.4" } }, "@lerna/resolve-symlink": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-5.0.0.tgz", - "integrity": "sha512-O1EMQh3O3nKjLyI2guCCaxmi9xzZXpiMZhrz2ki5ENEDB2N1+f7cZ2THT0lEOIkLRuADI6hrzoN1obJ+TTk+KQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-5.1.4.tgz", + "integrity": "sha512-hpnaX5tznAtbQXlyc92kJiywdTnnbCf6wihSZwDiVnVgXuHJ3LvmjN677h9A0jobY6KdTT+wIoAHpJuZHj60vQ==", "dev": true, "requires": { "fs-extra": "^9.1.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "read-cmd-shim": "^2.0.0" } }, "@lerna/rimraf-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-5.0.0.tgz", - "integrity": "sha512-hWJg/13CiSUrWWEek3B/A1mkvBbcPvG5z69/Ugyerdpzlw44ubf02MAZ0/kXPJjkICI2hMrS07YotQ60LdYpCw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-5.1.4.tgz", + "integrity": "sha512-WvHm4gE1/HWbI4gCjJw3clPT+FRq2Ob9I9EDbfw4c307MNT4kW4bJU2mt0nyv/uwYhUkTG+GQVrlt+Dtcif77g==", "dev": true, "requires": { - "@lerna/child-process": "5.0.0", - "npmlog": "^4.1.2", + "@lerna/child-process": "5.1.4", + "npmlog": "^6.0.2", "path-exists": "^4.0.0", "rimraf": "^3.0.2" } }, "@lerna/run": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/run/-/run-5.0.0.tgz", - "integrity": "sha512-8nBZstqKSO+7wHlKk1g+iexSYRVVNJq/u5ZbAzBiHNrABtqA6/0G7q9vsAEMsnPZ8ARAUYpwvbfKTipjpWH0VA==", - "dev": true, - "requires": { - "@lerna/command": "5.0.0", - "@lerna/filter-options": "5.0.0", - "@lerna/npm-run-script": "5.0.0", - "@lerna/output": "5.0.0", - "@lerna/profiler": "5.0.0", - "@lerna/run-topologically": "5.0.0", - "@lerna/timer": "5.0.0", - "@lerna/validation-error": "5.0.0", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/run/-/run-5.1.4.tgz", + "integrity": "sha512-iaTioOF66z02Y9ml/Ba0ePpXOwZ+BkODcNXrJbyW8WhraL0fSjyno0FspO1Eu0nG4JMtgCsoEzHNphsk7Wg+7A==", + "dev": true, + "requires": { + "@lerna/command": "5.1.4", + "@lerna/filter-options": "5.1.4", + "@lerna/npm-run-script": "5.1.4", + "@lerna/output": "5.1.4", + "@lerna/profiler": "5.1.4", + "@lerna/run-topologically": "5.1.4", + "@lerna/timer": "5.1.4", + "@lerna/validation-error": "5.1.4", "p-map": "^4.0.0" } }, "@lerna/run-lifecycle": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-5.0.0.tgz", - "integrity": "sha512-36mAm9rC5DSliFShI0Y4ICjgrJXdIIVt7VW9rdbdJ8/XYjRHDzhGPB9Sc1neJOVlGL4DmaArvh5tGgo62KPJYQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-5.1.4.tgz", + "integrity": "sha512-ubmqi1ixebBHSTYS0oK8MoqBoJE7UDrXWTWsv84UrXiPutTffLR8ZQJKlMEcetQVzX9qbjpKbzc+jQWXPWid2A==", "dev": true, "requires": { - "@lerna/npm-conf": "5.0.0", + "@lerna/npm-conf": "5.1.4", "@npmcli/run-script": "^3.0.2", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" } }, "@lerna/run-topologically": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-5.0.0.tgz", - "integrity": "sha512-B2s1N/+r3sfPOLRA2svNk+C52JpXQleMuGap0yhOx5mZzR1M2Lo4vpe9Ody4hCvXQjfdLx/U342fxVmgugUtfQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-5.1.4.tgz", + "integrity": "sha512-MckWfLu/xuRtaThdUgrJC2naumv2LOIiMoJfxCdYpiCrIgq5YrwqOxjQ0awHqQhkvFZ5G91ucBcBEIMsOou1iw==", "dev": true, "requires": { - "@lerna/query-graph": "5.0.0", + "@lerna/query-graph": "5.1.4", "p-queue": "^6.6.2" } }, "@lerna/symlink-binary": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-5.0.0.tgz", - "integrity": "sha512-uYyiiNjkdL1tWf8MDXIIyCa/a2gmYaUxagqMgEZ4wRtOk+PDypDwMUFVop/EQtUWZqG5CAJBJYOztG3DdapTbA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-5.1.4.tgz", + "integrity": "sha512-SNjHxCNTCD0Xfj3CNBTG+3ut4aDAVaq+SrB2ckFNmZ5Z9yFdnX6aP+PBzLD/0q5hj18lGlaJ8iZjD/ubbrgFCA==", "dev": true, "requires": { - "@lerna/create-symlink": "5.0.0", - "@lerna/package": "5.0.0", + "@lerna/create-symlink": "5.1.4", + "@lerna/package": "5.1.4", "fs-extra": "^9.1.0", "p-map": "^4.0.0" } }, "@lerna/symlink-dependencies": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-5.0.0.tgz", - "integrity": "sha512-wlZGOOB87XMy278hpF4fOwGNnjTXf1vJ/cFHIdKsJAiDipyhtnuCiJLBDPh4NzEGb02o4rhaqt8Nl5yWRu9CNA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-5.1.4.tgz", + "integrity": "sha512-SuzylyNs1R5bVRqSCwfbQLdDP83RX8ncQxOy2SSSrScwkzdBCDqDPh4haeADsq2+RoOQBItn1PDfzUCNAWomDA==", "dev": true, "requires": { - "@lerna/create-symlink": "5.0.0", - "@lerna/resolve-symlink": "5.0.0", - "@lerna/symlink-binary": "5.0.0", + "@lerna/create-symlink": "5.1.4", + "@lerna/resolve-symlink": "5.1.4", + "@lerna/symlink-binary": "5.1.4", "fs-extra": "^9.1.0", "p-map": "^4.0.0", "p-map-series": "^2.1.0" } }, "@lerna/temp-write": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/temp-write/-/temp-write-5.0.0.tgz", - "integrity": "sha512-JOkRR6xyASuBy1udyS/VD52Wgywnz7cSKppD+QKIDseNzTq27I9mNmb702BSXNXIdD19lLVQ7q6WoAlpnelnZg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/temp-write/-/temp-write-5.1.4.tgz", + "integrity": "sha512-f+6+ud87pyitM9zAq7GBhB7uoHTcgLJvR3YGv5sNja4jIl3+zdKPDcyxzVyQb38knuRSkGM8NjYOWi4zwcMaGw==", "dev": true, "requires": { "graceful-fs": "^4.1.15", @@ -19841,45 +20250,45 @@ } }, "@lerna/timer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-5.0.0.tgz", - "integrity": "sha512-p2vevkpB6V/b0aR8VyMLDfg0Arp9VvMxcZOEu+IfZ9XKTtnbwjWPHKUOS34x/VGa6bnOIWjE046ixWymOs/fTw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-5.1.4.tgz", + "integrity": "sha512-fhQtqkLxNexPWzhI1WAxZnHIBM8VhChvUJu503u1Rmp2JxhXbTE4Txnu1gPvqlDjdoE6ck0vN5icmfMVRwKc8g==", "dev": true }, "@lerna/validation-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-5.0.0.tgz", - "integrity": "sha512-fu/MhqRXiRQM2cirP/HoSkfwc5XtJ21G60WHv74RnanKBqWEZAUALWa3MQN2sYhVV/FpDW3GLkO008IW5NWzdg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-5.1.4.tgz", + "integrity": "sha512-wys9Fv/bUy7sYXOK9t+V3XSyEHK5tUXwY22nfIDYu416WcSkkE4DI8Q2nTv4nYYOmG2Y7IOhaSenbsPLQ0VqtQ==", "dev": true, "requires": { - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" } }, "@lerna/version": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/version/-/version-5.0.0.tgz", - "integrity": "sha512-M8KvdyG5kR/d3wgg5S46Q2YMf0L9iw9MiumTvlDP4ckysTt+04kS74Vp4+aClgPM4xaoI5OuMrs6wy5ICcd3Pw==", - "dev": true, - "requires": { - "@lerna/check-working-tree": "5.0.0", - "@lerna/child-process": "5.0.0", - "@lerna/collect-updates": "5.0.0", - "@lerna/command": "5.0.0", - "@lerna/conventional-commits": "5.0.0", - "@lerna/github-client": "5.0.0", - "@lerna/gitlab-client": "5.0.0", - "@lerna/output": "5.0.0", - "@lerna/prerelease-id-from-version": "5.0.0", - "@lerna/prompt": "5.0.0", - "@lerna/run-lifecycle": "5.0.0", - "@lerna/run-topologically": "5.0.0", - "@lerna/temp-write": "5.0.0", - "@lerna/validation-error": "5.0.0", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/version/-/version-5.1.4.tgz", + "integrity": "sha512-cYgm1SNdiK129JoWI8WMwjsxaIyeAC1gCaToWk36Tw+BCF3PbkdoTKdneDmJ+7qbX1QrzxsgHTcjwIt4lZPEqQ==", + "dev": true, + "requires": { + "@lerna/check-working-tree": "5.1.4", + "@lerna/child-process": "5.1.4", + "@lerna/collect-updates": "5.1.4", + "@lerna/command": "5.1.4", + "@lerna/conventional-commits": "5.1.4", + "@lerna/github-client": "5.1.4", + "@lerna/gitlab-client": "5.1.4", + "@lerna/output": "5.1.4", + "@lerna/prerelease-id-from-version": "5.1.4", + "@lerna/prompt": "5.1.4", + "@lerna/run-lifecycle": "5.1.4", + "@lerna/run-topologically": "5.1.4", + "@lerna/temp-write": "5.1.4", + "@lerna/validation-error": "5.1.4", "chalk": "^4.1.0", "dedent": "^0.7.0", "load-json-file": "^6.2.0", "minimatch": "^3.0.4", - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "p-map": "^4.0.0", "p-pipe": "^3.1.0", "p-reduce": "^2.1.0", @@ -19890,15 +20299,69 @@ } }, "@lerna/write-log-file": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-5.0.0.tgz", - "integrity": "sha512-kpPNxe9xm36QbCWY7DwO96Na6FpCHzZinJtw6ttBHslIcdR38lZuCp+/2KfJcVsRIPNOsp1VvgP7EZIKiBhgjw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-5.1.4.tgz", + "integrity": "sha512-ISJbkjaSKhJ4d7V90RFvuwDQFq9ZH/KN475KFJr+TBFZTwMiXuBahlq+j8/a+nItejNnuPD4/xlWuzCOuGJORQ==", "dev": true, "requires": { - "npmlog": "^4.1.2", + "npmlog": "^6.0.2", "write-file-atomic": "^3.0.3" } }, + "@mapbox/node-pre-gyp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz", + "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==", + "requires": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "dependencies": { + "are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + } + }, + "npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + } + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -19973,16 +20436,6 @@ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true }, - "are-we-there-yet": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, "builtins": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", @@ -19992,22 +20445,6 @@ "semver": "^7.0.0" } }, - "gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "dev": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - } - }, "hosted-git-info": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", @@ -20028,16 +20465,10 @@ "debug": "4" } }, - "lru-cache": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", - "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", - "dev": true - }, "make-fetch-happen": { - "version": "10.1.7", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.7.tgz", - "integrity": "sha512-J/2xa2+7zlIUKqfyXDCXFpH3ypxO4k3rgkZHPSZkyUYcBT/hM80M3oyKLM/9dVriZFiGeGGS2Ei+0v2zfhqj3Q==", + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz", + "integrity": "sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==", "dev": true, "requires": { "agentkeepalive": "^4.2.1", @@ -20096,18 +20527,6 @@ "proc-log": "^2.0.0" } }, - "npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "dev": true, - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - } - }, "socks-proxy-agent": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", @@ -20170,14 +20589,6 @@ "promise-retry": "^2.0.1", "semver": "^7.3.5", "which": "^2.0.2" - }, - "dependencies": { - "lru-cache": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", - "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", - "dev": true - } } }, "@npmcli/installed-package-contents": { @@ -20211,19 +20622,6 @@ "balanced-match": "^1.0.0" } }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, "minimatch": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", @@ -20346,9 +20744,9 @@ } }, "@octokit/openapi-types": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", - "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.4.0.tgz", + "integrity": "sha512-Npcb7Pv30b33U04jvcD7l75yLU0mxhuX2Xqrn51YyZ5WTkF04bpbxLaZ6GcaTqu03WZQHoO/Gbfp95NGRueDUA==", "dev": true }, "@octokit/plugin-enterprise-rest": { @@ -20358,12 +20756,12 @@ "dev": true }, "@octokit/plugin-paginate-rest": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", - "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.19.0.tgz", + "integrity": "sha512-hQ4Qysg2hNmEMuZeJkvyzM4eSZiTifOKqYAMsW8FnxFKowhuwWICSgBQ9Gn9GpUmgKB7qaf1hFvMjYaTAg5jQA==", "dev": true, "requires": { - "@octokit/types": "^6.34.0" + "@octokit/types": "^6.36.0" } }, "@octokit/plugin-request-log": { @@ -20374,12 +20772,12 @@ "requires": {} }, "@octokit/plugin-rest-endpoint-methods": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", - "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.15.0.tgz", + "integrity": "sha512-Gsw9+Xm56jVhfbJoy4pt6eOOyf8/3K6CAnx1Sl7U2GhZWcg8MR6YgXWnpfdF69S2ViMXLA7nfvTDAsZpFlkLRw==", "dev": true, "requires": { - "@octokit/types": "^6.34.0", + "@octokit/types": "^6.36.0", "deprecation": "^2.3.1" } }, @@ -20421,12 +20819,12 @@ } }, "@octokit/types": { - "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", - "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "version": "6.37.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.37.0.tgz", + "integrity": "sha512-BXWQhFKRkjX4dVW5L2oYa0hzWOAqsEsujXsQLSdepPoDZfYdubrD1KDGpyNldGXtR8QM/WezDcxcIN1UKJMGPA==", "dev": true, "requires": { - "@octokit/openapi-types": "^11.2.0" + "@octokit/openapi-types": "^12.4.0" } }, "@sindresorhus/is": { @@ -20453,27 +20851,27 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true + "devOptional": true }, "@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==" + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" }, "@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==" + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" }, "@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" }, "@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==" }, "@types/accepts": { "version": "1.3.5", @@ -20560,9 +20958,9 @@ "integrity": "sha512-iO2Q6xQOJ5DtOB6wJ2KIetFq9JRTbpzcKTe2aS6CCsa+W9KNWX2yXx9KeB5sY/nBfAWN43LkPg6SFB+ldsW9ZA==" }, "@types/eslint": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", - "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", + "version": "8.4.3", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.3.tgz", + "integrity": "sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==", "requires": { "@types/estree": "*", "@types/json-schema": "*" @@ -20594,9 +20992,9 @@ } }, "@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "version": "4.17.29", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", + "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", "requires": { "@types/node": "*", "@types/qs": "*", @@ -20621,6 +21019,15 @@ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==" }, + "@types/inquirer": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.1.tgz", + "integrity": "sha512-wKW3SKIUMmltbykg4I5JzCVzUhkuD9trD6efAmYgN2MrSntY0SMRQzEnD3mkyJ/rv9NLbTC7g3hKKE86YwEDLw==", + "requires": { + "@types/through": "*", + "rxjs": "^7.2.0" + } + }, "@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -20720,14 +21127,14 @@ } }, "@types/node": { - "version": "17.0.40", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.40.tgz", - "integrity": "sha512-UXdBxNGqTMtm7hCwh9HtncFVLrXoqA3oJW30j6XWp5BH/wu3mVeaxo7cq5benFdBw34HB3XDT2TRPI7rXZ+mDg==" + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" }, "@types/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", "requires": { "@types/node": "*", "form-data": "^3.0.0" @@ -20745,6 +21152,11 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "@types/prettier": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz", + "integrity": "sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==" + }, "@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -20773,6 +21185,14 @@ "@types/node": "*" } }, + "@types/through": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", + "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", + "requires": { + "@types/node": "*" + } + }, "@types/tmp": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.3.tgz", @@ -20797,15 +21217,28 @@ "@types/webidl-conversions": "*" } }, + "@types/yargs": { + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.10.tgz", + "integrity": "sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" + }, "@typescript-eslint/eslint-plugin": { - "version": "5.27.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.27.1.tgz", - "integrity": "sha512-6dM5NKT57ZduNnJfpY81Phe9nc9wolnMCnknb1im6brWi1RYv84nbMS3olJa27B6+irUVV1X/Wb+Am0FjJdGFw==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.29.0.tgz", + "integrity": "sha512-kgTsISt9pM53yRFQmLZ4npj99yGl3x3Pl7z4eA66OuTzAGC4bQB5H5fuLwPnqTKU3yyrrg4MIhjF17UYnL4c0w==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.27.1", - "@typescript-eslint/type-utils": "5.27.1", - "@typescript-eslint/utils": "5.27.1", + "@typescript-eslint/scope-manager": "5.29.0", + "@typescript-eslint/type-utils": "5.29.0", + "@typescript-eslint/utils": "5.29.0", "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", @@ -20815,52 +21248,52 @@ } }, "@typescript-eslint/parser": { - "version": "5.27.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.27.1.tgz", - "integrity": "sha512-7Va2ZOkHi5NP+AZwb5ReLgNF6nWLGTeUJfxdkVUAPPSaAdbWNnFZzLZ4EGGmmiCTg+AwlbE1KyUYTBglosSLHQ==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.29.0.tgz", + "integrity": "sha512-ruKWTv+x0OOxbzIw9nW5oWlUopvP/IQDjB5ZqmTglLIoDTctLlAJpAQFpNPJP/ZI7hTT9sARBosEfaKbcFuECw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.27.1", - "@typescript-eslint/types": "5.27.1", - "@typescript-eslint/typescript-estree": "5.27.1", + "@typescript-eslint/scope-manager": "5.29.0", + "@typescript-eslint/types": "5.29.0", + "@typescript-eslint/typescript-estree": "5.29.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.27.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.27.1.tgz", - "integrity": "sha512-fQEOSa/QroWE6fAEg+bJxtRZJTH8NTskggybogHt4H9Da8zd4cJji76gA5SBlR0MgtwF7rebxTbDKB49YUCpAg==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.29.0.tgz", + "integrity": "sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.27.1", - "@typescript-eslint/visitor-keys": "5.27.1" + "@typescript-eslint/types": "5.29.0", + "@typescript-eslint/visitor-keys": "5.29.0" } }, "@typescript-eslint/type-utils": { - "version": "5.27.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.27.1.tgz", - "integrity": "sha512-+UC1vVUWaDHRnC2cQrCJ4QtVjpjjCgjNFpg8b03nERmkHv9JV9X5M19D7UFMd+/G7T/sgFwX2pGmWK38rqyvXw==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.29.0.tgz", + "integrity": "sha512-JK6bAaaiJozbox3K220VRfCzLa9n0ib/J+FHIwnaV3Enw/TO267qe0pM1b1QrrEuy6xun374XEAsRlA86JJnyg==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.27.1", + "@typescript-eslint/utils": "5.29.0", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.27.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.27.1.tgz", - "integrity": "sha512-LgogNVkBhCTZU/m8XgEYIWICD6m4dmEDbKXESCbqOXfKZxRKeqpiJXQIErv66sdopRKZPo5l32ymNqibYEH/xg==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.29.0.tgz", + "integrity": "sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.27.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.27.1.tgz", - "integrity": "sha512-DnZvvq3TAJ5ke+hk0LklvxwYsnXpRdqUY5gaVS0D4raKtbznPz71UJGnPTHEFo0GDxqLOLdMkkmVZjSpET1hFw==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.29.0.tgz", + "integrity": "sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.27.1", - "@typescript-eslint/visitor-keys": "5.27.1", + "@typescript-eslint/types": "5.29.0", + "@typescript-eslint/visitor-keys": "5.29.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -20869,26 +21302,26 @@ } }, "@typescript-eslint/utils": { - "version": "5.27.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.27.1.tgz", - "integrity": "sha512-mZ9WEn1ZLDaVrhRaYgzbkXBkTPghPFsup8zDbbsYTxC5OmqrFE7skkKS/sraVsLP3TcT3Ki5CSyEFBRkLH/H/w==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.29.0.tgz", + "integrity": "sha512-3Eos6uP1nyLOBayc/VUdKZikV90HahXE5Dx9L5YlSd/7ylQPXhLk1BYb29SDgnBnTp+jmSZUU0QxUiyHgW4p7A==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.27.1", - "@typescript-eslint/types": "5.27.1", - "@typescript-eslint/typescript-estree": "5.27.1", + "@typescript-eslint/scope-manager": "5.29.0", + "@typescript-eslint/types": "5.29.0", + "@typescript-eslint/typescript-estree": "5.29.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.27.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.27.1.tgz", - "integrity": "sha512-xYs6ffo01nhdJgPieyk7HAOpjhTsx7r/oB9LWEhwAXgwn33tkr+W8DI2ChboqhZlC4q3TC6geDYPoiX8ROqyOQ==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.29.0.tgz", + "integrity": "sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.27.1", + "@typescript-eslint/types": "5.29.0", "eslint-visitor-keys": "^3.3.0" } }, @@ -21029,23 +21462,23 @@ } }, "@webpack-cli/configtest": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", - "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", "requires": {} }, "@webpack-cli/info": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", - "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", "requires": { "envinfo": "^7.7.3" } }, "@webpack-cli/serve": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", - "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", "requires": {} }, "@xtuc/ieee754": { @@ -21061,8 +21494,7 @@ "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "accepts": { "version": "1.3.8", @@ -21113,7 +21545,7 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "dev": true, + "devOptional": true, "requires": { "debug": "^4.1.0", "depd": "^1.1.2", @@ -21124,7 +21556,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, + "devOptional": true, "requires": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -21187,7 +21619,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, "requires": { "type-fest": "^0.21.3" }, @@ -21195,8 +21626,7 @@ "type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" } } }, @@ -21235,49 +21665,16 @@ "aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" }, "are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "devOptional": true, "requires": { "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } + "readable-stream": "^3.6.0" } }, "arg": { @@ -21375,7 +21772,7 @@ "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", "requires": { "inherits": "2.0.1" } @@ -21388,9 +21785,9 @@ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" }, "async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, "async-limiter": { "version": "1.0.1", @@ -21489,7 +21886,7 @@ "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "requires": { "ansi-regex": "^2.0.0" } @@ -21497,7 +21894,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==" } } }, @@ -21548,12 +21945,12 @@ "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==" }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" } } }, @@ -21588,7 +21985,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" } } }, @@ -21919,7 +22316,7 @@ "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", "requires": { "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", @@ -21929,7 +22326,7 @@ "read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", "requires": { "find-up": "^1.0.0", "read-pkg": "^1.0.0" @@ -21962,7 +22359,7 @@ "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", "requires": { "is-utf8": "^0.2.0" } @@ -22265,7 +22662,7 @@ "regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "integrity": "sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ==", "requires": { "regenerate": "^1.2.1", "regjsgen": "^0.2.0", @@ -22275,12 +22672,12 @@ "regjsgen": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" + "integrity": "sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g==" }, "regjsparser": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "integrity": "sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw==", "requires": { "jsesc": "~0.5.0" } @@ -22414,7 +22811,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" }, "source-map-support": { "version": "0.4.18", @@ -22504,7 +22901,7 @@ "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==" } } }, @@ -22606,7 +23003,7 @@ "readable-stream": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -22617,7 +23014,7 @@ "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" } } }, @@ -22668,6 +23065,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "requires": { + "side-channel": "^1.0.4" + } } } }, @@ -22692,6 +23097,12 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true } } }, @@ -22729,14 +23140,14 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" }, "browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "version": "4.20.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz", + "integrity": "sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==", "requires": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", + "caniuse-lite": "^1.0.30001349", + "electron-to-chromium": "^1.4.147", "escalade": "^3.1.1", - "node-releases": "^2.0.3", + "node-releases": "^2.0.5", "picocolors": "^1.0.0" } }, @@ -22835,43 +23246,6 @@ "unique-filename": "^1.1.1" }, "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "lru-cache": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", - "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", - "dev": true - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, "ssri": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", @@ -22962,9 +23336,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001346", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001346.tgz", - "integrity": "sha512-q6ibZUO2t88QCIPayP/euuDREq+aMAxFE5S70PkrLh0iTDj/zEhgvJRKC2+CvXY6EWc6oQwUR48lL5vCW6jiXQ==" + "version": "1.0.30001357", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001357.tgz", + "integrity": "sha512-b+KbWHdHePp+ZpNj+RDHFChZmuN+J5EvuQUlee9jOQIUAdhv9uvAZeEtUeLAknXbkiu1uxjQ9NLp1ie894CuWg==" }, "center-align": { "version": "0.1.3", @@ -23002,8 +23376,7 @@ "chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, "chokidar": { "version": "3.5.3", @@ -23033,8 +23406,7 @@ "chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" }, "chrome-trace-event": { "version": "1.0.3", @@ -23057,7 +23429,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true + "devOptional": true }, "cli-boxes": { "version": "2.2.1", @@ -23069,11 +23441,15 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, "requires": { "restore-cursor": "^3.1.0" } }, + "cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==" + }, "cli-table": { "version": "0.3.11", "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", @@ -23086,8 +23462,7 @@ "cli-width": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" }, "cliui": { "version": "7.0.4", @@ -23102,8 +23477,7 @@ "clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" }, "clone-deep": { "version": "4.0.1", @@ -23159,12 +23533,6 @@ "type-is": "^1.6.16" } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "dev": true - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -23181,13 +23549,12 @@ "color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" }, "colorette": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.17.tgz", - "integrity": "sha512-hJo+3Bkn0NCHybn9Tu35fIeoOKGOk5OCC32y4Hz2It+qlCO2Q3DeQ1hRn/tDDMQKRYUEzqsl7jbF6dYKjlE60g==" + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" }, "colors": { "version": "1.0.3", @@ -23216,8 +23583,7 @@ "commander": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", - "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", - "dev": true + "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==" }, "common-ancestor-path": { "version": "1.0.1", @@ -23327,8 +23693,7 @@ "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, "content-disposition": { "version": "0.5.4", @@ -23503,11 +23868,11 @@ "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" }, "core-js-compat": { - "version": "3.22.8", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.8.tgz", - "integrity": "sha512-pQnwg4xtuvc2Bs/5zYQPaEYYSuTxsF7LBWF0SvnVhthZo/Qe+rJpcEekrdNK5DWwDJ0gv0oI9NNX5Mppdy0ctg==", + "version": "3.23.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.2.tgz", + "integrity": "sha512-lrgZvxFwbQp9v7E8mX0rJ+JX7Bvh4eGULZXA1IAyjlsnWvCdw6TF8Tg6xtaSUSJMrSrMaLdpmk+V54LM1dvfOA==", "requires": { - "browserslist": "^4.20.3", + "browserslist": "^4.20.4", "semver": "7.0.0" }, "dependencies": { @@ -23519,9 +23884,9 @@ } }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "cors": { "version": "2.8.5", @@ -23647,7 +24012,7 @@ "type-detect": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=" + "integrity": "sha512-5rqszGVwYgBoDkIm2oUtvkfZMQ0vk29iDMU0W2qCa3rG0vPDNczCMT4hV/bLBgLg8k8ri6+u3Zbt+S/14eMzlA==" } } }, @@ -23671,7 +24036,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", - "dev": true, "requires": { "clone": "^1.0.2" } @@ -23730,7 +24094,7 @@ "resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=" + "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==" } } }, @@ -23745,6 +24109,11 @@ "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true }, + "detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" + }, "dezalgo": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", @@ -23786,7 +24155,7 @@ "readable-stream": { "version": "1.1.14", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -23797,7 +24166,7 @@ "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" } } }, @@ -23845,9 +24214,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "electron-to-chromium": { - "version": "1.4.146", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.146.tgz", - "integrity": "sha512-4eWebzDLd+hYLm4csbyMU2EbBnqhwl8Oe9eF/7CBDPWcRxFmqzx4izxvHH+lofQxzieg8UbB8ZuzNTxeukzfTg==" + "version": "1.4.163", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.163.tgz", + "integrity": "sha512-c9q94pUVqIdc8hyr7jZDB4bNEoNF3QJ7y35lnddMD+mXtiv5GsL1bT/RmfW/KEOmvlNg5Oy1qioiy4tA7e864Q==" }, "elliptic": { "version": "6.5.4", @@ -23975,7 +24344,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true + "devOptional": true }, "envinfo": { "version": "7.8.1", @@ -23986,7 +24355,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true + "devOptional": true }, "error-ex": { "version": "1.3.2", @@ -23997,9 +24366,9 @@ } }, "error-stack-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.3.tgz", - "integrity": "sha512-F9KypcaAvLzI4yXneZzOvzZoqakhbjuAGFK0aLy33tYaDqdu6v+lzrN/TTG/mM48Op624zZZ2RpXRx3wA0+zmg==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", "requires": { "stackframe": "^1.3.4" } @@ -24085,7 +24454,7 @@ "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "requires": { "prelude-ls": "~1.1.2" } @@ -24093,9 +24462,9 @@ } }, "eslint": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.17.0.tgz", - "integrity": "sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.18.0.tgz", + "integrity": "sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==", "dev": true, "requires": { "@eslint/eslintrc": "^1.3.0", @@ -24219,6 +24588,11 @@ "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true }, + "esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" + }, "espree": { "version": "9.3.2", "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", @@ -24305,6 +24679,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, "requires": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -24426,6 +24801,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "requires": { + "side-channel": "^1.0.4" + } } } }, @@ -24478,7 +24861,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, "requires": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -24654,7 +25036,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, "requires": { "escape-string-regexp": "^1.0.5" }, @@ -24662,8 +25043,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" } } }, @@ -24866,7 +25246,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, "requires": { "minipass": "^3.0.0" } @@ -24902,62 +25281,19 @@ "dev": true }, "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", - "dev": true, + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "devOptional": true, "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" } }, "gensync": { @@ -24971,15 +25307,20 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" } }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" + }, "get-pkg-repo": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", @@ -25048,7 +25389,13 @@ "get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "getopts": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz", + "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==" }, "git-raw-commits": { "version": "2.0.11", @@ -25128,16 +25475,36 @@ } }, "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "glob-base": { @@ -25210,6 +25577,14 @@ "dev": true, "requires": { "type-fest": "^0.20.2" + }, + "dependencies": { + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } } }, "globby": { @@ -25370,8 +25745,7 @@ "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, "has-yarn": { "version": "2.1.0", @@ -25426,6 +25800,17 @@ "dev": true, "requires": { "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } } }, "html-escaper": { @@ -25467,7 +25852,7 @@ "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" } } }, @@ -25475,7 +25860,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true + "devOptional": true }, "http-errors": { "version": "2.0.0", @@ -25500,7 +25885,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, + "devOptional": true, "requires": { "@tootallnate/once": "1", "agent-base": "6", @@ -25519,13 +25904,14 @@ "human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true }, "humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "dev": true, + "devOptional": true, "requires": { "ms": "^2.0.0" } @@ -25591,19 +25977,19 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true + "devOptional": true }, "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true + "devOptional": true }, "infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true + "devOptional": true }, "inflation": { "version": "2.0.0", @@ -25645,6 +26031,20 @@ "validate-npm-package-name": "^3.0.0" }, "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "read-package-json": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.2.tgz", @@ -25692,9 +26092,9 @@ } }, "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==" }, "invariant": { "version": "2.2.4", @@ -25817,11 +26217,16 @@ "is-path-inside": "^3.0.2" } }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" + }, "is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true + "devOptional": true }, "is-npm": { "version": "5.0.0", @@ -25888,7 +26293,8 @@ "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true }, "is-text-path": { "version": "1.0.1", @@ -26267,6 +26673,34 @@ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, + "knex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/knex/-/knex-2.1.0.tgz", + "integrity": "sha512-vVsnD6UJdSJy55TvCXfFF9syfwyXNxfE9mvr2hJL/4Obciy2EPGoqjDpgRSlMruHuPWDOeYAG25nyrGvU+jJog==", + "requires": { + "colorette": "2.0.16", + "commander": "^9.1.0", + "debug": "4.3.4", + "escalade": "^3.1.1", + "esm": "^3.2.25", + "get-package-type": "^0.1.0", + "getopts": "2.3.0", + "interpret": "^2.2.0", + "lodash": "^4.17.21", + "pg-connection-string": "2.5.0", + "rechoir": "^0.8.0", + "resolve-from": "^5.0.0", + "tarn": "^3.0.2", + "tildify": "2.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + } + } + }, "koa": { "version": "2.13.4", "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz", @@ -26324,7 +26758,7 @@ "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" } } }, @@ -26426,6 +26860,19 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", "integrity": "sha512-akx5WBKAwMSg36qoHTuMMVncHWctlaDGslJASDYAhoLrzDUDCjZlOngNa/iC6lPm9aA0qk8pN5KnpmbJHSIIQQ==" }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "http-errors": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", @@ -26469,12 +26916,12 @@ "resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=" + "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==" }, "send": { "version": "0.13.2", "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", - "integrity": "sha1-dl52B8gFVFK7pvCwUllTUJhgNt4=", + "integrity": "sha512-cQ0rmXHrdO2Iof08igV2bG/yXWD106ANwBg6DkGQNT2Vsznbgq6T0oAIQboy1GoFsIuy51jCim26aA9tj3Z3Zg==", "requires": { "debug": "~2.2.0", "depd": "~1.1.0", @@ -26493,12 +26940,12 @@ "statuses": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", - "integrity": "sha1-3e1FzBglbVHtQK7BQkidXGECbSg=" + "integrity": "sha512-pVEuxHdSGrt8QmQ3LOZXLhSA6MP/iPqKzZeO6Squ7PNGkA/9MBsSfV0/L+bIxkoDmjF4tZcLpcVq/fkqoHvuKg==" }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" } } }, @@ -26516,7 +26963,7 @@ "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" } } }, @@ -26592,12 +27039,12 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "integrity": "sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w==", "requires": { "source-map": "~0.5.1", "uglify-to-browserify": "~1.0.0", @@ -26607,12 +27054,12 @@ "wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + "integrity": "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==" }, "yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "integrity": "sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A==", "requires": { "camelcase": "^1.0.2", "cliui": "^2.1.0", @@ -26723,7 +27170,7 @@ "resolve-from": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + "integrity": "sha512-qpFcKaXsq8+oRoLilkwyc7zHGF5i9Q2/25NIgLQQ/+VVv9rU4qvr6nXVAw1DsnXJyQkZsR4Ytfbtg5ehfcUssQ==" } } }, @@ -26742,29 +27189,29 @@ "integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==" }, "lerna": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/lerna/-/lerna-5.0.0.tgz", - "integrity": "sha512-dUYmJ7H9k/xHtwKpQWLTNUa1jnFUiW4o4K2LFkRchlIijoIUT4yK/RprIxNvYCrLrEaOdZryvY5UZvSHI2tBxA==", - "dev": true, - "requires": { - "@lerna/add": "5.0.0", - "@lerna/bootstrap": "5.0.0", - "@lerna/changed": "5.0.0", - "@lerna/clean": "5.0.0", - "@lerna/cli": "5.0.0", - "@lerna/create": "5.0.0", - "@lerna/diff": "5.0.0", - "@lerna/exec": "5.0.0", - "@lerna/import": "5.0.0", - "@lerna/info": "5.0.0", - "@lerna/init": "5.0.0", - "@lerna/link": "5.0.0", - "@lerna/list": "5.0.0", - "@lerna/publish": "5.0.0", - "@lerna/run": "5.0.0", - "@lerna/version": "5.0.0", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-5.1.4.tgz", + "integrity": "sha512-WwSbMslPxWSV7ARsGzkhJAFC1uQcuNGgiy2vZho4bpXVC+A7ZLXy8FngDbcAn7hCGC3ZDnl/4jdY6d84j63Y4g==", + "dev": true, + "requires": { + "@lerna/add": "5.1.4", + "@lerna/bootstrap": "5.1.4", + "@lerna/changed": "5.1.4", + "@lerna/clean": "5.1.4", + "@lerna/cli": "5.1.4", + "@lerna/create": "5.1.4", + "@lerna/diff": "5.1.4", + "@lerna/exec": "5.1.4", + "@lerna/import": "5.1.4", + "@lerna/info": "5.1.4", + "@lerna/init": "5.1.4", + "@lerna/link": "5.1.4", + "@lerna/list": "5.1.4", + "@lerna/publish": "5.1.4", + "@lerna/run": "5.1.4", + "@lerna/version": "5.1.4", "import-local": "^3.0.2", - "npmlog": "^4.1.2" + "npmlog": "^6.0.2" } }, "levn": { @@ -26922,12 +27369,6 @@ "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", "integrity": "sha512-De+ZbrMu6eThFti/CSzhRvTKMgQToLxbij58LMfM8JnYDNSOjkjTCIaa8ixglOeGh2nyPlakbt5bJWJ7gvpYlQ==" }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", - "dev": true - }, "lodash.create": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", @@ -27010,25 +27451,6 @@ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0" - } - }, "log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -27063,12 +27485,10 @@ "dev": true }, "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", + "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", + "dev": true }, "make-dir": { "version": "3.1.0", @@ -27094,7 +27514,7 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, + "devOptional": true, "requires": { "agentkeepalive": "^4.1.3", "cacache": "^15.2.0", @@ -27118,7 +27538,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, + "devOptional": true, "requires": { "@gar/promisify": "^1.0.1", "semver": "^7.3.5" @@ -27128,7 +27548,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, + "devOptional": true, "requires": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -27138,7 +27558,7 @@ "version": "15.3.0", "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, + "devOptional": true, "requires": { "@npmcli/fs": "^1.0.0", "@npmcli/move-file": "^1.0.1", @@ -27159,6 +27579,29 @@ "tar": "^6.0.2", "unique-filename": "^1.1.1" } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "devOptional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "devOptional": true, + "requires": { + "yallist": "^4.0.0" + } } } }, @@ -27230,12 +27673,12 @@ "resolve-from": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + "integrity": "sha512-qpFcKaXsq8+oRoLilkwyc7zHGF5i9Q2/25NIgLQQ/+VVv9rU4qvr6nXVAw1DsnXJyQkZsR4Ytfbtg5ehfcUssQ==" }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" } } }, @@ -27489,10 +27932,9 @@ } }, "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.3.tgz", + "integrity": "sha512-N0BOsdFAlNRfmwMhjAsLVWOk7Ljmeb39iqFlsV1At+jqRhSUP9yeof8FyJu4imaJiSUp8vQebWD/guZwGQC8iA==", "requires": { "yallist": "^4.0.0" } @@ -27501,7 +27943,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, + "devOptional": true, "requires": { "minipass": "^3.0.0" } @@ -27510,7 +27952,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "dev": true, + "devOptional": true, "requires": { "encoding": "^0.1.12", "minipass": "^3.1.0", @@ -27522,7 +27964,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, + "devOptional": true, "requires": { "minipass": "^3.0.0" } @@ -27541,7 +27983,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, + "devOptional": true, "requires": { "minipass": "^3.0.0" } @@ -27550,7 +27992,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, + "devOptional": true, "requires": { "minipass": "^3.0.0" } @@ -27559,7 +28001,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, "requires": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -27568,8 +28009,7 @@ "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, "mkdirp-infer-owner": { "version": "2.0.0", @@ -27740,6 +28180,19 @@ "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==" }, + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-mRyN/EsN2SyNhKWykF3eEGhDpeNplMWaW18Bmh76tnOqk5TbELAVwFAYOCmKVssOYFrYvvLMguiA+NXO3ZTuVA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -27780,21 +28233,6 @@ "lodash.create": "3.1.1", "mkdirp": "0.5.1", "supports-color": "3.1.2" - }, - "dependencies": { - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-mRyN/EsN2SyNhKWykF3eEGhDpeNplMWaW18Bmh76tnOqk5TbELAVwFAYOCmKVssOYFrYvvLMguiA+NXO3ZTuVA==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } } }, "ms": { @@ -27822,6 +28260,21 @@ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "requires": { "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "safe-buffer": { @@ -27872,7 +28325,7 @@ "supports-color": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", - "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "integrity": "sha512-F8dvPrZJtNzvDRX26eNXT4a7AecAvTGljmmnI39xEgSpbHKhQ7N0dO/NTxUExd0wuLHp4zbwYY7lvHq0aKpwrA==", "requires": { "has-flag": "^1.0.0" } @@ -27891,9 +28344,9 @@ "dev": true }, "mongodb": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.6.0.tgz", - "integrity": "sha512-1gsxVXmjFTPJ+CkMG9olE4bcVsyY8lBJN9m5B5vj+LZ7wkBqq3PO8RVmNX9GwCBOBz1KV0zM00vPviUearSv7A==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.7.0.tgz", + "integrity": "sha512-HhVar6hsUeMAVlIbwQwWtV36iyjKd9qdhY+s4wcU8K6TOj4Q331iiMy+FoPuxEntDIijTYWivwFJkLv8q/ZgvA==", "requires": { "bson": "^4.6.3", "denque": "^2.0.1", @@ -27936,11 +28389,11 @@ } }, "mongodb-memory-server": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/mongodb-memory-server/-/mongodb-memory-server-8.6.0.tgz", - "integrity": "sha512-4I3qpIN3Ls5Vs8CPIl7SiT/rQUYmpgP27csDqgkSY7fu09mEqT3ieIC7cRhgx8wuRKr3rTotKMP4G1+Qw7+9Kw==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/mongodb-memory-server/-/mongodb-memory-server-8.7.0.tgz", + "integrity": "sha512-xn8RvdqeNfqLsv7LQIFy/VyDLE3AzylddcMGpQzZnVdHVuHEA09m+uGWplU4CkduGyvZTCFP9cbj+kFSX79BDA==", "requires": { - "mongodb-memory-server-core": "8.6.0", + "mongodb-memory-server-core": "8.7.0", "tslib": "^2.4.0" }, "dependencies": { @@ -27952,9 +28405,9 @@ } }, "mongodb-memory-server-core": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/mongodb-memory-server-core/-/mongodb-memory-server-core-8.6.0.tgz", - "integrity": "sha512-vuJfoK1TUPKwmspRxvkMUod34BInHmWF6li3nXlQ9bvaA2Xg4p3GsTkplyuwTBkLgeLL9AwIU0rk3CDwKpym1w==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/mongodb-memory-server-core/-/mongodb-memory-server-core-8.7.0.tgz", + "integrity": "sha512-dYJ+u9ZP4koCcMzxTwAUDxsG92evcJdXt70spMXrRUVQL7PI5Q83yLOHdqKhjevwfzJwyE8pFCGDGU+Qxs/cUA==", "requires": { "@types/tmp": "^0.2.3", "async-mutex": "^0.3.2", @@ -27964,8 +28417,8 @@ "get-port": "^5.1.1", "https-proxy-agent": "^5.0.1", "md5-file": "^5.0.0", - "mongodb": "^4.5.0", - "new-find-package-json": "^1.1.0", + "mongodb": "^4.7.0", + "new-find-package-json": "^2.0.0", "semver": "^7.3.7", "tar-stream": "^2.1.4", "tmp": "^0.2.1", @@ -28023,8 +28476,7 @@ "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "nanoid": { "version": "3.3.3", @@ -28048,21 +28500,18 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "new-find-package-json": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/new-find-package-json/-/new-find-package-json-1.2.0.tgz", - "integrity": "sha512-Z4v/wBxApGh1cCGEhNmq4p8wjDvM6R6vEuYzlAhzOlXBKLJfjyMvwd+ZHR9fyYKVvXfEn4Z3YX6MD470PxpVbQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/new-find-package-json/-/new-find-package-json-2.0.0.tgz", + "integrity": "sha512-lDcBsjBSMlj3LXH2v/FW3txlh2pYTjmbOXPYJD93HI5EwuLzI11tdHSIpUMmfq/IOsldj4Ps8M8flhm+pCK4Ew==", "requires": { - "debug": "^4.3.4", - "tslib": "^2.4.0" - }, - "dependencies": { - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - } + "debug": "^4.3.4" } }, + "node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" + }, "node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -28074,17 +28523,17 @@ "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "requires": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -28096,7 +28545,7 @@ "version": "8.4.1", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "dev": true, + "devOptional": true, "requires": { "env-paths": "^2.2.0", "glob": "^7.1.4", @@ -28110,42 +28559,18 @@ "which": "^2.0.2" }, "dependencies": { - "are-we-there-yet": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "dev": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - } - }, - "npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "dev": true, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "devOptional": true, "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } } } @@ -28159,7 +28584,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, "requires": { "abbrev": "1" } @@ -28197,9 +28621,9 @@ } }, "npm-check-updates": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-13.1.1.tgz", - "integrity": "sha512-f4gLbUJJh5qvkNvrSG3b05y3ZvyZ4Sl3Uk95DSyCjIWwpwmAwzU9dMCA/Gg2AmIKqkH4ml6X9kxcZsu+tAd94g==", + "version": "13.1.5", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-13.1.5.tgz", + "integrity": "sha512-vAVYlrrxJIPH/R5mxMzrNwP33hYflvk7oQqPjPOySCavCFwhXKmfK5sn/rogyebg7cLnECiDxsczGqvTOEBRAA==", "dev": true, "requires": { "chalk": "^4.1.2", @@ -28250,12 +28674,6 @@ "lru-cache": "^7.5.1" } }, - "lru-cache": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", - "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", - "dev": true - }, "minimatch": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", @@ -28309,6 +28727,22 @@ "ignore-walk": "^3.0.3", "npm-bundled": "^1.1.1", "npm-normalize-package-bin": "^1.0.1" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "npm-pick-manifest": { @@ -28341,12 +28775,6 @@ "lru-cache": "^7.5.1" } }, - "lru-cache": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", - "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", - "dev": true - }, "npm-package-arg": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.2.tgz", @@ -28431,6 +28859,29 @@ "unique-filename": "^1.1.1" } }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "make-fetch-happen": { "version": "8.0.14", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", @@ -28471,28 +28922,23 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, "requires": { "path-key": "^3.0.0" } }, "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "devOptional": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" } }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "dev": true - }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -28581,6 +29027,34 @@ "word-wrap": "^1.2.3" } }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + } + } + }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -28623,7 +29097,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, + "devOptional": true, "requires": { "aggregate-error": "^3.0.0" } @@ -28752,19 +29226,6 @@ "semver": "^7.0.0" } }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, "hosted-git-info": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", @@ -28794,16 +29255,10 @@ "minimatch": "^5.0.1" } }, - "lru-cache": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", - "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", - "dev": true - }, "make-fetch-happen": { - "version": "10.1.7", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.7.tgz", - "integrity": "sha512-J/2xa2+7zlIUKqfyXDCXFpH3ypxO4k3rgkZHPSZkyUYcBT/hM80M3oyKLM/9dVriZFiGeGGS2Ei+0v2zfhqj3Q==", + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz", + "integrity": "sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==", "dev": true, "requires": { "agentkeepalive": "^4.2.1", @@ -29003,9 +29458,9 @@ } }, "parse-path": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.3.tgz", - "integrity": "sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.4.tgz", + "integrity": "sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw==", "dev": true, "requires": { "is-ssh": "^1.3.0", @@ -29072,6 +29527,11 @@ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" }, + "pg-connection-string": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" + }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -29162,9 +29622,9 @@ "integrity": "sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==" }, "prettier": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", - "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", "dev": true }, "prettier-linter-helpers": { @@ -29218,13 +29678,13 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true + "devOptional": true }, "promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, + "devOptional": true, "requires": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -29335,6 +29795,19 @@ "ms": "2.0.0" } }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "https-proxy-agent": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", @@ -29380,9 +29853,9 @@ "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" }, "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.10.5", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.5.tgz", + "integrity": "sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ==", "requires": { "side-channel": "^1.0.4" } @@ -29599,7 +30072,7 @@ "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true } } @@ -29619,7 +30092,7 @@ "read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", "dev": true, "requires": { "mute-stream": "~0.0.4" @@ -29641,6 +30114,22 @@ "json-parse-even-better-errors": "^2.3.0", "normalize-package-data": "^3.0.0", "npm-normalize-package-bin": "^1.0.0" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "read-package-json-fast": { @@ -29656,7 +30145,7 @@ "read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, "requires": { "load-json-file": "^4.0.0", @@ -29728,7 +30217,7 @@ "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true } } @@ -29736,7 +30225,7 @@ "read-pkg-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", "dev": true, "requires": { "find-up": "^2.0.0", @@ -29825,11 +30314,11 @@ } }, "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "requires": { - "resolve": "^1.1.6" + "resolve": "^1.20.0" } }, "redent": { @@ -29858,7 +30347,7 @@ "regenerator-runtime": { "version": "0.10.5", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" + "integrity": "sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w==" }, "regenerator-transform": { "version": "0.15.0", @@ -29896,12 +30385,12 @@ } }, "registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", "dev": true, "requires": { - "rc": "^1.2.8" + "rc": "1.2.8" } }, "registry-url": { @@ -29942,7 +30431,7 @@ "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" }, "repeat-element": { "version": "1.1.4", @@ -29952,12 +30441,12 @@ "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" }, "repeating": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", "requires": { "is-finite": "^1.0.0" } @@ -29980,7 +30469,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" }, "require-from-string": { "version": "2.0.2", @@ -29990,14 +30479,14 @@ "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==" }, "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "requires": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.9.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -30025,7 +30514,7 @@ "responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", "dev": true, "requires": { "lowercase-keys": "^1.0.0" @@ -30035,7 +30524,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, "requires": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -30044,8 +30532,8 @@ "retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "devOptional": true }, "reusify": { "version": "1.0.4", @@ -30056,7 +30544,7 @@ "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "integrity": "sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg==", "requires": { "align-text": "^0.1.1" } @@ -30067,13 +30555,27 @@ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "requires": { "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" }, "run-parallel": { "version": "1.2.0", @@ -30168,6 +30670,16 @@ "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "requires": { "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + } } }, "semver-diff": { @@ -30262,8 +30774,7 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "setprototypeof": { "version": "1.2.0", @@ -30299,6 +30810,34 @@ "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "requires": { + "resolve": "^1.1.6" + } + } } }, "shx": { @@ -30418,7 +30957,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "dev": true, + "devOptional": true, "requires": { "agent-base": "^6.0.2", "debug": "^4.3.3", @@ -30459,7 +30998,7 @@ "sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", "optional": true, "requires": { "memory-pager": "^1.0.2" @@ -30523,16 +31062,27 @@ "readable-stream": "^3.0.0" } }, + "sqlite3": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.8.tgz", + "integrity": "sha512-f2ACsbSyb2D1qFFcqIXPfFscLtPVOWJr5GmUzYxf4W+0qelu5MWrR+FAQE1d5IUArEltBrzSDxDORG8P/IkqyQ==", + "requires": { + "@mapbox/node-pre-gyp": "^1.0.0", + "node-addon-api": "^4.2.0", + "node-gyp": "8.x", + "tar": "^6.1.11" + } + }, "sqwish": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/sqwish/-/sqwish-0.2.2.tgz", - "integrity": "sha1-AP4maBBPEii1u37nOe9gEhu8sFc=" + "integrity": "sha512-MyaCOSCiThzFPcXHebkWiiXDDlEzbHtbdJBqos4CkUwiKdCgQU0IOzBJwswhBv2Qg3glj5TxzDxvKobuyB4e8w==" }, "ssri": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, + "devOptional": true, "requires": { "minipass": "^3.1.1" } @@ -30588,7 +31138,7 @@ "strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", "dev": true }, "string_decoder": { @@ -30626,7 +31176,8 @@ "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true }, "strip-indent": { "version": "3.0.0", @@ -30710,7 +31261,6 @@ "version": "6.1.11", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -30744,16 +31294,21 @@ } } }, + "tarn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", + "integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==" + }, "temp-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", "dev": true }, "terser": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.0.tgz", - "integrity": "sha512-JC6qfIEkPBd9j1SMO3Pfn+A6w2kQV54tv+ABQLgZr7dA3k/DL/OBoYSWxzVpZev3J+bUHXfr55L8Mox7AaNo6g==", + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.1.tgz", + "integrity": "sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==", "requires": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", @@ -30823,6 +31378,22 @@ "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", "minimatch": "^3.0.4" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "text-extensions": { @@ -30834,13 +31405,13 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "through2": { "version": "4.0.2", @@ -30851,11 +31422,15 @@ "readable-stream": "3" } }, + "tildify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", + "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, "requires": { "os-tmpdir": "~1.0.2" } @@ -30863,7 +31438,7 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" }, "to-readable-stream": { "version": "1.0.0", @@ -30908,7 +31483,7 @@ "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" + "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==" }, "ts-algebra": { "version": "1.1.1", @@ -30993,13 +31568,12 @@ "type-detect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", - "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=" + "integrity": "sha512-f9Uv6ezcpvCQjJU0Zqbg+65qdcszv3qUQsZfjdRbWiZ7AMenrX1u0lNk9EoWWX6e1F+NULyg27mtdeZ5WhpljA==" }, "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.13.1.tgz", + "integrity": "sha512-hXYyrPFwETT2swFLHeoKtJrvSF/ftG/sA15/8nGaLuaDGfVAaq8DYFpu4yOyV4tzp082WqnTEoMsm3flKMI2FQ==" }, "type-is": { "version": "1.6.18", @@ -31013,7 +31587,7 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, "typedarray-to-buffer": { "version": "3.1.5", @@ -31025,21 +31599,21 @@ } }, "typescript": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz", - "integrity": "sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==" + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" }, "uglify-js": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.0.tgz", - "integrity": "sha512-FEikl6bR30n0T3amyBh3LoiBdqHRy/f4H80+My34HOesOKyHfOsxAPAxOoqC0JUnC1amnO0IwkYC3sko51caSw==", + "version": "3.16.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.16.1.tgz", + "integrity": "sha512-X5BGTIDH8U6IQ1TIRP62YC36k+ULAa1d59BxlWvPUJ1NkW5L3FwcGfEzuVvGmhJFBu0YJ5Ge25tmRISqCmLiRQ==", "dev": true, "optional": true }, "uglify-to-browserify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "integrity": "sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==", "optional": true }, "uid-safe": { @@ -31058,7 +31632,7 @@ "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==" }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", @@ -31088,7 +31662,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, + "devOptional": true, "requires": { "unique-slug": "^2.0.0" } @@ -31097,7 +31671,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, + "devOptional": true, "requires": { "imurmurhash": "^0.1.4" } @@ -31126,7 +31700,7 @@ "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" }, "upath": { "version": "2.0.1", @@ -31167,7 +31741,7 @@ "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", "requires": { "punycode": "1.3.2", "querystring": "0.2.0" @@ -31183,7 +31757,7 @@ "url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", "dev": true, "requires": { "prepend-http": "^2.0.0" @@ -31207,12 +31781,12 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" }, "uuid": { "version": "8.3.2", @@ -31231,12 +31805,12 @@ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" }, "v8-to-istanbul": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.0.tgz", - "integrity": "sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", + "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^1.6.0" } @@ -31253,7 +31827,7 @@ "validate-npm-package-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", "dev": true, "requires": { "builtins": "^1.0.3" @@ -31262,7 +31836,7 @@ "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" }, "walk-up-path": { "version": "1.0.0", @@ -31287,8 +31861,7 @@ "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "requires": { "defaults": "^1.0.3" } @@ -31365,17 +31938,17 @@ } }, "webpack-cli": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", - "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "requires": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.1", - "@webpack-cli/info": "^1.4.1", - "@webpack-cli/serve": "^1.6.1", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", "colorette": "^2.0.14", "commander": "^7.0.0", - "execa": "^5.0.0", + "cross-spawn": "^7.0.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", "interpret": "^2.2.0", @@ -31388,11 +31961,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" }, - "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==" - }, "rechoir": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", @@ -31440,7 +32008,6 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, "requires": { "string-width": "^1.0.2 || 2 || 3 || 4" } @@ -31462,7 +32029,7 @@ "window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + "integrity": "sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==" }, "word-wrap": { "version": "1.2.3", @@ -31472,7 +32039,7 @@ "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, "workerpool": { @@ -31493,7 +32060,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "write-file-atomic": { "version": "3.0.3", @@ -31571,7 +32138,7 @@ "sort-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", "dev": true, "requires": { "is-plain-obj": "^1.0.0" @@ -31710,7 +32277,7 @@ "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "requires": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" diff --git a/package.json b/package.json index 6ee6d7ecc6..1342d17658 100644 --- a/package.json +++ b/package.json @@ -20,14 +20,14 @@ "url": "https://github.com/feathersjs/feathers/issues" }, "engines": { - "node": ">= 12" + "node": ">= 14" }, "scripts": { "install": "lerna bootstrap", "publish": "lerna publish && git commit -am \"chore: Update changelog\" && git push origin", "publish:premajor": "lerna publish premajor --preid pre --pre-dist-tag pre && git commit -am \"chore: Update version and changelog\" && git push origin", "publish:prerelease": "lerna publish prerelease --preid pre --pre-dist-tag pre --dist-tag pre --force-publish && git commit -am \"chore: Update version and changelog\" && git push origin", - "prettier": "npx prettier \"packages/{,!(node_modules)/**/(src|test|generators)/**/}*.ts\" --write", + "prettier": "npx prettier \"packages/{,!(node_modules)/**/(src|test)/**/}*.ts\" --write", "eslint": "eslint \"packages/**/*.ts\" --fix", "lint": "npm run prettier && npm run eslint", "update-dependencies": "ncu -u && lerna exec -- ncu -u -x node-fetch", @@ -44,7 +44,7 @@ "eslint-plugin-prettier": "^4.0.0", "lerna": "^5.0.0", "npm-check-updates": "^13.1.1", - "prettier": "2.6.2", + "prettier": "^2.7.1", "typescript": "^4.7.3" } } diff --git a/packages/adapter-commons/CHANGELOG.md b/packages/adapter-commons/CHANGELOG.md index a3e4f6b388..892150601c 100644 --- a/packages/adapter-commons/CHANGELOG.md +++ b/packages/adapter-commons/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + + +### Features + +* **knex:** Add KnexJS SQL database adapter to core ([#2671](https://github.com/feathersjs/feathers/issues/2671)) ([9380fff](https://github.com/feathersjs/feathers/commit/9380fff58596e8bb90b8bb098d2795b7eadfec20)) + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) **Note:** Version bump only for package @feathersjs/adapter-commons diff --git a/packages/adapter-commons/package.json b/packages/adapter-commons/package.json index 886d5d2142..3e5576ab79 100644 --- a/packages/adapter-commons/package.json +++ b/packages/adapter-commons/package.json @@ -1,6 +1,6 @@ { "name": "@feathersjs/adapter-commons", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "description": "Shared database adapter utility functions", "homepage": "https://feathersjs.com", "keywords": [ @@ -49,9 +49,9 @@ "access": "public" }, "dependencies": { - "@feathersjs/commons": "^5.0.0-pre.23", - "@feathersjs/errors": "^5.0.0-pre.23", - "@feathersjs/feathers": "^5.0.0-pre.23" + "@feathersjs/commons": "^5.0.0-pre.24", + "@feathersjs/errors": "^5.0.0-pre.24", + "@feathersjs/feathers": "^5.0.0-pre.24" }, "devDependencies": { "@types/mocha": "^9.1.1", @@ -63,5 +63,5 @@ "ts-node": "^10.8.1", "typescript": "^4.7.3" }, - "gitHead": "e452e02063e6d8943a9cae2315ab585bc4f82fb6" + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" } diff --git a/packages/adapter-commons/src/service.ts b/packages/adapter-commons/src/service.ts index ce0d2059e1..fb5070fbaa 100644 --- a/packages/adapter-commons/src/service.ts +++ b/packages/adapter-commons/src/service.ts @@ -235,7 +235,7 @@ export abstract class AdapterBase< throw new MethodNotAllowed('Can not patch multiple entries') } - const query = await this.sanitizeQuery(params) + const { $limit, ...query } = await this.sanitizeQuery(params) const payload = await this.sanitizeData(data, params) return this.$patch(id, payload, { @@ -265,7 +265,7 @@ export abstract class AdapterBase< throw new MethodNotAllowed('Can not remove multiple entries') } - const query = await this.sanitizeQuery(params) + const { $limit, ...query } = await this.sanitizeQuery(params) return this.$remove(id, { ...params, diff --git a/packages/adapter-tests/CHANGELOG.md b/packages/adapter-tests/CHANGELOG.md index 56f8545dbc..320edb868b 100644 --- a/packages/adapter-tests/CHANGELOG.md +++ b/packages/adapter-tests/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + +**Note:** Version bump only for package @feathersjs/adapter-tests + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) **Note:** Version bump only for package @feathersjs/adapter-tests diff --git a/packages/adapter-tests/package.json b/packages/adapter-tests/package.json index 57fb5cf0a7..c7d0e90203 100644 --- a/packages/adapter-tests/package.json +++ b/packages/adapter-tests/package.json @@ -1,6 +1,6 @@ { "name": "@feathersjs/adapter-tests", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "description": "Feathers shared database adapter test suite", "homepage": "https://feathersjs.com", "keywords": [ @@ -56,5 +56,5 @@ "ts-node": "^10.8.1", "typescript": "^4.7.3" }, - "gitHead": "e452e02063e6d8943a9cae2315ab585bc4f82fb6" + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" } diff --git a/packages/authentication-client/CHANGELOG.md b/packages/authentication-client/CHANGELOG.md index 112a0e3e7b..8dbdbfe78d 100644 --- a/packages/authentication-client/CHANGELOG.md +++ b/packages/authentication-client/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + +**Note:** Version bump only for package @feathersjs/authentication-client + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) **Note:** Version bump only for package @feathersjs/authentication-client diff --git a/packages/authentication-client/package.json b/packages/authentication-client/package.json index 9b1e4c0516..cb9bfec189 100644 --- a/packages/authentication-client/package.json +++ b/packages/authentication-client/package.json @@ -1,7 +1,7 @@ { "name": "@feathersjs/authentication-client", "description": "The authentication plugin for feathers-client", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "homepage": "https://feathersjs.com", "main": "lib/", "types": "lib/", @@ -52,18 +52,18 @@ "access": "public" }, "dependencies": { - "@feathersjs/authentication": "^5.0.0-pre.23", - "@feathersjs/commons": "^5.0.0-pre.23", - "@feathersjs/errors": "^5.0.0-pre.23", - "@feathersjs/feathers": "^5.0.0-pre.23" + "@feathersjs/authentication": "^5.0.0-pre.24", + "@feathersjs/commons": "^5.0.0-pre.24", + "@feathersjs/errors": "^5.0.0-pre.24", + "@feathersjs/feathers": "^5.0.0-pre.24" }, "devDependencies": { - "@feathersjs/authentication-local": "^5.0.0-pre.23", - "@feathersjs/express": "^5.0.0-pre.23", - "@feathersjs/memory": "^5.0.0-pre.23", - "@feathersjs/rest-client": "^5.0.0-pre.23", - "@feathersjs/socketio": "^5.0.0-pre.23", - "@feathersjs/socketio-client": "^5.0.0-pre.23", + "@feathersjs/authentication-local": "^5.0.0-pre.24", + "@feathersjs/express": "^5.0.0-pre.24", + "@feathersjs/memory": "^5.0.0-pre.24", + "@feathersjs/rest-client": "^5.0.0-pre.24", + "@feathersjs/socketio": "^5.0.0-pre.24", + "@feathersjs/socketio-client": "^5.0.0-pre.24", "@types/mocha": "^9.1.1", "@types/node": "^17.0.40", "axios": "^0.27.2", @@ -72,5 +72,5 @@ "ts-node": "^10.8.1", "typescript": "^4.7.3" }, - "gitHead": "e452e02063e6d8943a9cae2315ab585bc4f82fb6" + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" } diff --git a/packages/authentication-local/CHANGELOG.md b/packages/authentication-local/CHANGELOG.md index b9189f3c60..ede17a5d05 100644 --- a/packages/authentication-local/CHANGELOG.md +++ b/packages/authentication-local/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + + +### Features + +* **authentication-local:** Add passwordHash property resolver ([#2660](https://github.com/feathersjs/feathers/issues/2660)) ([b41279b](https://github.com/feathersjs/feathers/commit/b41279b55eea3771a6fa4983a37be2413287bbc6)) + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) **Note:** Version bump only for package @feathersjs/authentication-local diff --git a/packages/authentication-local/package.json b/packages/authentication-local/package.json index 820a036cae..d02d2e4a57 100644 --- a/packages/authentication-local/package.json +++ b/packages/authentication-local/package.json @@ -1,7 +1,7 @@ { "name": "@feathersjs/authentication-local", "description": "Local authentication strategy for @feathers/authentication", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "homepage": "https://feathersjs.com", "main": "lib/", "types": "lib/", @@ -52,15 +52,16 @@ "access": "public" }, "dependencies": { - "@feathersjs/authentication": "^5.0.0-pre.23", - "@feathersjs/commons": "^5.0.0-pre.23", - "@feathersjs/errors": "^5.0.0-pre.23", - "@feathersjs/feathers": "^5.0.0-pre.23", + "@feathersjs/authentication": "^5.0.0-pre.24", + "@feathersjs/commons": "^5.0.0-pre.24", + "@feathersjs/errors": "^5.0.0-pre.24", + "@feathersjs/feathers": "^5.0.0-pre.24", "bcryptjs": "^2.4.3", "lodash": "^4.17.21" }, "devDependencies": { - "@feathersjs/memory": "^5.0.0-pre.23", + "@feathersjs/memory": "^5.0.0-pre.24", + "@feathersjs/schema": "^5.0.0-pre.24", "@types/bcryptjs": "^2.4.2", "@types/lodash": "^4.14.182", "@types/mocha": "^9.1.1", @@ -70,5 +71,5 @@ "ts-node": "^10.8.1", "typescript": "^4.7.3" }, - "gitHead": "e452e02063e6d8943a9cae2315ab585bc4f82fb6" + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" } diff --git a/packages/authentication-local/src/hooks/hash-password.ts b/packages/authentication-local/src/hooks/hash-password.ts index d79131efa2..acbccf24a5 100644 --- a/packages/authentication-local/src/hooks/hash-password.ts +++ b/packages/authentication-local/src/hooks/hash-password.ts @@ -13,6 +13,12 @@ export interface HashPasswordOptions { strategy?: string } +/** + * @deprecated Use Feathers schema resolvers and the `passwordHash` resolver instead + * @param field + * @param options + * @returns + */ export default function hashPassword(field: string, options: HashPasswordOptions = {}) { if (!field) { throw new Error('The hashPassword hook requires a field name option') diff --git a/packages/authentication-local/src/hooks/protect.ts b/packages/authentication-local/src/hooks/protect.ts index 9c35f7b1d7..51ad69a8e3 100644 --- a/packages/authentication-local/src/hooks/protect.ts +++ b/packages/authentication-local/src/hooks/protect.ts @@ -1,6 +1,10 @@ import omit from 'lodash/omit' import { HookContext, NextFunction } from '@feathersjs/feathers' +/** + * @deprecated For reliable safe data representations use Feathers schema dispatch resolvers. + * See https://dove.docs.feathersjs.com/api/schema/resolvers.html#safe-data-resolvers for more information. + */ export default (...fields: string[]) => { const o = (current: any) => { if (typeof current === 'object' && !Array.isArray(current)) { diff --git a/packages/authentication-local/src/index.ts b/packages/authentication-local/src/index.ts index c2ed48b07d..644fbf0195 100644 --- a/packages/authentication-local/src/index.ts +++ b/packages/authentication-local/src/index.ts @@ -1,5 +1,24 @@ +import { HookContext } from '@feathersjs/feathers' import hashPassword from './hooks/hash-password' import protect from './hooks/protect' +import { LocalStrategy } from './strategy' export const hooks = { hashPassword, protect } -export { LocalStrategy } from './strategy' +export { LocalStrategy } + +/** + * Returns as property resolver that hashes a given plain text password using a Local + * authentication strategy. + * + * @param options The authentication `service` and `strategy` name + * @returns + */ +export const passwordHash = + (options: { service?: string; strategy: string }) => + async >(value: string | undefined, _data: any, context: H) => { + const { app, params } = context + const authService = app.defaultAuthentication(options.service) + const localStrategy = authService.getStrategy(options.strategy) as LocalStrategy + + return localStrategy.hashPassword(value, params) + } diff --git a/packages/authentication-local/test/strategy.test.ts b/packages/authentication-local/test/strategy.test.ts index 65c6884623..f700ae1ed9 100644 --- a/packages/authentication-local/test/strategy.test.ts +++ b/packages/authentication-local/test/strategy.test.ts @@ -1,8 +1,9 @@ import assert from 'assert' import omit from 'lodash/omit' -import { Application } from '@feathersjs/feathers' +import { Application, HookContext } from '@feathersjs/feathers' +import { resolve } from '@feathersjs/schema' -import { LocalStrategy } from '../src' +import { LocalStrategy, passwordHash } from '../src' import { createApplication, ServiceTypes } from './fixture' describe('@feathersjs/authentication-local/strategy', () => { @@ -180,4 +181,18 @@ describe('@feathersjs/authentication-local/strategy', () => { assert.strictEqual(decoded.sub, `${user.id}`) }) + + it('passwordHash property resolver', async () => { + const userResolver = resolve<{ password: string }, HookContext>({ + properties: { + password: passwordHash({ + strategy: 'local' + }) + } + }) + + const resolvedData = await userResolver.resolve({ password: 'supersecret' }, { app } as HookContext) + + assert.notStrictEqual(resolvedData.password, 'supersecret') + }) }) diff --git a/packages/authentication-oauth/CHANGELOG.md b/packages/authentication-oauth/CHANGELOG.md index 1be07d7798..f49305bc6e 100644 --- a/packages/authentication-oauth/CHANGELOG.md +++ b/packages/authentication-oauth/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + + +### Bug Fixes + +* **authentication-oauth:** Fix bug and properly set Grant defaults ([#2659](https://github.com/feathersjs/feathers/issues/2659)) ([cb93bb9](https://github.com/feathersjs/feathers/commit/cb93bb911fd92282424da2db805cd685b7e4a45b)) + + +### Features + +* **cli:** Add typed client to a generated app ([#2669](https://github.com/feathersjs/feathers/issues/2669)) ([5b801b5](https://github.com/feathersjs/feathers/commit/5b801b5017ddc3eaa95622b539f51d605916bc86)) + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) **Note:** Version bump only for package @feathersjs/authentication-oauth diff --git a/packages/authentication-oauth/package.json b/packages/authentication-oauth/package.json index 4186684196..aa30095727 100644 --- a/packages/authentication-oauth/package.json +++ b/packages/authentication-oauth/package.json @@ -1,7 +1,7 @@ { "name": "@feathersjs/authentication-oauth", "description": "oAuth 1 and 2 authentication for Feathers. Powered by Grant.", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "homepage": "https://feathersjs.com", "main": "lib/", "types": "lib/", @@ -53,17 +53,17 @@ "access": "public" }, "dependencies": { - "@feathersjs/authentication": "^5.0.0-pre.23", - "@feathersjs/commons": "^5.0.0-pre.23", - "@feathersjs/errors": "^5.0.0-pre.23", - "@feathersjs/express": "^5.0.0-pre.23", - "@feathersjs/feathers": "^5.0.0-pre.23", + "@feathersjs/authentication": "^5.0.0-pre.24", + "@feathersjs/commons": "^5.0.0-pre.24", + "@feathersjs/errors": "^5.0.0-pre.24", + "@feathersjs/express": "^5.0.0-pre.24", + "@feathersjs/feathers": "^5.0.0-pre.24", "express-session": "^1.17.3", "grant": "^5.4.21", "lodash": "^4.17.21" }, "devDependencies": { - "@feathersjs/memory": "^5.0.0-pre.23", + "@feathersjs/memory": "^5.0.0-pre.24", "@types/express": "^4.17.13", "@types/express-session": "^1.17.4", "@types/lodash": "^4.14.182", @@ -75,5 +75,5 @@ "ts-node": "^10.8.1", "typescript": "^4.7.3" }, - "gitHead": "e452e02063e6d8943a9cae2315ab585bc4f82fb6" + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" } diff --git a/packages/authentication-oauth/src/index.ts b/packages/authentication-oauth/src/index.ts index 3474f7ed33..b72dd322be 100644 --- a/packages/authentication-oauth/src/index.ts +++ b/packages/authentication-oauth/src/index.ts @@ -30,7 +30,6 @@ export const setup = (options: OauthSetupSettings) => (app: Application) => { const { strategyNames } = service // Set up all the defaults - const { prefix = '/oauth' } = oauth.defaults || {} const port = app.get('port') let host = app.get('host') let protocol = 'https' @@ -43,21 +42,18 @@ export const setup = (options: OauthSetupSettings) => (app: Application) => { } } - const grant = defaultsDeep( - { - defaults: { - prefix, - origin: `${oauth?.defaults?.protocol ?? protocol}://${oauth?.defaults?.host ?? host}`, - transport: oauth?.defaults?.transport ?? 'session', - response: ['tokens', 'raw', 'profile'] - } - }, - omit(oauth, ['redirect', 'origins']) - ) + const grant = defaultsDeep({}, omit(oauth, ['redirect', 'origins']), { + defaults: { + prefix: '/oauth', + origin: `${protocol}://${host}`, + transport: 'session', + response: ['tokens', 'raw', 'profile'] + } + }) const getUrl = (url: string) => { const { defaults } = grant - return `${defaults.origin}${prefix}/${url}` + return `${defaults.origin}${defaults.prefix}/${url}` } each(grant, (value, name) => { diff --git a/packages/authentication/CHANGELOG.md b/packages/authentication/CHANGELOG.md index 3ef47867fe..d57b58c110 100644 --- a/packages/authentication/CHANGELOG.md +++ b/packages/authentication/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + + +### Bug Fixes + +* **authentication:** Add safe dispatch data for authentication requests ([#2662](https://github.com/feathersjs/feathers/issues/2662)) ([d8104a1](https://github.com/feathersjs/feathers/commit/d8104a19ee9181e6a5ea81014af29ff9a3c28a8a)) + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) **Note:** Version bump only for package @feathersjs/authentication diff --git a/packages/authentication/package.json b/packages/authentication/package.json index f76b91f508..ff3aa9c77a 100644 --- a/packages/authentication/package.json +++ b/packages/authentication/package.json @@ -1,7 +1,7 @@ { "name": "@feathersjs/authentication", "description": "Add Authentication to your FeathersJS app.", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "homepage": "https://feathersjs.com", "main": "lib/", "types": "lib/", @@ -52,10 +52,11 @@ "access": "public" }, "dependencies": { - "@feathersjs/commons": "^5.0.0-pre.23", - "@feathersjs/errors": "^5.0.0-pre.23", - "@feathersjs/feathers": "^5.0.0-pre.23", - "@feathersjs/transport-commons": "^5.0.0-pre.23", + "@feathersjs/commons": "^5.0.0-pre.24", + "@feathersjs/errors": "^5.0.0-pre.24", + "@feathersjs/feathers": "^5.0.0-pre.24", + "@feathersjs/schema": "^5.0.0-pre.24", + "@feathersjs/transport-commons": "^5.0.0-pre.24", "@types/jsonwebtoken": "^8.5.8", "jsonwebtoken": "^8.5.1", "lodash": "^4.17.21", @@ -63,8 +64,7 @@ "uuid": "^8.3.2" }, "devDependencies": { - "@feathersjs/memory": "^5.0.0-pre.23", - "@feathersjs/schema": "^5.0.0-pre.23", + "@feathersjs/memory": "^5.0.0-pre.24", "@types/lodash": "^4.14.182", "@types/mocha": "^9.1.1", "@types/node": "^17.0.40", @@ -74,5 +74,5 @@ "ts-node": "^10.8.1", "typescript": "^4.7.3" }, - "gitHead": "e452e02063e6d8943a9cae2315ab585bc4f82fb6" + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" } diff --git a/packages/authentication/src/service.ts b/packages/authentication/src/service.ts index 20e412ebe4..9ee690bf3d 100644 --- a/packages/authentication/src/service.ts +++ b/packages/authentication/src/service.ts @@ -5,6 +5,7 @@ import { connection, event } from './hooks' import '@feathersjs/transport-commons' import { createDebug } from '@feathersjs/commons' import { ServiceMethods, ServiceAddons } from '@feathersjs/feathers' +import { resolveDispatch } from '@feathersjs/schema' import jsonwebtoken from 'jsonwebtoken' const debug = createDebug('@feathersjs/authentication/service') @@ -120,12 +121,14 @@ export class AuthenticationService const accessToken = await this.createAccessToken(payload, jwtOptions, params.secret) - return merge({ accessToken }, authResult, { + return { + accessToken, + ...authResult, authentication: { - accessToken, + ...authResult.authentication, payload: jsonwebtoken.decode(accessToken) } - }) + } } /** @@ -182,8 +185,8 @@ export class AuthenticationService } this.hooks({ - create: [connection('login'), event('login')], - remove: [connection('logout'), event('logout')] + create: [resolveDispatch(), connection('login'), event('login')], + remove: [resolveDispatch(), connection('logout'), event('logout')] } as any) this.app.on('disconnect', async (connection) => { diff --git a/packages/authentication/test/jwt.test.ts b/packages/authentication/test/jwt.test.ts index e9df2647e5..526cbe02b4 100644 --- a/packages/authentication/test/jwt.test.ts +++ b/packages/authentication/test/jwt.test.ts @@ -2,6 +2,7 @@ import assert from 'assert' import merge from 'lodash/merge' import { feathers, Application, Service } from '@feathersjs/feathers' import { memory } from '@feathersjs/memory' +import { getDispatch, resolve, resolveDispatch } from '@feathersjs/schema' import { AuthenticationService, JWTStrategy, hooks } from '../src' import { ServerResponse } from 'http' @@ -19,6 +20,16 @@ describe('authentication/jwt', () => { let accessToken: string let payload: any + const userDispatchResolver = resolve({ + converter: async () => { + return { + dispatch: true, + message: 'Hello world' + } + }, + properties: {} + }) + beforeEach(async () => { app = feathers() @@ -51,6 +62,9 @@ describe('authentication/jwt', () => { }) app.service('users').hooks({ + around: { + all: [resolveDispatch(userDispatchResolver)] + }, after: { get: [ (context) => { @@ -119,6 +133,17 @@ describe('authentication/jwt', () => { }) }) + it('resolves safe dispatch data in authentication result', async () => { + const authResult = await app.service('authentication').create({ + strategy: 'jwt', + accessToken + }) + + const dispatch = getDispatch(authResult) + + assert.deepStrictEqual(dispatch.user, { dispatch: true, message: 'Hello world' }) + }) + it('sends disconnect event when connection token expires and removes all connection information', async () => { const connection: any = {} const token: string = await app.service('authentication').createAccessToken( diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md new file mode 100644 index 0000000000..8bf12fcfe3 --- /dev/null +++ b/packages/cli/CHANGELOG.md @@ -0,0 +1,15 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + + +### Features + +* **cli:** Add generators for new Knex SQL database adapter ([#2673](https://github.com/feathersjs/feathers/issues/2673)) ([0fb2c0f](https://github.com/feathersjs/feathers/commit/0fb2c0f629116f71184b8698c383af8cfd149688)) +* **cli:** Add hook generator ([#2667](https://github.com/feathersjs/feathers/issues/2667)) ([24e4bc0](https://github.com/feathersjs/feathers/commit/24e4bc04a67fadee0e6a96a8389d788faba5c305)) +* **cli:** Add support for JavaScript to the new CLI ([#2668](https://github.com/feathersjs/feathers/issues/2668)) ([ebac587](https://github.com/feathersjs/feathers/commit/ebac587f7d00dc7607c3f546352d79f79b89a5d4)) +* **cli:** Add typed client to a generated app ([#2669](https://github.com/feathersjs/feathers/issues/2669)) ([5b801b5](https://github.com/feathersjs/feathers/commit/5b801b5017ddc3eaa95622b539f51d605916bc86)) +* **cli:** Initial Feathers v5 CLI and Pinion generator ([#2578](https://github.com/feathersjs/feathers/issues/2578)) ([7f59ae7](https://github.com/feathersjs/feathers/commit/7f59ae7f1471895ba8a82aa4702f1a23f71b7682)) diff --git a/_templates/package/new/LICENSE.t b/packages/cli/LICENSE similarity index 96% rename from _templates/package/new/LICENSE.t rename to packages/cli/LICENSE index e7a776c184..3f395cc665 100644 --- a/_templates/package/new/LICENSE.t +++ b/packages/cli/LICENSE @@ -1,7 +1,3 @@ ---- -to: packages/<%= name %>/LICENSE ---- - The MIT License (MIT) Copyright (c) 2021 Feathers diff --git a/packages/cli/README.md b/packages/cli/README.md new file mode 100644 index 0000000000..a1d489f9cd --- /dev/null +++ b/packages/cli/README.md @@ -0,0 +1,33 @@ +# @feathersjs/cli + +[![CI](https://github.com/feathersjs/feathers/workflows/CI/badge.svg)](https://github.com/feathersjs/feathers/actions?query=workflow%3ACI) +[![Dependency Status](https://img.shields.io/david/feathersjs/feathers.svg?style=flat-square&path=packages/socketio)](https://david-dm.org/feathersjs/feathers?path=packages/cli) +[![Download Status](https://img.shields.io/npm/dm/@feathersjs/cli.svg?style=flat-square)](https://www.npmjs.com/package/@feathersjs/cli) + +> The command line interface for creating Feathers applications + +## Installation + +``` +npm install -g @feathersjs/cli +``` + +## Usage + +``` +$ mkdir myproject + +$ cd myproject + +$ feathers help +``` + +## Documentation + +Refer to the [Feathers documentation](https://docs.feathersjs.com) for more details. + +## License + +Copyright (c) 2021 [Feathers contributors](https://github.com/feathersjs/feathers/graphs/contributors) + +Licensed under the [MIT license](LICENSE). diff --git a/packages/cli/bin/feathers b/packages/cli/bin/feathers new file mode 100755 index 0000000000..c27794d2fc --- /dev/null +++ b/packages/cli/bin/feathers @@ -0,0 +1,9 @@ +#!/usr/bin/env node +'use strict'; + +const { yargs } = require('@feathershq/pinion') +const { command } = require('../lib') + +const cli = cmd => command(yargs(cmd)).argv + +cli(process.argv.slice(2)); diff --git a/packages/cli/package.json b/packages/cli/package.json new file mode 100644 index 0000000000..514ca800c2 --- /dev/null +++ b/packages/cli/package.json @@ -0,0 +1,86 @@ +{ + "name": "@feathersjs/cli", + "description": "The command line interface for creating Feathers applications", + "version": "5.0.0-pre.24", + "homepage": "https://feathersjs.com", + "main": "lib/", + "bin": { + "feathers": "./bin/feathers" + }, + "keywords": [ + "feathers", + "feathers-plugin" + ], + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/daffl" + }, + "repository": { + "type": "git", + "url": "git://github.com/feathersjs/feathers.git" + }, + "author": { + "name": "Feathers contributors", + "email": "hello@feathersjs.com", + "url": "https://feathersjs.com" + }, + "contributors": [], + "bugs": { + "url": "https://github.com/feathersjs/feathers/issues" + }, + "engines": { + "node": ">= 14" + }, + "files": [ + "CHANGELOG.md", + "LICENSE", + "README.md", + "lib/**", + "bin/**", + "*.d.ts", + "*.js" + ], + "scripts": { + "prepublish": "npm run compile", + "compile": "shx rm -rf lib/ && tsc && shx cp -r src/. lib/", + "mocha": "mocha --timeout 60000 --config ../../.mocharc.json --recursive test/**.test.ts test/**/*.test.ts", + "test": "npm run compile && npm run mocha" + }, + "directories": { + "lib": "lib/cli" + }, + "publishConfig": { + "access": "public" + }, + "dependencies": { + "@feathershq/pinion": "^0.3.3", + "chalk": "^4.0.1", + "lodash": "^4.17.21", + "prettier": "^2.7.1" + }, + "devDependencies": { + "@feathersjs/authentication": "^5.0.0-pre.24", + "@feathersjs/authentication-local": "^5.0.0-pre.24", + "@feathersjs/authentication-oauth": "^5.0.0-pre.24", + "@feathersjs/configuration": "^5.0.0-pre.24", + "@feathersjs/errors": "^5.0.0-pre.24", + "@feathersjs/express": "^5.0.0-pre.24", + "@feathersjs/feathers": "^5.0.0-pre.24", + "@feathersjs/knex": "^5.0.0-pre.24", + "@feathersjs/koa": "^5.0.0-pre.24", + "@feathersjs/mongodb": "^5.0.0-pre.24", + "@feathersjs/schema": "^5.0.0-pre.24", + "@feathersjs/socketio": "^5.0.0-pre.24", + "@feathersjs/transport-commons": "^5.0.0-pre.24", + "@types/mocha": "^9.1.1", + "@types/node": "^17.0.40", + "@types/prettier": "^2.6.3", + "axios": "^0.27.2", + "mocha": "^10.0.0", + "shx": "^0.3.4", + "ts-node": "^10.8.1", + "type-fest": "^2.13.0", + "typescript": "^4.7.3" + } +} diff --git a/packages/cli/src/app/index.ts b/packages/cli/src/app/index.ts new file mode 100644 index 0000000000..07eca6d67f --- /dev/null +++ b/packages/cli/src/app/index.ts @@ -0,0 +1,198 @@ +import { sep } from 'path' +import chalk from 'chalk' +import { + generator, + prompt, + runGenerators, + fromFile, + install, + copyFiles, + toFile, + when +} from '@feathershq/pinion' +import { FeathersBaseContext, FeathersAppInfo, initializeBaseContext, addVersions } from '../commons' +import { generate as authenticationGenerator, prompts as authenticationPrompts } from '../authentication' +import { generate as connectionGenerator, prompts as connectionPrompts } from '../connection' + +export interface AppGeneratorData extends FeathersAppInfo { + /** + * The application name + */ + name: string + /** + * A short description of the app + */ + description: string + /** + * The selected user authentication strategies + */ + authStrategies: string[] + /** + * The database connection string + */ + connectionString: string + /** + * The source folder where files are put + */ + lib: string +} + +export type AppGeneratorContext = FeathersBaseContext & + AppGeneratorData & { + dependencies: string[] + devDependencies: string[] + } + +export type AppGeneratorArguments = FeathersBaseContext & Partial + +export const generate = (ctx: AppGeneratorArguments) => + generator(ctx) + .then((ctx) => ({ + ...ctx, + dependencies: [], + devDependencies: [] + })) + .then( + prompt((ctx) => [ + { + name: 'language', + type: 'list', + message: 'Do you want to use JavaScript or TypeScript?', + when: !ctx.language, + choices: [ + { name: 'TypeScript', value: 'ts' }, + { name: 'JavaScript', value: 'js' } + ] + }, + { + name: 'name', + type: 'input', + when: !ctx.name, + message: 'What is the name of your application?', + default: ctx.cwd.split(sep).pop() + }, + { + name: 'description', + type: 'input', + when: !ctx.description, + message: 'Write a short description' + }, + { + type: 'list', + name: 'framework', + when: !ctx.framework, + message: 'Which HTTP framework do you want to use?', + choices: [ + { value: 'koa', name: `KoaJS ${chalk.grey('(recommended)')}` }, + { value: 'express', name: 'Express' } + ] + }, + { + type: 'checkbox', + name: 'transports', + when: !ctx.transports, + message: 'What APIs do you want to offer?', + choices: [ + { value: 'rest', name: 'HTTP (REST)', checked: true }, + { value: 'websockets', name: 'Real-time', checked: true } + ] + }, + { + name: 'packager', + type: 'list', + when: !ctx.packager, + message: 'Which package manager are you using?', + choices: [ + { value: 'npm', name: 'npm' }, + { value: 'yarn', name: 'Yarn' } + ] + }, + ...connectionPrompts(ctx), + ...authenticationPrompts({ + ...ctx, + service: 'users', + entity: 'user' + }) + ]) + ) + .then(runGenerators(__dirname, 'templates')) + .then(copyFiles(fromFile(__dirname, 'static'), toFile('.'))) + .then(initializeBaseContext()) + .then( + when( + ({ authStrategies }) => authStrategies.length > 0, + async (ctx) => { + const { dependencies } = await connectionGenerator(ctx) + + return { + ...ctx, + dependencies + } + } + ) + ) + .then( + when( + ({ authStrategies }) => authStrategies.length > 0, + async (ctx) => { + const { dependencies } = await authenticationGenerator({ + ...ctx, + service: 'users', + entity: 'user' + }) + + return { + ...ctx, + dependencies + } + } + ) + ) + .then( + install(({ transports, framework, dependencyVersions, dependencies }) => { + const hasSocketio = transports.includes('websockets') + + dependencies.push( + '@feathersjs/feathers', + '@feathersjs/errors', + '@feathersjs/schema', + '@feathersjs/configuration', + '@feathersjs/transport-commons', + '@feathersjs/authentication', + 'winston' + ) + + if (hasSocketio) { + dependencies.push('@feathersjs/socketio') + } + + if (framework === 'koa') { + dependencies.push('@feathersjs/koa', 'koa-static') + } + + if (framework === 'express') { + dependencies.push('@feathersjs/express', 'compression', 'helmet') + } + + return addVersions(dependencies, dependencyVersions) + }) + ) + .then( + install(({ language, framework, devDependencies, dependencyVersions }) => { + devDependencies.push('nodemon', 'axios', 'mocha', 'cross-env') + + if (language === 'ts') { + devDependencies.push( + '@types/mocha', + framework === 'koa' ? '@types/koa-static' : '@types/compression', + '@types/node', + 'nodemon', + 'ts-node', + 'typescript', + 'shx' + ) + } + + return addVersions(devDependencies, dependencyVersions) + }, true) + ) diff --git a/packages/cli/src/app/static/.gitignore b/packages/cli/src/app/static/.gitignore new file mode 100644 index 0000000000..82cf9aa04b --- /dev/null +++ b/packages/cli/src/app/static/.gitignore @@ -0,0 +1,121 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test +.env.production + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* +.sqlite + +lib/ diff --git a/packages/cli/src/app/templates/app.test.tpl.ts b/packages/cli/src/app/templates/app.test.tpl.ts new file mode 100644 index 0000000000..2020bc42b0 --- /dev/null +++ b/packages/cli/src/app/templates/app.test.tpl.ts @@ -0,0 +1,48 @@ +import { generator, toFile } from '@feathershq/pinion' +import { renderSource } from '../../commons' +import { AppGeneratorContext } from '../index' + +const template = ({ lib }: AppGeneratorContext) => + `import assert from 'assert' +import axios from 'axios' +import type { Server } from 'http' +import { app } from '../${lib}/app' + +const port = app.get('port') +const appUrl = \`http://\${app.get('host')}:\${port}\` + +describe('Feathers application tests', () => { + let server: Server + + before(async () => { + server = await app.listen(port) + }) + + after(done => { + server.close(done) + }) + + it('starts and shows the index page', async () => { + const { data } = await axios.get(appUrl) + + assert.ok(data.indexOf('') !== -1) + }) + + it('shows a 404 JSON error', async () => { + try { + await axios.get(\`\${appUrl}/path/to/nowhere\`, { + responseType: 'json' + }) + assert.fail('should never get here') + } catch (error: any) { + const { response } = error + assert.strictEqual(response?.status, 404) + assert.strictEqual(response?.data?.code, 404) + assert.strictEqual(response?.data?.name, 'NotFound') + } + }) +}) +` + +export const generate = (ctx: AppGeneratorContext) => + generator(ctx).then(renderSource(template, toFile('test', 'app.test'))) diff --git a/packages/cli/src/app/templates/app.tpl.ts b/packages/cli/src/app/templates/app.tpl.ts new file mode 100644 index 0000000000..257651d807 --- /dev/null +++ b/packages/cli/src/app/templates/app.tpl.ts @@ -0,0 +1,119 @@ +import { generator, toFile } from '@feathershq/pinion' +import { renderSource } from '../../commons' +import { AppGeneratorContext } from '../index' + +const tsKoaApp = ({ transports }: AppGeneratorContext) => + `import serveStatic from 'koa-static' +import { feathers } from '@feathersjs/feathers' +import configuration from '@feathersjs/configuration' +import { koa, rest, bodyParser, errorHandler, parseAuthentication } from '@feathersjs/koa' +${transports.includes('websockets') ? "import socketio from '@feathersjs/socketio'" : ''} + +import type { Application } from './declarations' +import { configurationSchema } from './schemas/configuration.schema' +import { logErrorHook } from './logger' +import { services } from './services/index' +import { channels } from './channels' + +const app: Application = koa(feathers()) + +// Load our app configuration (see config/ folder) +app.configure(configuration(configurationSchema)) + +// Set up Koa middleware +app.use(serveStatic(app.get('public'))) +app.use(errorHandler()) +app.use(parseAuthentication()) +app.use(bodyParser()) + +// Configure services and transports +app.configure(rest()) +${transports.includes('websockets') ? 'app.configure(socketio())' : ''} +app.configure(services) +app.configure(channels) + +// Register hooks that run on all service methods +app.hooks({ + around: { + all: [ logErrorHook ] + }, + before: {}, + after: {}, + error: {} +}) +// Register application setup and teardown hooks here +app.hooks({ + setup: [], + teardown: [] +}) + +export { app } +` + +const tsExpressApp = ({ transports }: AppGeneratorContext) => + `import compress from 'compression' +import helmet from 'helmet' + +import { feathers } from '@feathersjs/feathers' +import express, { + rest, json, urlencoded, + serveStatic, notFound, errorHandler +} from '@feathersjs/express' +import configuration from '@feathersjs/configuration' +${transports.includes('websockets') ? "import socketio from '@feathersjs/socketio'" : ''} + +import type { Application } from './declarations' +import { configurationSchema } from './schemas/configuration.schema' +import { logger, logErrorHook } from './logger' +import { services } from './services/index' +import { channels } from './channels' + +const app: Application = express(feathers()) + +// Load app configuration +app.configure(configuration(configurationSchema)) +app.use(helmet()) +app.use(compress()) +app.use(json()) +app.use(urlencoded({ extended: true })) +// Host the public folder +app.use('/', serveStatic(app.get('public'))) + +// Configure services and real-time functionality +app.configure(rest()) +${transports.includes('websockets') ? 'app.configure(socketio())' : ''} +app.configure(services) +app.configure(channels) + +// Configure a middleware for 404s and the error handler +app.use(notFound()) +app.use(errorHandler({ logger })) + +// Register hooks that run on all service methods +app.hooks({ + around: { + all: [ logErrorHook ] + }, + before: {}, + after: {}, + error: {} +}) +// Register application setup and teardown hooks here +app.hooks({ + setup: [], + teardown: [] +}) + +export { app } +` + +const template = (ctx: AppGeneratorContext) => + ctx.framework === 'express' ? tsExpressApp(ctx) : tsKoaApp(ctx) + +export const generate = (ctx: AppGeneratorContext) => + generator(ctx).then( + renderSource( + template, + toFile(({ lib }) => lib, 'app') + ) + ) diff --git a/packages/cli/src/app/templates/channels.tpl.ts b/packages/cli/src/app/templates/channels.tpl.ts new file mode 100644 index 0000000000..3e910f5bd2 --- /dev/null +++ b/packages/cli/src/app/templates/channels.tpl.ts @@ -0,0 +1,81 @@ +import { generator, toFile } from '@feathershq/pinion' +import { renderSource } from '../../commons' +import { AppGeneratorContext } from '../index' + +const template = ({ language }: AppGeneratorContext) => + `import '@feathersjs/transport-commons' +import type { Application, HookContext } from './declarations' +import { logger } from './logger' + +export const channels = (app: Application) => { + if(typeof app.channel !== 'function') { + // If no real-time functionality has been configured just return + return + } + + logger.warn('Publishing all events to all authenticated users. See \`channels.${language}\` and https://docs.feathersjs.com/api/channels.html for more information.') + + app.on('connection', (connection: any) => { + // On a new real-time connection, add it to the anonymous channel + app.channel('anonymous').join(connection) + }) + + app.on('login', (authResult: any, { connection }: any) => { + // connection can be undefined if there is no + // real-time connection, e.g. when logging in via REST + if(connection) { + // Obtain the logged in user from the connection + // const user = connection.user + + // The connection is no longer anonymous, remove it + app.channel('anonymous').leave(connection) + + // Add it to the authenticated user channel + app.channel('authenticated').join(connection) + + // Channels can be named anything and joined on any condition + + // E.g. to send real-time events only to admins use + // if(user.isAdmin) { app.channel('admins').join(connection) } + + // If the user has joined e.g. chat rooms + // if(Array.isArray(user.rooms)) user.rooms.forEach(room => app.channel(\`rooms/\${room.id}\`).join(connection)) + + // Easily organize users by email and userid for things like messaging + // app.channel(\`emails/\${user.email}\`).join(connection) + // app.channel(\`userIds/\${user.id}\`).join(connection) + } + }) + + // eslint-disable-next-line no-unused-vars + app.publish((data: any, hook: HookContext) => { + // Here you can add event publishers to channels set up in \`channels.js\` + // To publish only for a specific event use \`app.publish(eventname, () => {})\` + + console.log('Publishing all events to all authenticated users. See \`channels.js\` and https://docs.feathersjs.com/api/channels.html for more information.') // eslint-disable-line + + // e.g. to publish all service events to all authenticated users use + return app.channel('authenticated') + }) + + // Here you can also add service specific event publishers + // e.g. the publish the \`users\` service \`created\` event to the \`admins\` channel + // app.service('users').publish('created', () => app.channel('admins')) + + // With the userid and email organization from above you can easily select involved users + // app.service('messages').publish(() => { + // return [ + // app.channel(\`userIds/\${data.createdBy}\`), + // app.channel(\`emails/\${data.recipientEmail}\`) + // ] + // }) +} +` + +export const generate = (ctx: AppGeneratorContext) => + generator(ctx).then( + renderSource( + template, + toFile(({ lib }) => lib, 'channels') + ) + ) diff --git a/packages/cli/src/app/templates/client.tpl.ts b/packages/cli/src/app/templates/client.tpl.ts new file mode 100644 index 0000000000..f99f042d3e --- /dev/null +++ b/packages/cli/src/app/templates/client.tpl.ts @@ -0,0 +1,27 @@ +import { generator, toFile } from '@feathershq/pinion' +import { renderSource } from '../../commons' +import { AppGeneratorContext } from '../index' + +const template = ({}: AppGeneratorContext) => + `import { feathers, type Service, type TransportConnection } from '@feathersjs/feathers' + +// A mapping of client side services +export interface ServiceTypes { +} + +export const createClient = (connection: TransportConnection) => { + const client = feathers() + + client.configure(connection) + + return client +} +` + +export const generate = async (ctx: AppGeneratorContext) => + generator(ctx).then( + renderSource( + template, + toFile(({ lib }) => lib, 'client') + ) + ) diff --git a/packages/cli/src/app/templates/config.tpl.ts b/packages/cli/src/app/templates/config.tpl.ts new file mode 100644 index 0000000000..bbd16df21f --- /dev/null +++ b/packages/cli/src/app/templates/config.tpl.ts @@ -0,0 +1,21 @@ +import { generator, toFile, writeJSON } from '@feathershq/pinion' +import { AppGeneratorContext } from '../index' + +const defaultConfig = ({}: AppGeneratorContext) => ({ + host: 'localhost', + port: 3030, + public: './public/', + paginate: { + default: 10, + max: 50 + } +}) + +const testConfig = { + port: 8998 +} + +export const generate = (ctx: AppGeneratorContext) => + generator(ctx) + .then(writeJSON(defaultConfig, toFile('config', 'default.json'))) + .then(writeJSON(testConfig, toFile('config', 'test.json'))) diff --git a/packages/cli/src/app/templates/configuration.tpl.ts b/packages/cli/src/app/templates/configuration.tpl.ts new file mode 100644 index 0000000000..fd1d317128 --- /dev/null +++ b/packages/cli/src/app/templates/configuration.tpl.ts @@ -0,0 +1,41 @@ +import { generator, toFile } from '@feathershq/pinion' +import { renderSource } from '../../commons' +import { AppGeneratorContext } from '../index' + +const template = ({}: AppGeneratorContext) => + `import { schema, Ajv } from '@feathersjs/schema' +import type { Infer } from '@feathersjs/schema' +import { authenticationSettingsSchema } from '@feathersjs/authentication' + +export const configurationSchema = schema({ + $id: 'ApplicationConfiguration', + type: 'object', + additionalProperties: false, + required: [ 'host', 'port', 'public', 'paginate' ], + properties: { + host: { type: 'string' }, + port: { type: 'number' }, + public: { type: 'string' }, + authentication: authenticationSettingsSchema, + paginate: { + type: 'object', + additionalProperties: false, + required: [ 'default', 'max' ], + properties: { + default: { type: 'number' }, + max: { type: 'number' } + } + } + } +} as const, new Ajv()) + +export type ConfigurationSchema = Infer +` + +export const generate = (ctx: AppGeneratorContext) => + generator(ctx).then( + renderSource( + template, + toFile(({ lib }) => lib, 'schemas', 'configuration.schema') + ) + ) diff --git a/packages/cli/src/app/templates/declarations.tpl.ts b/packages/cli/src/app/templates/declarations.tpl.ts new file mode 100644 index 0000000000..e064af27c3 --- /dev/null +++ b/packages/cli/src/app/templates/declarations.tpl.ts @@ -0,0 +1,31 @@ +import { generator, toFile, when, renderTemplate } from '@feathershq/pinion' +import { AppGeneratorContext } from '../index' + +const template = ({ framework }: AppGeneratorContext) => + `import { HookContext as FeathersHookContext, NextFunction } from '@feathersjs/feathers' +import { Application as FeathersApplication } from '@feathersjs/${framework}' +import { ConfigurationSchema } from './schemas/configuration.schema' + +export { NextFunction } + +export interface Configuration extends ConfigurationSchema {} + +// A mapping of service names to types. Will be extended in service files. +export interface ServiceTypes {} + +// The application instance type that will be used everywhere else +export type Application = FeathersApplication + +export type HookContext = FeathersHookContext +` + +export const generate = (ctx: AppGeneratorContext) => + generator(ctx).then( + when( + ({ language }) => language === 'ts', + renderTemplate( + template, + toFile(({ lib }) => lib, 'declarations.ts') + ) + ) + ) diff --git a/packages/cli/src/app/templates/index.html.tpl.ts b/packages/cli/src/app/templates/index.html.tpl.ts new file mode 100644 index 0000000000..6f9167ea37 --- /dev/null +++ b/packages/cli/src/app/templates/index.html.tpl.ts @@ -0,0 +1,85 @@ +import { generator, renderTemplate, toFile } from '@feathershq/pinion' +import { AppGeneratorContext } from '../index' + +const template = ({ name, description }: AppGeneratorContext) => + ` + + + ${name} + + + + + +
+

${name}

+ + + + +
+ + +` + +export const generate = (ctx: AppGeneratorContext) => + generator(ctx).then(renderTemplate(template, toFile('public', 'index.html'))) diff --git a/packages/cli/src/app/templates/index.tpl.ts b/packages/cli/src/app/templates/index.tpl.ts new file mode 100644 index 0000000000..8e0e6d66b3 --- /dev/null +++ b/packages/cli/src/app/templates/index.tpl.ts @@ -0,0 +1,23 @@ +import { generator, toFile } from '@feathershq/pinion' +import { renderSource } from '../../commons' +import { AppGeneratorContext } from '../index' + +const template = ({}: AppGeneratorContext) => + `import { app } from './app' +import { logger } from './logger' + +const port = app.get('port') +const host = app.get('host') + +app.listen(port).then(() => { + logger.info(\`Feathers app listening on http://\${host}:\${port}\`) +}) +` + +export const generate = (ctx: AppGeneratorContext) => + generator(ctx).then( + renderSource( + template, + toFile(({ lib }) => lib, 'index') + ) + ) diff --git a/packages/cli/src/app/templates/logger.tpl.ts b/packages/cli/src/app/templates/logger.tpl.ts new file mode 100644 index 0000000000..ac0e7d73be --- /dev/null +++ b/packages/cli/src/app/templates/logger.tpl.ts @@ -0,0 +1,38 @@ +import { generator, toFile } from '@feathershq/pinion' +import { renderSource } from '../../commons' +import { AppGeneratorContext } from '../index' + +const template = ({}: AppGeneratorContext) => + `import { createLogger, format, transports } from 'winston' +import type { HookContext, NextFunction } from './declarations' + +// Configure the Winston logger. For the complete documentation see https://github.com/winstonjs/winston +export const logger = createLogger({ + // To see more detailed errors, change this to 'debug' + level: 'info', + format: format.combine( + format.splat(), + format.simple() + ), + transports: [ + new transports.Console() + ] +}) + +export const logErrorHook = async (context: HookContext, next: NextFunction) => { + try { + await next() + } catch (error) { + logger.error(error) + throw error + } +} +` + +export const generate = (ctx: AppGeneratorContext) => + generator(ctx).then( + renderSource( + template, + toFile(({ lib }) => lib, 'logger') + ) + ) diff --git a/packages/cli/src/app/templates/package.json.tpl.ts b/packages/cli/src/app/templates/package.json.tpl.ts new file mode 100644 index 0000000000..dc65e07c39 --- /dev/null +++ b/packages/cli/src/app/templates/package.json.tpl.ts @@ -0,0 +1,65 @@ +import { generator, toFile, writeJSON } from '@feathershq/pinion' +import { AppGeneratorContext } from '../index' + +const jsPackageJson = (lib: string) => ({ + type: 'module', + scripts: { + start: `node ${lib}`, + dev: `nodemon ${lib}/`, + mocha: 'cross-env NODE_ENV=test mocha test/ --recursive --exit', + test: 'npm run mocha' + } +}) + +const tsPackageJson = (lib: string) => ({ + scripts: { + dev: `nodemon -x ts-node ${lib}/index.ts`, + compile: 'shx rm -rf dist/ && tsc', + start: 'npm run compile && node dist/', + mocha: + 'cross-env NODE_ENV=test mocha test/ --require ts-node/register --recursive --extension .ts --exit', + test: 'npm run mocha' + } +}) + +const packageJson = ({ + name, + description, + language, + packager, + database, + framework, + transports, + lib, + test +}: AppGeneratorContext) => ({ + name, + description, + version: '0.0.0', + homepage: '', + private: true, + keywords: ['feathers'], + author: {}, + contributors: [] as string[], + bugs: {}, + engines: { + node: `>= ${process.version.substring(1)}` + }, + feathers: { + language, + packager, + database, + framework, + transports + }, + directories: { + lib, + test + }, + main: `${lib}/`, + browser: language === 'ts' ? 'dist/client' : `${lib}/client`, + ...(language === 'ts' ? tsPackageJson(lib) : jsPackageJson(lib)) +}) + +export const generate = (ctx: AppGeneratorContext) => + generator(ctx).then(writeJSON(packageJson, toFile('package.json'))) diff --git a/packages/cli/src/app/templates/readme.md.tpl.ts b/packages/cli/src/app/templates/readme.md.tpl.ts new file mode 100644 index 0000000000..16b6e94b0a --- /dev/null +++ b/packages/cli/src/app/templates/readme.md.tpl.ts @@ -0,0 +1,50 @@ +import { generator, renderTemplate, toFile } from '@feathershq/pinion' +import { AppGeneratorContext } from '../index' + +const template = ({ name, description }: AppGeneratorContext) => + `# ${name} + +> ${description} + +## About + +This project uses [Feathers](http://feathersjs.com). An open source framework for building APIs and real-time applications. + +## Getting Started + +1. Make sure you have [NodeJS](https://nodejs.org/) and [npm](https://www.npmjs.com/) installed. +2. Install your dependencies + + \`\`\` + cd path/to/${name} + npm install + \`\`\` + +3. Start your app + + \`\`\` + npm start + \`\`\` + +## Testing + +Run \`npm test\` and all your tests in the \`test/\` directory will be run. + +## Scaffolding + +Feathers has a powerful command line interface. Here are a few things it can do: + +\`\`\` +$ npm install -g @feathersjs/cli # Install Feathers CLI + +$ feathers generate service # Generate a new Service +$ feathers help # Show all commands +\`\`\` + +## Help + +For more information on all the things you can do with Feathers visit [docs.feathersjs.com](http://docs.feathersjs.com). +` + +export const generate = (ctx: AppGeneratorContext) => + generator(ctx).then(renderTemplate(template, toFile('readme.md'))) diff --git a/packages/cli/src/app/templates/services.tpl.ts b/packages/cli/src/app/templates/services.tpl.ts new file mode 100644 index 0000000000..1768a5eba5 --- /dev/null +++ b/packages/cli/src/app/templates/services.tpl.ts @@ -0,0 +1,19 @@ +import { generator, toFile } from '@feathershq/pinion' +import { renderSource } from '../../commons' +import { AppGeneratorContext } from '../index' + +const template = ({}: AppGeneratorContext) => + `import type { Application } from '../declarations' + +export const services = (app: Application) => { + // All services will be registered here +} +` + +export const generate = (ctx: AppGeneratorContext) => + generator(ctx).then( + renderSource( + template, + toFile(({ lib }) => lib, 'services', 'index') + ) + ) diff --git a/packages/cli/src/app/templates/tsconfig.json.tpl.ts b/packages/cli/src/app/templates/tsconfig.json.tpl.ts new file mode 100644 index 0000000000..f4c43be5b4 --- /dev/null +++ b/packages/cli/src/app/templates/tsconfig.json.tpl.ts @@ -0,0 +1,26 @@ +import { generator, toFile, when, writeJSON } from '@feathershq/pinion' +import { AppGeneratorContext } from '../index' + +export const generate = (ctx: AppGeneratorContext) => + generator(ctx).then( + when( + (ctx) => ctx.language === 'ts', + writeJSON( + ({ lib }) => ({ + 'ts-node': { + files: true + }, + compilerOptions: { + target: 'es2020', + module: 'commonjs', + outDir: './dist', + rootDir: `./${lib}`, + strict: true, + esModuleInterop: true + }, + exclude: ['test'] + }), + toFile('tsconfig.json') + ) + ) + ) diff --git a/packages/cli/src/authentication/index.ts b/packages/cli/src/authentication/index.ts new file mode 100644 index 0000000000..8577312216 --- /dev/null +++ b/packages/cli/src/authentication/index.ts @@ -0,0 +1,103 @@ +import chalk from 'chalk' +import { generator, runGenerators, prompt, install } from '@feathershq/pinion' +import { addVersions, FeathersBaseContext, getDatabaseAdapter } from '../commons' +import { generate as serviceGenerator, ServiceGeneratorContext } from '../service/index' + +export interface AuthenticationGeneratorContext extends ServiceGeneratorContext { + service: string + entity: string + authStrategies: string[] + dependencies: string[] +} + +export type AuthenticationGeneratorArguments = FeathersBaseContext & + Partial> + +export const prompts = (ctx: AuthenticationGeneratorArguments) => [ + { + type: 'checkbox', + name: 'authStrategies', + when: !ctx.authStrategies, + message: 'Which authentication methods do you want to use?', + suffix: chalk.grey(' Other methods and providers can be added at any time.'), + choices: [ + { + name: 'Email + Password', + value: 'local', + checked: true + }, + { + name: 'Google', + value: 'google' + }, + { + name: 'Facebook', + value: 'facebook' + }, + { + name: 'Twitter', + value: 'twitter' + }, + { + name: 'GitHub', + value: 'github' + }, + { + name: 'Auth0', + value: 'auth0' + } + ] + }, + { + name: 'service', + type: 'input', + when: !ctx.service, + message: 'What is your authentication service name?', + default: 'users' + }, + { + name: 'entity', + type: 'input', + when: !ctx.entity, + message: 'What is your authenticated entity name?', + suffix: chalk.grey(' Will be available in params (e.g. params.user)'), + default: 'user' + } +] + +export const generate = (ctx: AuthenticationGeneratorArguments) => + generator(ctx) + .then(prompt(prompts)) + .then(async (ctx) => { + const serviceContext = await serviceGenerator({ + ...ctx, + name: ctx.service, + path: ctx.service, + isEntityService: true, + type: getDatabaseAdapter(ctx.feathers.database) + }) + + return { + ...ctx, + ...serviceContext + } + }) + .then(runGenerators(__dirname, 'templates')) + .then((ctx) => { + const dependencies: string[] = [] + + dependencies.push('@feathersjs/authentication-oauth') + + if (ctx.authStrategies.includes('local')) { + dependencies.push('@feathersjs/authentication-local') + } + + if (ctx.dependencies) { + return { + ...ctx, + dependencies: [...ctx.dependencies, ...dependencies] + } + } + + return install(addVersions(dependencies, ctx.dependencyVersions))(ctx) + }) diff --git a/packages/cli/src/authentication/templates/authentication.tpl.ts b/packages/cli/src/authentication/templates/authentication.tpl.ts new file mode 100644 index 0000000000..4e3e74336f --- /dev/null +++ b/packages/cli/src/authentication/templates/authentication.tpl.ts @@ -0,0 +1,53 @@ +import { generator, inject, before, toFile } from '@feathershq/pinion' +import { getSource, renderSource } from '../../commons' +import { AuthenticationGeneratorContext } from '../index' + +const template = ({ authStrategies, feathers }: AuthenticationGeneratorContext) => + `import { AuthenticationService, JWTStrategy } from '@feathersjs/authentication' +import { LocalStrategy } from '@feathersjs/authentication-local' +import { OAuthStrategy } from '@feathersjs/authentication-oauth' +${feathers.framework === 'express' ? `import { expressOauth } from '@feathersjs/authentication-oauth'` : ''} +import type { Application } from './declarations' + +declare module './declarations' { + interface ServiceTypes { + 'authentication': AuthenticationService + } +} + +export const authentication = (app: Application) => { + const authentication = new AuthenticationService(app) + + authentication.register('jwt', new JWTStrategy()) + ${authStrategies + .map( + (strategy) => + ` authentication.register('${strategy}', ${ + strategy === 'local' ? `new LocalStrategy()` : `new OAuthStrategy()` + })` + ) + .join('\n')} + + app.use('authentication', authentication)${ + feathers.framework === 'express' + ? ` + app.configure(expressOauth())` + : '' + } +} +` + +const importTemplate = "import { authentication } from './authentication'" +const configureTemplate = 'app.configure(authentication)' +const toAppFile = toFile(({ lib, language }) => [lib, `app.${language}`]) + +export const generate = (ctx: AuthenticationGeneratorContext) => + generator(ctx) + .then( + renderSource( + template, + toFile(({ lib }) => lib, 'authentication') + ) + ) + .then(inject(getSource(importTemplate), before('import { services } from'), toAppFile)) + .then(inject(getSource(configureTemplate), before('app.configure(services)'), toAppFile)) diff --git a/packages/cli/src/authentication/templates/config.tpl.ts b/packages/cli/src/authentication/templates/config.tpl.ts new file mode 100644 index 0000000000..f59e5dbf31 --- /dev/null +++ b/packages/cli/src/authentication/templates/config.tpl.ts @@ -0,0 +1,51 @@ +import crypto from 'crypto' +import { generator, toFile, mergeJSON } from '@feathershq/pinion' +import { AuthenticationGeneratorContext } from '../index' + +export const generate = (ctx: AuthenticationGeneratorContext) => + generator(ctx).then( + mergeJSON(({ authStrategies }) => { + const authentication: any = { + entity: ctx.entity, + service: ctx.service, + secret: crypto.randomBytes(24).toString('base64'), + authStrategies: ['jwt'], + jwtOptions: { + header: { + typ: 'access' + }, + audience: 'https://yourdomain.com', + algorithm: 'HS256', + expiresIn: '1d' + } + } + + if (authStrategies.includes('local')) { + authentication.authStrategies.push('local') + authentication.local = { + usernameField: 'email', + passwordField: 'password' + } + } + + const oauthStrategies = authStrategies.filter((name) => name !== 'local') + + if (oauthStrategies.length) { + authentication.oauth = oauthStrategies.reduce( + (oauth, name) => { + oauth[name] = { + key: '', + secret: '' + } + + return oauth + }, + { + redirect: '/' + } as any + ) + } + + return { authentication } + }, toFile('config', 'default.json')) + ) diff --git a/packages/cli/src/authentication/templates/declarations.tpl.ts b/packages/cli/src/authentication/templates/declarations.tpl.ts new file mode 100644 index 0000000000..8ac0316ca3 --- /dev/null +++ b/packages/cli/src/authentication/templates/declarations.tpl.ts @@ -0,0 +1,29 @@ +import { generator, inject, before, toFile, when, append } from '@feathershq/pinion' +import { AuthenticationGeneratorContext } from '../index' + +const importTemplate = ({ upperName, schemaPath }: AuthenticationGeneratorContext) => + `import { ${upperName}Result } from './${schemaPath}' +` + +const paramsTemplate = ({ + entity, + upperName +}: AuthenticationGeneratorContext) => `// Add the ${entity} as an optional property to all params +declare module '@feathersjs/feathers' { + interface Params { + ${entity}?: ${upperName}Result + } +} +` + +const toDeclarationFile = toFile(({ lib }) => lib, 'declarations.ts') + +export const generate = (ctx: AuthenticationGeneratorContext) => + generator(ctx) + .then( + when( + (ctx) => ctx.language === 'ts', + inject(importTemplate, before('export { NextFunction }'), toDeclarationFile) + ) + ) + .then(when((ctx) => ctx.language === 'ts', inject(paramsTemplate, append(), toDeclarationFile))) diff --git a/packages/cli/src/authentication/templates/knex.tpl.ts b/packages/cli/src/authentication/templates/knex.tpl.ts new file mode 100644 index 0000000000..b66e16b520 --- /dev/null +++ b/packages/cli/src/authentication/templates/knex.tpl.ts @@ -0,0 +1,59 @@ +import { generator, when, toFile } from '@feathershq/pinion' +import { getDatabaseAdapter, renderSource } from '../../commons' +import { AuthenticationGeneratorContext } from '../index' + +const migrationTemplate = ({ + kebabName, + authStrategies +}: AuthenticationGeneratorContext) => `import type { Knex } from 'knex' + +export async function up(knex: Knex): Promise { + await knex.schema.alterTable('${kebabName}', function (table) { + table.dropColumn('text')${authStrategies + .map((name) => + name === 'local' + ? ` + table.string('email').unique() + table.string('password')` + : ` + table.string('${name}Id')` + ) + .join('\n')} + }) +} + +export async function down(knex: Knex): Promise { + await knex.schema.alterTable('${kebabName}', function (table) { + table.string('text')${authStrategies + .map((name) => + name === 'local' + ? ` + table.dropColumn('email') + table.dropColumn('password')` + : ` + table.dropColumn('${name}Id')` + ) + .join(',\n')} + }) +} +` + +export const generate = (ctx: AuthenticationGeneratorContext) => + generator(ctx).then( + when( + (ctx) => getDatabaseAdapter(ctx.feathers.database) === 'knex', + renderSource( + migrationTemplate, + toFile( + toFile('migrations', () => { + const now = new Date() + const migrationDate = + `${now.getUTCFullYear()}${now.getUTCMonth()}${now.getUTCDay()}` + + `${now.getUTCHours()}${now.getUTCMinutes()}${now.getUTCSeconds() + 1}` + + return `${migrationDate}_authentication` + }) + ) + ) + ) + ) diff --git a/packages/cli/src/authentication/templates/test.tpl.ts b/packages/cli/src/authentication/templates/test.tpl.ts new file mode 100644 index 0000000000..d7bddc5486 --- /dev/null +++ b/packages/cli/src/authentication/templates/test.tpl.ts @@ -0,0 +1,50 @@ +import { generator, toFile } from '@feathershq/pinion' +import { renderSource } from '../../commons' +import { AuthenticationGeneratorContext } from '../index' + +const template = ({ authStrategies, relative, lib }: AuthenticationGeneratorContext) => + `import assert from 'assert'; +import { app } from '${relative}/${lib}/app'; + +describe('authentication', () => { + ${ + authStrategies.includes('local') + ? ` + const userInfo = { + email: 'someone@example.com', + password: 'supersecret' + } + + before(async () => { + try { + await app.service('users').create(userInfo) + } catch (error) { + // Do nothing, it just means the user already exists and can be tested + } + }); + + it('authenticates user and creates accessToken', async () => { + const { user, accessToken } = await app.service('authentication').create({ + strategy: 'local', + ...userInfo + }, {}) + + assert.ok(accessToken, 'Created access token for user') + assert.ok(user, 'Includes user in authentication data') + })` + : '' + } + + it('registered the authentication service', () => { + assert.ok(app.service('authentication')) + }) +}) +` + +export const generate = (ctx: AuthenticationGeneratorContext) => + generator(ctx).then( + renderSource( + template, + toFile(({ test }) => test, 'authentication.test') + ) + ) diff --git a/packages/cli/src/authentication/templates/user.resolver.tpl.ts b/packages/cli/src/authentication/templates/user.resolver.tpl.ts new file mode 100644 index 0000000000..35f87eb08c --- /dev/null +++ b/packages/cli/src/authentication/templates/user.resolver.tpl.ts @@ -0,0 +1,109 @@ +import { generator, toFile } from '@feathershq/pinion' +import { renderSource } from '../../commons' +import { AuthenticationGeneratorContext } from '../index' + +const template = ({ + camelName, + upperName, + relative, + authStrategies, + type, + schemaPath +}: AuthenticationGeneratorContext) => + `import { resolve } from '@feathersjs/schema' +${authStrategies.includes('local') ? `import { passwordHash } from '@feathersjs/authentication-local'` : ''} +import type { HookContext } from '${relative}/declarations' +import type { + ${upperName}Data, + ${upperName}Patch, + ${upperName}Result, + ${upperName}Query, +} from '../${schemaPath}' +import { + ${camelName}DataSchema, + ${camelName}PatchSchema, + ${camelName}ResultSchema, + ${camelName}QuerySchema +} from '../${schemaPath}' + + +// Resolver for the basic data model (e.g. creating new entries) +export const ${camelName}DataResolver = resolve<${upperName}Data, HookContext>({ + schema: ${camelName}DataSchema, + validate: 'before', + properties: { + ${authStrategies.includes('local') ? `password: passwordHash({ strategy: 'local' })` : ''} + } +}) + + +// Resolver for making partial updates +export const ${camelName}PatchResolver = resolve<${upperName}Patch, HookContext>({ + schema: ${camelName}PatchSchema, + validate: 'before', + properties: {} +}) + + +// Resolver for the data that is being returned +export const ${camelName}ResultResolver = resolve<${upperName}Result, HookContext>({ + schema: ${camelName}ResultSchema, + validate: false, + properties: {} +}) + + +// Resolver for the "safe" version that external clients are allowed to see +export const ${camelName}DispatchResolver = resolve<${upperName}Result, HookContext>({ + schema: ${camelName}ResultSchema, + validate: false, + properties: { + // The password should never be visible externally + password: async () => undefined + } +}) + + +// Resolver for allowed query properties +export const ${camelName}QueryResolver = resolve<${upperName}Query, HookContext>({ + schema: ${camelName}QuerySchema, + validate: 'before', + properties: { + // If there is a user (e.g. with authentication), they are only allowed to see their own data + ${type === 'mongodb' ? '_id' : 'id'}: async (value, user, context) => { + if (context.params.user) { + return context.params.user.${type === 'mongodb' ? '_id' : 'id'} + } + + return value + } + } +}) + + +// Export all resolvers in a format that can be used with the resolveAll hook +export const ${camelName}Resolvers = { + result: ${camelName}ResultResolver, + dispatch: ${camelName}DispatchResolver, + data: { + create: ${camelName}DataResolver, + update: ${camelName}DataResolver, + patch: ${camelName}PatchResolver + }, + query: ${camelName}QueryResolver +} +` + +export const generate = (ctx: AuthenticationGeneratorContext) => + generator(ctx).then( + renderSource( + template, + toFile(({ lib, folder, kebabName }: AuthenticationGeneratorContext) => [ + lib, + 'resolvers', + ...folder, + `${kebabName}.resolver` + ]), + { force: true } + ) + ) diff --git a/packages/cli/src/authentication/templates/user.schema.tpl.ts b/packages/cli/src/authentication/templates/user.schema.tpl.ts new file mode 100644 index 0000000000..9043b1f241 --- /dev/null +++ b/packages/cli/src/authentication/templates/user.schema.tpl.ts @@ -0,0 +1,93 @@ +import { generator, toFile } from '@feathershq/pinion' +import { renderSource } from '../../commons' +import { AuthenticationGeneratorContext } from '../index' + +const template = ({ camelName, upperName, authStrategies, type }: AuthenticationGeneratorContext) => + `import { schema, querySyntax } from '@feathersjs/schema' +import type { Infer } from '@feathersjs/schema' + +// Schema for the basic data model (e.g. creating new entries) +export const ${camelName}DataSchema = schema({ + $id: '${upperName}Data', + type: 'object', + additionalProperties: false, + required: [ ${authStrategies.includes('local') ? "'email', 'password'" : ''} ], + properties: { + ${authStrategies + .map((name) => + name === 'local' + ? `email: { + type: 'string' + }, + password: { + type: 'string' + }` + : ` ${name}Id: { + type: 'string' + }` + ) + .join(',\n')} + } +} as const) + +export type ${upperName}Data = Infer + + +// Schema for making partial updates +export const ${camelName}PatchSchema = schema({ + $id: '${upperName}Patch', + type: 'object', + additionalProperties: false, + required: [], + properties: { + ...${camelName}DataSchema.properties + } +} as const) + +export type ${upperName}Patch = Infer + +// Schema for the data that is being returned +export const ${camelName}ResultSchema = schema({ + $id: '${upperName}Result', + type: 'object', + additionalProperties: false, + required: [ '${type === 'mongodb' ? '_id' : 'id'}' ], + properties: { + ...${camelName}DataSchema.properties, + ${type === 'mongodb' ? '_id' : 'id'}: { + type: 'string' + } + } +} as const) + +export type ${upperName}Result = Infer + +// Queries shouldn't allow doing anything with the password +const { password, ...${camelName}QueryProperties } = ${camelName}ResultSchema.properties + +// Schema for allowed query properties +export const ${camelName}QuerySchema = schema({ + $id: '${upperName}Query', + type: 'object', + additionalProperties: false, + properties: { + ...querySyntax(${camelName}QueryProperties) + } +} as const) + +export type ${upperName}Query = Infer +` + +export const generate = (ctx: AuthenticationGeneratorContext) => + generator(ctx).then( + renderSource( + template, + toFile(({ lib, folder, kebabName }: AuthenticationGeneratorContext) => [ + lib, + 'schemas', + ...folder, + `${kebabName}.schema` + ]), + { force: true } + ) + ) diff --git a/packages/cli/src/commons.ts b/packages/cli/src/commons.ts new file mode 100644 index 0000000000..d2dd8a975f --- /dev/null +++ b/packages/cli/src/commons.ts @@ -0,0 +1,187 @@ +import { PackageJson } from 'type-fest' +import { Callable, PinionContext, loadJSON, fromFile, getCallable, renderTemplate } from '@feathershq/pinion' +import * as ts from 'typescript' +import prettier from 'prettier' +import path from 'path' + +export type DependencyVersions = { [key: string]: string } + +/** + * The database types supported by this generator + */ +export type DatabaseType = 'mongodb' | 'mysql' | 'postgresql' | 'sqlite' | 'mssql' + +/** + * Returns the name of the Feathers database adapter for a supported database type + * + * @param database The type of the database + * @returns The name of the adapter + */ +export const getDatabaseAdapter = (database: DatabaseType) => (database === 'mongodb' ? 'mongodb' : 'knex') + +export type FeathersAppInfo = { + /** + * The application language + */ + language: 'ts' | 'js' + /** + * The main database + */ + database: DatabaseType + /** + * The package manager used + */ + packager: 'yarn' | 'npm' + /** + * A list of all chosen transports + */ + transports: ('rest' | 'websockets')[] + /** + * The HTTP framework used + */ + framework: 'koa' | 'express' +} + +export interface AppPackageJson extends PackageJson { + feathers?: FeathersAppInfo +} + +export interface FeathersBaseContext extends PinionContext { + /** + * Information about the Feathers application (like chosen language, database etc.) + * usually taken from `package.json` + */ + feathers: FeathersAppInfo + /** + * The package.json file + */ + pkg: AppPackageJson + /** + * The folder where source files are put + */ + lib: string + /** + * The folder where test files are put + */ + test: string + /** + * The language the app is generated in + */ + language: 'js' | 'ts' + /** + * A list dependencies that should be installed with a certain version. + * Used for installing development dependencies during testing. + */ + dependencyVersions?: DependencyVersions +} + +/** + * Returns dependencies with the versions from the context attached (if available) + * + * @param dependencies The dependencies to install + * @param versions The dependency version list + * @returns A list of dependencies with their versions + */ +export const addVersions = (dependencies: string[], versions: DependencyVersions) => + dependencies.map((dep) => `${dep}@${versions[dep] ? versions[dep] : 'latest'}`) + +/** + * Loads the application package.json and populates information like the library and test directory + * and Feathers app specific information. + * + * @returns The updated context + */ +export const initializeBaseContext = + () => + (ctx: C) => + Promise.resolve(ctx) + .then(loadJSON(fromFile('package.json'), (pkg) => ({ pkg }), {})) + .then( + loadJSON(path.join(__dirname, '..', 'package.json'), (pkg: PackageJson) => ({ + dependencyVersions: { + ...pkg.devDependencies, + ...ctx.dependencyVersions + } + })) + ) + .then((ctx) => ({ + ...ctx, + lib: ctx.pkg?.directories?.lib || 'src', + test: ctx.pkg?.directories?.test || 'test', + language: ctx.language || ctx.pkg?.feathers?.language, + feathers: ctx.pkg?.feathers + })) + +const importRegex = /from '(\..*)'/g +const escapeNewLines = (code: string) => code.replace(/\n\n/g, '\n/* :newline: */') +const restoreNewLines = (code: string) => code.replace(/\/\* :newline: \*\//g, '\n') +const fixLocalImports = (code: string) => code.replace(importRegex, "from '$1.js'") + +/** + * Returns the transpiled and prettified JavaScript for a TypeScript source code + * + * @param typescript The TypeScript source code + * @param options TypeScript transpilation options + * @returns The formatted JavaScript source code + */ +export const getJavaScript = (typescript: string, options: ts.TranspileOptions = {}) => { + const source = escapeNewLines(typescript) + const transpiled = ts.transpileModule(source, { + ...options, + compilerOptions: { + module: ts.ModuleKind.ESNext, + target: ts.ScriptTarget.ES2020, + preserveValueImports: true, + ...options.compilerOptions + } + }) + const code = fixLocalImports(restoreNewLines(transpiled.outputText)) + + return prettier.format(code, { + semi: false, + parser: 'babel', + singleQuote: true + }) +} + +/** + * Render a source file template for the language set in the context. Will do nothing + * it there is no template for the selected language. + * + * @param templates The JavaScript and TypeScript template to render + * @param toFile The target filename without extension (will be added based on language) + * @returns The updated context + */ +export const renderSource = + ( + template: Callable, + toFile: Callable, + options?: { force: boolean } + ) => + async (ctx: C) => { + if (!template) { + return ctx + } + + const { language } = ctx + const fileName = await getCallable(toFile, ctx) + const content = language === 'js' ? getJavaScript(await getCallable(template, ctx)) : template + const renderer = renderTemplate(content, `${fileName}.${language}`, options) + + return renderer(ctx) + } + +/** + * Returns the TypeScript or transpiled JavaScript source code + * + * @param template The source template + * @returns + */ +export const getSource = + (template: Callable) => + async (ctx: T) => { + const { language } = ctx + const source = await getCallable(template, ctx) + + return language === 'js' ? getJavaScript(source) : source + } diff --git a/packages/cli/src/connection/index.ts b/packages/cli/src/connection/index.ts new file mode 100644 index 0000000000..f94cbb4fcb --- /dev/null +++ b/packages/cli/src/connection/index.ts @@ -0,0 +1,109 @@ +import { generator, runGenerator, prompt, install, mergeJSON, toFile } from '@feathershq/pinion' +import chalk from 'chalk' +import { FeathersBaseContext, DatabaseType, getDatabaseAdapter, addVersions } from '../commons' + +export interface ConnectionGeneratorContext extends FeathersBaseContext { + database: DatabaseType + connectionString: string + dependencies: string[] +} + +export type ConnectionGeneratorArguments = FeathersBaseContext & + Partial> + +export const defaultConnectionString = (type: DatabaseType, name: string) => { + const connectionStrings = { + mongodb: `mongodb://localhost:27017/${name}`, + mysql: `mysql://root:@localhost:3306/${name}`, + postgresql: `postgres://postgres:@localhost:5432/${name}`, + sqlite: `${name}.sqlite`, + mssql: `mssql://root:password@localhost:1433/${name}` + } + + return connectionStrings[type] +} + +export const prompts = ({ database, connectionString, pkg }: ConnectionGeneratorArguments) => [ + { + name: 'database', + type: 'list', + when: !database, + message: 'Which database are you connecting to?', + suffix: chalk.grey(' Other databases can be added at any time'), + choices: [ + { value: 'sqlite', name: 'SQLite' }, + { value: 'mongodb', name: 'MongoDB' }, + { value: 'postgresql', name: 'PostgreSQL' }, + { value: 'mysql', name: 'MySQL/MariaDB' }, + { value: 'mssql', name: 'Microsoft SQL' } + ] + }, + { + name: 'connectionString', + type: 'input', + when: !connectionString, + message: 'Enter your database connection string', + default: (answers: { name?: string; database: DatabaseType }) => + defaultConnectionString(answers.database, answers.name || pkg.name) + } +] + +export const DATABASE_CLIENTS = { + mongodb: 'mongodb', + sqlite: 'sqlite3', + postgresql: 'pg', + mysql: 'mysql', + mssql: 'tedious' +} + +export const getDatabaseClient = (database: DatabaseType) => DATABASE_CLIENTS[database] + +export const generate = (ctx: ConnectionGeneratorArguments) => + generator(ctx) + .then(prompt(prompts)) + .then( + runGenerator( + __dirname, + 'templates', + ({ database }) => `${getDatabaseAdapter(database)}.tpl` + ) + ) + .then( + mergeJSON( + ({ connectionString, database }) => + getDatabaseAdapter(database) === 'knex' + ? { + [database]: { + client: getDatabaseClient(database), + connection: connectionString, + ...(database === 'sqlite' ? { useNullAsDefault: true } : {}) + } + } + : { + [database]: connectionString + }, + toFile('config', 'default.json') + ) + ) + .then((ctx: ConnectionGeneratorContext) => { + const dependencies: string[] = [] + const adapter = getDatabaseAdapter(ctx.database) + const dbClient = getDatabaseClient(ctx.database) + + dependencies.push(`@feathersjs/${adapter}`) + + if (adapter === 'knex') { + dependencies.push('knex') + } + + dependencies.push(dbClient) + + if (ctx.dependencies) { + return { + ...ctx, + dependencies: [...ctx.dependencies, ...dependencies] + } + } + + return install(addVersions(dependencies, ctx.dependencyVersions))(ctx) + }) diff --git a/packages/cli/src/connection/templates/knex.tpl.ts b/packages/cli/src/connection/templates/knex.tpl.ts new file mode 100644 index 0000000000..e5ab9c6499 --- /dev/null +++ b/packages/cli/src/connection/templates/knex.tpl.ts @@ -0,0 +1,79 @@ +import { generator, toFile, inject, before, mergeJSON } from '@feathershq/pinion' +import { ConnectionGeneratorContext } from '../index' +import { getSource, renderSource } from '../../commons' + +const template = ({ database }: ConnectionGeneratorContext) => + `import knex from 'knex' +import type { Knex } from 'knex' +import type { Application } from './declarations' + +declare module './declarations' { + interface Configuration { + ${database}Client: Knex + } +} + +export const ${database} = (app: Application) => { + const config = app.get('${database}') + const db = knex(config!) + + app.set('${database}Client', db); +} +` + +const knexfile = ({ lib, language, database }: ConnectionGeneratorContext) => ` +import { app } from './${lib}/app' + +// Load our database connection info from the app configuration +const config = app.get('${database}') + +${language === 'js' ? 'export default config' : 'module.exports = config'} +` + +const configurationTemplate = ({ database }: ConnectionGeneratorContext) => ` ${database}: { + type: 'object', + properties: { + client: { type: 'string' }, + connection: { type: 'string' } + } + },` + +const importTemplate = ({ database }: ConnectionGeneratorContext) => + `import { ${database} } from './${database}'` +const configureTemplate = ({ database }: ConnectionGeneratorContext) => `app.configure(${database})` +const toAppFile = toFile(({ lib, language }) => [lib, `app.${language}`]) + +export const generate = (ctx: ConnectionGeneratorContext) => + generator(ctx) + .then( + renderSource( + template, + toFile(({ lib, database }) => [lib, database]) + ) + ) + .then(renderSource(knexfile, toFile('knexfile'))) + .then( + mergeJSON( + { + scripts: { + migrate: 'knex migrate:latest', + 'migrate:create': 'knex migrate:create', + test: 'cross-env NODE_ENV=test npm run migrate && npm run mocha' + } + }, + toFile('package.json') + ) + ) + .then( + inject( + configurationTemplate, + before('authentication: authenticationSettingsSchema'), + toFile(({ lib, language }) => [ + lib, + 'schemas', + `configuration.schema.${language}` + ]) + ) + ) + .then(inject(getSource(importTemplate), before('import { services } from'), toAppFile)) + .then(inject(getSource(configureTemplate), before('app.configure(services)'), toAppFile)) diff --git a/packages/cli/src/connection/templates/mongodb.tpl.ts b/packages/cli/src/connection/templates/mongodb.tpl.ts new file mode 100644 index 0000000000..61a5a2d38d --- /dev/null +++ b/packages/cli/src/connection/templates/mongodb.tpl.ts @@ -0,0 +1,51 @@ +import { generator, toFile, inject, before } from '@feathershq/pinion' +import { ConnectionGeneratorContext } from '../index' +import { getSource, renderSource } from '../../commons' + +const template = ({}: ConnectionGeneratorContext) => + `import { MongoClient } from 'mongodb' +import type { Db } from 'mongodb' +import type { Application } from './declarations' + +declare module './declarations' { + interface Configuration { + mongodbClient: Promise + } +} + +export const mongodb = (app: Application) => { + const connection = app.get('mongodb') as string + const database = connection.substring(connection.lastIndexOf('/') + 1) + const mongoClient = MongoClient.connect(connection) + .then(client => client.db(database)) + + app.set('mongodbClient', mongoClient) +} +` +const configurationTemplate = ({ database }: ConnectionGeneratorContext) => + ` ${database}: { type: 'string' },` +const importTemplate = "import { mongodb } from './mongodb'" +const configureTemplate = 'app.configure(mongodb)' +const toAppFile = toFile(({ lib, language }) => [lib, `app.${language}`]) + +export const generate = (ctx: ConnectionGeneratorContext) => + generator(ctx) + .then( + renderSource( + template, + toFile(({ lib }) => lib, 'mongodb') + ) + ) + .then( + inject( + configurationTemplate, + before('authentication: authenticationSettingsSchema'), + toFile(({ lib, language }) => [ + lib, + 'schemas', + `configuration.schema.${language}` + ]) + ) + ) + .then(inject(getSource(importTemplate), before('import { services } from'), toAppFile)) + .then(inject(getSource(configureTemplate), before('app.configure(services)'), toAppFile)) diff --git a/packages/cli/src/hook/index.ts b/packages/cli/src/hook/index.ts new file mode 100644 index 0000000000..5427b9c040 --- /dev/null +++ b/packages/cli/src/hook/index.ts @@ -0,0 +1,45 @@ +import { generator, prompt, runGenerators } from '@feathershq/pinion' +import _ from 'lodash' +import { FeathersBaseContext } from '../commons' + +export interface HookGeneratorContext extends FeathersBaseContext { + name: string + camelName: string + kebabName: string + type: 'regular' | 'around' +} + +export const generate = (ctx: HookGeneratorContext) => + generator(ctx) + .then( + prompt(({ type, name }) => [ + { + type: 'input', + name: 'name', + message: 'What is the name of the hook?', + when: !name + }, + { + name: 'type', + type: 'list', + when: !type, + message: 'What kind of hook is it?', + choices: [ + { value: 'around', name: 'Around' }, + { value: 'regular', name: 'Before, After or Error' } + ] + } + ]) + ) + .then((ctx) => { + const { name } = ctx + const kebabName = _.kebabCase(name) + const camelName = _.camelCase(name) + + return { + ...ctx, + kebabName, + camelName + } + }) + .then(runGenerators(__dirname, 'templates')) diff --git a/packages/cli/src/hook/templates/hook.tpl.ts b/packages/cli/src/hook/templates/hook.tpl.ts new file mode 100644 index 0000000000..35ce1bb99d --- /dev/null +++ b/packages/cli/src/hook/templates/hook.tpl.ts @@ -0,0 +1,28 @@ +import { generator, toFile } from '@feathershq/pinion' +import { HookGeneratorContext } from '../index' +import { renderSource } from '../../commons' + +const aroundTemplate = ({ camelName, name }: HookGeneratorContext) => ` +import { HookContext, NextFunction } from '../declarations' + +export const ${camelName} = async (context: HookContext, next: NextFunction) => { + console.log(\`Running hook ${name} on \${context.path}\.\${context.method}\`) + await next() +} +` + +const regularTemplate = ({ + camelName +}: HookGeneratorContext) => `import { HookContext } from '../declarations' + +export const ${camelName} = async (context: HookContext) => { + console.log(\`Running hook ${name} on \${context.path}\.\${context.method}\`) +}` + +export const generate = (ctx: HookGeneratorContext) => + generator(ctx).then( + renderSource( + (ctx) => (ctx.type === 'around' ? aroundTemplate(ctx) : regularTemplate(ctx)), + toFile(({ lib, kebabName }) => [lib, 'hooks', kebabName]) + ) + ) diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts new file mode 100644 index 0000000000..6bc849aa54 --- /dev/null +++ b/packages/cli/src/index.ts @@ -0,0 +1,27 @@ +import { Argv, generator, runGenerator, getContext } from '@feathershq/pinion' +import { FeathersBaseContext, initializeBaseContext } from './commons' + +export const commandRunner = (yarg: any) => { + const ctx = getContext({ + ...yarg.argv + }) + + return generate(ctx) +} + +export const generate = (ctx: FeathersBaseContext) => + generator(ctx) + .then(initializeBaseContext()) + .then(runGenerator(__dirname, (ctx: FeathersBaseContext) => `${ctx._[1]}`, 'index')) + +export const command = (yargs: Argv) => + yargs + .command('generate', 'Run a generator', (yarg) => + yarg + .command('app', 'Generate a new app', commandRunner) + .command('service', 'Generate a service', commandRunner) + .command('connection', 'Connect to a different database', commandRunner) + .command('hook', 'Generate a hook', commandRunner) + ) + .usage('Usage: $0 [options]') + .help() diff --git a/packages/cli/src/service/index.ts b/packages/cli/src/service/index.ts new file mode 100644 index 0000000000..ec1b58e79d --- /dev/null +++ b/packages/cli/src/service/index.ts @@ -0,0 +1,150 @@ +import _ from 'lodash' +import { generator, runGenerator, runGenerators, prompt } from '@feathershq/pinion' + +import { FeathersBaseContext, getDatabaseAdapter } from '../commons' + +export interface ServiceGeneratorContext extends FeathersBaseContext { + /** + * The chosen service name + */ + name: string + /** + * The path the service is registered on + */ + path: string + /** + * The list of subfolders this service is in + */ + folder: string[] + /** + * The `camelCase` service name starting with a lowercase letter + */ + camelName: string + /** + * The `CamelCase` service name starting with an uppercase letter + */ + upperName: string + /** + * The service class name combined as `CamelCaseService` + */ + className: string + /** + * A kebab-cased (filename friendly) version of the service name + */ + kebabName: string + /** + * The actual filename (the last element of the path) + */ + fileName: string + /** + * Indicates how many file paths we should go up to import other things (e.g. `../../`) + */ + relative: string + /** + * The chosen service type + */ + type: 'knex' | 'mongodb' | 'custom' + /** + * Wether this service uses authentication + */ + authentication: boolean + /** + * Set to true if this service is for an authentication entity + */ + isEntityService?: boolean + /** + * The name of the schema file + */ + schemaPath: string + /** + * The name of the resolver file + */ + resolverPath: string +} + +/** + * Parameters the generator is called with + */ +export type ServiceGeneratorArguments = FeathersBaseContext & + Partial> + +export const generate = (ctx: ServiceGeneratorArguments) => + generator(ctx) + .then( + prompt( + ({ name, path, type, authentication, isEntityService }) => [ + { + name: 'name', + type: 'input', + when: !name, + message: 'What is the name of your service?' + }, + { + name: 'path', + type: 'input', + when: !path, + message: 'Which path should the service be registered on?', + default: (answers: ServiceGeneratorArguments) => `${_.kebabCase(answers.name)}` + }, + { + name: 'authentication', + type: 'confirm', + when: authentication === undefined && !isEntityService, + message: 'Does this service require authentication?' + }, + { + name: 'type', + type: 'list', + when: !type, + message: 'What kind of service is it?', + default: getDatabaseAdapter(ctx.feathers.database), + choices: [ + { + value: 'knex', + name: 'SQL' + }, + { + value: 'mongodb', + name: 'MongoDB' + }, + { + value: 'custom', + name: 'A custom service' + } + ] + } + ] + ) + ) + .then(async (ctx) => { + const { name, path, type } = ctx + const kebabName = _.kebabCase(name) + const camelName = _.camelCase(name) + const upperName = _.upperFirst(camelName) + const className = `${upperName}Service` + + const pathElements = path.split('/').filter((el) => el !== '') + const relative = pathElements.map(() => '..').join('/') + const folder = _.initial(pathElements) + const fileName = _.last(pathElements) + const schemaPath = ['schemas', ...folder, `${fileName}.schema`].join('/') + const resolverPath = ['resolvers', ...folder, `${fileName}.resolver`].join('/') + + return { + name, + type, + path, + folder, + fileName, + upperName, + className, + kebabName, + camelName, + relative, + resolverPath, + schemaPath, + ...ctx + } + }) + .then(runGenerators(__dirname, 'templates')) + .then(runGenerator(__dirname, 'type', ({ type }) => `${type}.tpl`)) diff --git a/packages/cli/src/service/templates/client.tpl.ts b/packages/cli/src/service/templates/client.tpl.ts new file mode 100644 index 0000000000..f3a3fd4b18 --- /dev/null +++ b/packages/cli/src/service/templates/client.tpl.ts @@ -0,0 +1,27 @@ +import { generator, inject, toFile, when, after } from '@feathershq/pinion' +import { ServiceGeneratorContext } from '../index' + +const schemaImports = ({ upperName, schemaPath }: ServiceGeneratorContext) => `import type { + ${upperName}Data, + ${upperName}Result, + ${upperName}Query, +} from './${schemaPath}'` +const declarationTemplate = ({ path, upperName }: ServiceGeneratorContext) => + ` '${path}': Service<${upperName}Data, ${upperName}Result, Params<${upperName}Query>>` + +const toClientFile = toFile(({ lib, language }) => [lib, `client.${language}`]) + +export const generate = async (ctx: ServiceGeneratorContext) => + generator(ctx) + .then( + when( + (ctx) => ctx.language === 'ts', + inject(schemaImports, after("from '@feathersjs/feathers'"), toClientFile) + ) + ) + .then( + when( + (ctx) => ctx.language === 'ts', + inject(declarationTemplate, after('export interface ServiceTypes'), toClientFile) + ) + ) diff --git a/packages/cli/src/service/templates/resolver.tpl.ts b/packages/cli/src/service/templates/resolver.tpl.ts new file mode 100644 index 0000000000..7750afd74d --- /dev/null +++ b/packages/cli/src/service/templates/resolver.tpl.ts @@ -0,0 +1,78 @@ +import { generator, toFile } from '@feathershq/pinion' +import { renderSource } from '../../commons' +import { ServiceGeneratorContext } from '../index' + +const template = ({ camelName, upperName, relative, schemaPath }: ServiceGeneratorContext) => + `import { resolve } from '@feathersjs/schema' +import type { HookContext } from '${relative}/declarations' + +import type { + ${upperName}Data, + ${upperName}Patch, + ${upperName}Result, + ${upperName}Query, +} from '${relative}/${schemaPath}' +import { + ${camelName}DataSchema, + ${camelName}PatchSchema, + ${camelName}ResultSchema, + ${camelName}QuerySchema +} from '${relative}/${schemaPath}' + + +// Resolver for the basic data model (e.g. creating new entries) +export const ${camelName}DataResolver = resolve<${upperName}Data, HookContext>({ + schema: ${camelName}DataSchema, + validate: 'before', + properties: {} +}) + + +// Resolver for making partial updates +export const ${camelName}PatchResolver = resolve<${upperName}Patch, HookContext>({ + schema: ${camelName}PatchSchema, + validate: 'before', + properties: {} +}) + + +// Resolver for the data that is being returned +export const ${camelName}ResultResolver = resolve<${upperName}Result, HookContext>({ + schema: ${camelName}ResultSchema, + validate: false, + properties: {} +}) + + +// Resolver for query properties +export const ${camelName}QueryResolver = resolve<${upperName}Query, HookContext>({ + schema: ${camelName}QuerySchema, + validate: 'before', + properties: {} +}) + + +// Export all resolvers in a format that can be used with the resolveAll hook +export const ${camelName}Resolvers = { + result: ${camelName}ResultResolver, + data: { + create: ${camelName}DataResolver, + update: ${camelName}DataResolver, + patch: ${camelName}PatchResolver + }, + query: ${camelName}QueryResolver +} +` + +export const generate = (ctx: ServiceGeneratorContext) => + generator(ctx).then( + renderSource( + template, + toFile(({ lib, folder, fileName }: ServiceGeneratorContext) => [ + lib, + 'resolvers', + ...folder, + `${fileName}.resolver` + ]) + ) + ) diff --git a/packages/cli/src/service/templates/schema.tpl.ts b/packages/cli/src/service/templates/schema.tpl.ts new file mode 100644 index 0000000000..de5093c8ff --- /dev/null +++ b/packages/cli/src/service/templates/schema.tpl.ts @@ -0,0 +1,80 @@ +import { generator, toFile } from '@feathershq/pinion' +import { renderSource } from '../../commons' +import { ServiceGeneratorContext } from '../index' + +const template = ({ camelName, upperName, type }: ServiceGeneratorContext) => + `import { schema, querySyntax } from '@feathersjs/schema' +import type { Infer } from '@feathersjs/schema' + +// Schema for the basic data model (e.g. creating new entries) +export const ${camelName}DataSchema = schema({ + $id: '${upperName}Data', + type: 'object', + additionalProperties: false, + required: [ 'text' ], + properties: { + text: { + type: 'string' + } + } +} as const) + +export type ${upperName}Data = Infer + + +// Schema for making partial updates +export const ${camelName}PatchSchema = schema({ + $id: '${upperName}Patch', + type: 'object', + additionalProperties: false, + required: [], + properties: { + ...${camelName}DataSchema.properties + } +} as const) + +export type ${upperName}Patch = Infer + + +// Schema for the data that is being returned +export const ${camelName}ResultSchema = schema({ + $id: '${upperName}Result', + type: 'object', + additionalProperties: false, + required: [ ...${camelName}DataSchema.required, '${type === 'mongodb' ? '_id' : 'id'}' ], + properties: { + ...${camelName}DataSchema.properties, + ${type === 'mongodb' ? '_id' : 'id'}: { + type: 'string' + } + } +} as const) + +export type ${upperName}Result = Infer + + +// Schema for allowed query properties +export const ${camelName}QuerySchema = schema({ + $id: '${upperName}Query', + type: 'object', + additionalProperties: false, + properties: { + ...querySyntax(${camelName}ResultSchema.properties) + } +} as const) + +export type ${upperName}Query = Infer +` + +export const generate = (ctx: ServiceGeneratorContext) => + generator(ctx).then( + renderSource( + template, + toFile(({ lib, folder, fileName }: ServiceGeneratorContext) => [ + lib, + 'schemas', + ...folder, + `${fileName}.schema` + ]) + ) + ) diff --git a/packages/cli/src/service/templates/service.tpl.ts b/packages/cli/src/service/templates/service.tpl.ts new file mode 100644 index 0000000000..ab9093f9e3 --- /dev/null +++ b/packages/cli/src/service/templates/service.tpl.ts @@ -0,0 +1,117 @@ +import { generator, inject, prepend, toFile, after } from '@feathershq/pinion' +import { getSource, renderSource } from '../../commons' +import { ServiceGeneratorContext } from '../index' + +const template = ({ + relative, + path, + className, + schemaPath, + resolverPath, + camelName, + upperName, + isEntityService, + authentication +}: ServiceGeneratorContext) => + `import { resolveAll } from '@feathersjs/schema' +${isEntityService || authentication ? `import { authenticate } from '@feathersjs/authentication'` : ''} +import type { Application } from '${relative}/declarations' +import type { + ${upperName}Data, + ${upperName}Result, + ${upperName}Query, +} from '${relative}/${schemaPath}' +import { ${camelName}Resolvers } from '${relative}/${resolverPath}' + +export const hooks = { + around: { + all: [${ + authentication + ? ` + authenticate('jwt'),` + : '' + } ${ + !isEntityService + ? ` + resolveAll(${camelName}Resolvers)` + : '' + } + ]${ + isEntityService + ? `, + get: [ + authenticate('jwt'), + resolveAll(${camelName}Resolvers) + ], + find: [ + authenticate('jwt'), + resolveAll(${camelName}Resolvers) + ], + create: [ + resolveAll(${camelName}Resolvers) + ], + patch: [ + authenticate('jwt'), + resolveAll(${camelName}Resolvers) + ], + update: [ + authenticate('jwt'), + resolveAll(${camelName}Resolvers) + ], + remove: [ + authenticate('jwt'), + resolveAll(${camelName}Resolvers) + ]` + : '' + } + }, + before: {}, + after: {}, + error: {} +} + +// A configure function that registers the service and its hooks via \`app.configure\` +export function ${camelName} (app: Application) { + const options = { // Service options will go here + } + + // Register our service on the Feathers application + app.use('${path}', new ${className}(options), { + // A list of all methods this service exposes externally + methods: ['find', 'get', 'create', 'update', 'patch', 'remove'], + // You can add additional custom events to be sent to clients here + events: [] + }) + // Initialize hooks + app.service('${path}').hooks(hooks) +} + +// Add this service to the service type index +declare module '${relative}/declarations' { + interface ServiceTypes { + '${path}': ${className} + } +} +` + +const importTemplate = ({ camelName, path }: ServiceGeneratorContext) => + `import { ${camelName} } from './${path}'` + +const configureTemplate = ({ camelName }: ServiceGeneratorContext) => ` app.configure(${camelName})` + +const toServiceIndex = toFile(({ lib, language }: ServiceGeneratorContext) => [ + lib, + 'services', + `index.${language}` +]) + +export const generate = (ctx: ServiceGeneratorContext) => + generator(ctx) + .then( + renderSource( + template, + toFile(({ lib, folder, fileName }) => [lib, 'services', ...folder, fileName]) + ) + ) + .then(inject(getSource(importTemplate), prepend(), toServiceIndex)) + .then(inject(configureTemplate, after('export const services'), toServiceIndex)) diff --git a/packages/cli/src/service/templates/test.tpl.ts b/packages/cli/src/service/templates/test.tpl.ts new file mode 100644 index 0000000000..e86ac195b3 --- /dev/null +++ b/packages/cli/src/service/templates/test.tpl.ts @@ -0,0 +1,29 @@ +import { generator, toFile } from '@feathershq/pinion' +import { renderSource } from '../../commons' +import { ServiceGeneratorContext } from '../index' + +const template = ({ relative, lib, path, name }: ServiceGeneratorContext) => + `import assert from 'assert' +import { app } from '../${relative}/${lib}/app' + +describe('${name} service', () => { + it('registered the service', () => { + const service = app.service('${path}') + + assert.ok(service, 'Registered the service') + }) +}) +` + +export const generate = (ctx: ServiceGeneratorContext) => + generator(ctx).then( + renderSource( + template, + toFile(({ test, folder, kebabName }) => [ + test, + 'services', + ...folder, + `${kebabName}.test` + ]) + ) + ) diff --git a/packages/cli/src/service/type/custom.tpl.ts b/packages/cli/src/service/type/custom.tpl.ts new file mode 100644 index 0000000000..fe47fb7f06 --- /dev/null +++ b/packages/cli/src/service/type/custom.tpl.ts @@ -0,0 +1,81 @@ +import { generator, inject, toFile, after, before, prepend } from '@feathershq/pinion' +import { getSource } from '../../commons' +import { ServiceGeneratorContext } from '../index' + +export const template = ({ className, upperName }: ServiceGeneratorContext) => + `export interface ${className}Options { + app: Application +} + +export interface ${upperName}Params extends Params<${upperName}Query> { + +} + +// This is a skeleton for a custom service class. Remove or add the methods you need here +export class ${className} { + constructor (public options: ${className}Options) { + } + + async find (_params?: ${upperName}Params): Promise<${upperName}Result[]> { + return [] + } + + async get (id: Id, _params?: ${upperName}Params): Promise<${upperName}Result> { + return { + id: \`\${id}\`, + text: \`A new message with ID: \${id}!\` + }; + } + + async create (data: ${upperName}Data, params?: ${upperName}Params): Promise<${upperName}Result> + async create (data: ${upperName}Data[], params?: ${upperName}Params): Promise<${upperName}Result[]> + async create (data: ${upperName}Data|${upperName}Data[], params?: ${upperName}Params): Promise<${upperName}Result|${upperName}Result[]> { + if (Array.isArray(data)) { + return Promise.all(data.map(current => this.create(current, params))); + } + + return { + id: 'created', + ...data + }; + } + + async update (id: NullableId, data: ${upperName}Data, _params?: ${upperName}Params): Promise<${upperName}Result> { + return { + id: \`\${id}\`, + ...data + }; + } + + async patch (id: NullableId, data: ${upperName}Data, _params?: ${upperName}Params): Promise<${upperName}Result> { + return { + id: \`\${id}\`, + ...data + }; + } + + async remove (id: NullableId, _params?: ${upperName}Params): Promise<${upperName}Result> { + return { + id: \`\${id}\`, + text: 'removed' + }; + } +} +` + +export const importTemplate = "import type { Id, NullableId, Params } from '@feathersjs/feathers'" + +const optionTemplate = ({}: ServiceGeneratorContext) => ` app` + +const toServiceFile = toFile(({ lib, language, folder, fileName }) => [ + lib, + 'services', + ...folder, + `${fileName}.${language}` +]) + +export const generate = (ctx: ServiceGeneratorContext) => + generator(ctx) + .then(inject(getSource(template), before('export const hooks ='), toServiceFile)) + .then(inject(getSource(importTemplate), prepend(), toServiceFile)) + .then(inject(optionTemplate, after('const options ='), toServiceFile)) diff --git a/packages/cli/src/service/type/knex.tpl.ts b/packages/cli/src/service/type/knex.tpl.ts new file mode 100644 index 0000000000..268a8fc035 --- /dev/null +++ b/packages/cli/src/service/type/knex.tpl.ts @@ -0,0 +1,62 @@ +import { generator, inject, toFile, before, after, prepend } from '@feathershq/pinion' +import { getSource, renderSource } from '../../commons' +import { ServiceGeneratorContext } from '../index' + +const migrationTemplate = ({ kebabName }: ServiceGeneratorContext) => `import type { Knex } from 'knex' + +export async function up(knex: Knex): Promise { + await knex.schema.createTable('${kebabName}', table => { + table.increments('id') + table.string('text') + }) +} + +export async function down(knex: Knex): Promise { + await knex.schema.dropTable('${kebabName}') +} +` + +export const importTemplate = `import { KnexService } from \'@feathersjs/knex\' +import type { KnexAdapterParams } from \'@feathersjs/knex\'` + +export const classCode = ({ className, upperName }: ServiceGeneratorContext) => + `export interface ${upperName}Params extends KnexAdapterParams<${upperName}Query> { +} + +// By default calls the standard Knex adapter service methods but can be customized with your own functionality. +export class ${className} extends KnexService<${upperName}Result, ${upperName}Data, ${upperName}Params> { +} +` + +export const optionTemplate = ({ kebabName, feathers }: ServiceGeneratorContext) => + ` paginate: app.get('paginate'), + Model: app.get('${feathers.database}Client'), + name: '${kebabName}'` + +const toServiceFile = toFile(({ lib, folder, fileName, language }) => [ + lib, + 'services', + ...folder, + `${fileName}.${language}` +]) + +export const generate = (ctx: ServiceGeneratorContext) => + generator(ctx) + .then( + inject(getSource(classCode), before('export const hooks ='), toServiceFile) + ) + .then(inject(getSource(importTemplate), prepend(), toServiceFile)) + .then(inject(optionTemplate, after('const options ='), toServiceFile)) + .then( + renderSource( + migrationTemplate, + toFile('migrations', ({ kebabName }) => { + const now = new Date() + const migrationDate = + `${now.getUTCFullYear()}${now.getUTCMonth()}${now.getUTCDay()}` + + `${now.getUTCHours()}${now.getUTCMinutes()}${now.getUTCSeconds()}` + + return `${migrationDate}_${kebabName}` + }) + ) + ) diff --git a/packages/cli/src/service/type/mongodb.tpl.ts b/packages/cli/src/service/type/mongodb.tpl.ts new file mode 100644 index 0000000000..b4d9959f72 --- /dev/null +++ b/packages/cli/src/service/type/mongodb.tpl.ts @@ -0,0 +1,34 @@ +import { generator, inject, toFile, before, after, prepend } from '@feathershq/pinion' +import { getSource } from '../../commons' +import { ServiceGeneratorContext } from '../index' + +export const importTemplate = `import { MongoDBService } from \'@feathersjs/mongodb\' +import type { MongoDBAdapterParams } from \'@feathersjs/mongodb\'` + +export const classCode = ({ className, upperName }: ServiceGeneratorContext) => + `export interface ${upperName}Params extends MongoDBAdapterParams<${upperName}Query> { +} + +// By default calls the standard MongoDB adapter service methods but can be customized with your own functionality. +export class ${className} extends MongoDBService<${upperName}Result, ${upperName}Data, ${upperName}Params> { +} +` + +const optionTemplate = ({ kebabName }: ServiceGeneratorContext) => + ` paginate: app.get('paginate'), + Model: app.get('mongodbClient').then(db => db.collection('${kebabName}'))` + +const toServiceFile = toFile(({ lib, folder, fileName, language }) => [ + lib, + 'services', + ...folder, + `${fileName}.${language}` +]) + +export const generate = (ctx: ServiceGeneratorContext) => + generator(ctx) + .then( + inject(getSource(classCode), before('export const hooks ='), toServiceFile) + ) + .then(inject(getSource(importTemplate), prepend(), toServiceFile)) + .then(inject(optionTemplate, after('const options ='), toServiceFile)) diff --git a/packages/cli/test/commons.test.ts b/packages/cli/test/commons.test.ts new file mode 100644 index 0000000000..92eee4f6d0 --- /dev/null +++ b/packages/cli/test/commons.test.ts @@ -0,0 +1,35 @@ +import { strictEqual } from 'assert' +import { getJavaScript } from '../src/commons' + +describe('common tests', () => { + it('getJavaScript returns transpiled and prettified JavaScript', () => { + const transpiled = getJavaScript( + `import bla from 'bla' +import something from './file' + +type X = { name: string } + +function test (arg: X) { + bla(something) +} + +// This is a comment +const otherThing: string = "Hello" +` + ) + + strictEqual( + transpiled, + `import bla from 'bla' +import something from './file.js' + +function test(arg) { + bla(something) +} + +// This is a comment +const otherThing = 'Hello' +` + ) + }) +}) diff --git a/packages/cli/test/generators.test.ts b/packages/cli/test/generators.test.ts new file mode 100644 index 0000000000..59599cd554 --- /dev/null +++ b/packages/cli/test/generators.test.ts @@ -0,0 +1,120 @@ +/* eslint-disable @typescript-eslint/prefer-for-of */ +import os from 'os' +import path from 'path' +import { mkdtemp } from 'fs/promises' +import assert from 'assert' +import { getContext } from '@feathershq/pinion' + +import { AppGeneratorContext } from '../src/app' +import { generate } from '../lib' +import { FeathersBaseContext } from '../src/commons' +import { ConnectionGeneratorArguments } from '../src/connection' +import { ServiceGeneratorArguments } from '../src/service' +import { combinate, dependencyVersions } from './utils' + +const matrix = { + language: ['js', 'ts'] as const, + framework: ['koa', 'express'] as const +} + +const defaultCombination = { + language: process.env.FEATHERS_LANGUAGE || 'ts', + framework: process.env.FEATHERS_FRAMEWORK || 'koa' +} + +const combinations = + process.version > 'v16.0.0' ? (process.env.CI ? combinate(matrix as any) : [defaultCombination]) : [] + +describe('@feathersjs/cli', () => { + for (const { language, framework } of combinations) { + describe(`${language} ${framework} app`, () => { + const name = `feathers_${language}_${framework}` + + let context: FeathersBaseContext + let cwd: string + + before(async () => { + cwd = await mkdtemp(path.join(os.tmpdir(), name + '-')) + console.log(cwd) + context = await generate( + getContext( + { + name, + framework, + language, + dependencyVersions, + lib: 'src', + description: 'A Feathers test app', + packager: 'npm', + database: 'sqlite', + connectionString: `${name}.sqlite`, + transports: ['rest', 'websockets'], + authStrategies: ['local', 'github'], + _: ['generate', 'app'] + }, + { cwd } + ) + ) + }) + + it('generated app with SQLite and passes tests', async () => { + const testResult = await context.pinion.exec('npm', ['test'], { cwd }) + + assert.ok(context) + assert.strictEqual(testResult, 0) + }) + + it('generates a MongoDB connection and service and passes tests', async () => { + const connectionContext = await generate( + getContext( + { + dependencyVersions, + database: 'mongodb' as const, + connectionString: `mongodb://localhost:27017/${name}`, + _: ['generate', 'connection'] + }, + { cwd } + ) + ) + const mongoServiceContext = await generate( + getContext( + { + dependencyVersions, + name: 'testing', + path: 'path/to/test', + authentication: true, + type: 'mongodb', + _: ['generate', 'service'] + }, + { cwd } + ) + ) + const testResult = await context.pinion.exec('npm', ['test'], { cwd }) + + assert.ok(connectionContext) + assert.ok(mongoServiceContext) + assert.strictEqual(testResult, 0) + }) + + it('generates a custom service and passes tests', async () => { + const customServiceContext = await generate( + getContext( + { + dependencyVersions, + name: 'Custom Service', + path: 'custom', + authentication: false, + type: 'custom', + _: ['generate', 'service'] + }, + { cwd } + ) + ) + const testResult = await context.pinion.exec('npm', ['test'], { cwd }) + + assert.ok(customServiceContext) + assert.strictEqual(testResult, 0) + }) + }) + } +}) diff --git a/packages/cli/test/utils.ts b/packages/cli/test/utils.ts new file mode 100644 index 0000000000..16dc2c6764 --- /dev/null +++ b/packages/cli/test/utils.ts @@ -0,0 +1,29 @@ +import path from 'path' +import pkg from '../package.json' +import { DependencyVersions } from '../src/commons' + +export function combinate>(obj: O) { + let combos: { [k in keyof O]: O[k][number] }[] = [] + for (const key of Object.keys(obj)) { + const values = obj[key] + const all: any[] = [] + for (let i = 0; i < values.length; i++) { + for (let j = 0; j < (combos.length || 1); j++) { + const newCombo = { ...combos[j], [key]: values[i] } + all.push(newCombo) + } + } + combos = all + } + return combos +} + +export const dependencyVersions = Object.keys(pkg.devDependencies as any) + .filter((dep) => dep.startsWith('@feathersjs/')) + .reduce((acc, dep) => { + const [, name] = dep.split('/') + + acc[dep] = `file://${path.join(__dirname, '..', '..', name)}` + + return acc + }, {} as DependencyVersions) diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json new file mode 100644 index 0000000000..3e7a45e4a0 --- /dev/null +++ b/packages/cli/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig", + "include": [ + "src/**/*.ts" + ], + "compilerOptions": { + "outDir": "lib", + "resolveJsonModule": true + } +} diff --git a/packages/client/CHANGELOG.md b/packages/client/CHANGELOG.md index ddd5d7e500..f8c78211a8 100644 --- a/packages/client/CHANGELOG.md +++ b/packages/client/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + +**Note:** Version bump only for package @feathersjs/client + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) **Note:** Version bump only for package @feathersjs/client diff --git a/packages/client/package.json b/packages/client/package.json index 48fcc0be89..0f4a889f86 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,7 +1,7 @@ { "name": "@feathersjs/client", "description": "A module that consolidates Feathers client modules for REST (jQuery, Request, Superagent) and Websocket (Socket.io, Primus) connections", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "repository": { "type": "git", "url": "https://github.com/feathersjs/feathers.git", @@ -49,19 +49,19 @@ "IE 11" ], "dependencies": { - "@feathersjs/authentication-client": "^5.0.0-pre.23", - "@feathersjs/errors": "^5.0.0-pre.23", - "@feathersjs/feathers": "^5.0.0-pre.23", - "@feathersjs/rest-client": "^5.0.0-pre.23", - "@feathersjs/socketio-client": "^5.0.0-pre.23" + "@feathersjs/authentication-client": "^5.0.0-pre.24", + "@feathersjs/errors": "^5.0.0-pre.24", + "@feathersjs/feathers": "^5.0.0-pre.24", + "@feathersjs/rest-client": "^5.0.0-pre.24", + "@feathersjs/socketio-client": "^5.0.0-pre.24" }, "devDependencies": { "@babel/core": "^7.18.2", "@babel/preset-env": "^7.18.2", - "@feathersjs/express": "^5.0.0-pre.23", - "@feathersjs/memory": "^5.0.0-pre.23", - "@feathersjs/socketio": "^5.0.0-pre.23", - "@feathersjs/tests": "^5.0.0-pre.23", + "@feathersjs/express": "^5.0.0-pre.24", + "@feathersjs/memory": "^5.0.0-pre.24", + "@feathersjs/socketio": "^5.0.0-pre.24", + "@feathersjs/tests": "^5.0.0-pre.24", "babel-loader": "^8.2.5", "mocha": "^10.0.0", "mocha-puppeteer": "^0.14.0", @@ -75,5 +75,5 @@ "webpack-cli": "^4.9.2", "webpack-merge": "^5.8.0" }, - "gitHead": "e452e02063e6d8943a9cae2315ab585bc4f82fb6" + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" } diff --git a/packages/commons/CHANGELOG.md b/packages/commons/CHANGELOG.md index f41408b7cf..e5e9e0590d 100644 --- a/packages/commons/CHANGELOG.md +++ b/packages/commons/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + +**Note:** Version bump only for package @feathersjs/commons + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) **Note:** Version bump only for package @feathersjs/commons diff --git a/packages/commons/package.json b/packages/commons/package.json index 61cc49ccb2..85585ea7e4 100644 --- a/packages/commons/package.json +++ b/packages/commons/package.json @@ -1,6 +1,6 @@ { "name": "@feathersjs/commons", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "description": "Shared Feathers utility functions", "homepage": "https://feathersjs.com", "keywords": [ @@ -58,5 +58,5 @@ "ts-node": "^10.8.1", "typescript": "^4.7.3" }, - "gitHead": "e452e02063e6d8943a9cae2315ab585bc4f82fb6" + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" } diff --git a/packages/configuration/CHANGELOG.md b/packages/configuration/CHANGELOG.md index 386df13605..1dd66b9431 100644 --- a/packages/configuration/CHANGELOG.md +++ b/packages/configuration/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + +**Note:** Version bump only for package @feathersjs/configuration + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) **Note:** Version bump only for package @feathersjs/configuration diff --git a/packages/configuration/package.json b/packages/configuration/package.json index 4af99e5cac..17e6a47491 100644 --- a/packages/configuration/package.json +++ b/packages/configuration/package.json @@ -1,7 +1,7 @@ { "name": "@feathersjs/configuration", "description": "A small configuration module for your Feathers application.", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "homepage": "https://feathersjs.com", "main": "lib/", "types": "lib/", @@ -57,9 +57,9 @@ "access": "public" }, "dependencies": { - "@feathersjs/commons": "^5.0.0-pre.23", - "@feathersjs/feathers": "^5.0.0-pre.23", - "@feathersjs/schema": "^5.0.0-pre.23", + "@feathersjs/commons": "^5.0.0-pre.24", + "@feathersjs/feathers": "^5.0.0-pre.24", + "@feathersjs/schema": "^5.0.0-pre.24", "@types/config": "^0.0.41", "config": "^3.3.7" }, @@ -71,5 +71,5 @@ "ts-node": "^10.8.1", "typescript": "^4.7.3" }, - "gitHead": "e452e02063e6d8943a9cae2315ab585bc4f82fb6" + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" } diff --git a/packages/errors/CHANGELOG.md b/packages/errors/CHANGELOG.md index 60e3e5b6ed..f2284948bb 100644 --- a/packages/errors/CHANGELOG.md +++ b/packages/errors/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + +**Note:** Version bump only for package @feathersjs/errors + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) **Note:** Version bump only for package @feathersjs/errors diff --git a/packages/errors/package.json b/packages/errors/package.json index fd1f0e9420..c99fed58b2 100644 --- a/packages/errors/package.json +++ b/packages/errors/package.json @@ -1,7 +1,7 @@ { "name": "@feathersjs/errors", "description": "Common error types for Feathers apps", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "homepage": "https://feathersjs.com", "main": "lib/", "types": "lib/", @@ -48,7 +48,7 @@ "*.js" ], "devDependencies": { - "@feathersjs/feathers": "^5.0.0-pre.23", + "@feathersjs/feathers": "^5.0.0-pre.24", "@types/mocha": "^9.1.1", "@types/node": "^17.0.40", "mocha": "^10.0.0", @@ -56,5 +56,5 @@ "ts-node": "^10.8.1", "typescript": "^4.7.3" }, - "gitHead": "e452e02063e6d8943a9cae2315ab585bc4f82fb6" + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" } diff --git a/packages/express/CHANGELOG.md b/packages/express/CHANGELOG.md index acba6ae337..33435fe612 100644 --- a/packages/express/CHANGELOG.md +++ b/packages/express/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + + +### Bug Fixes + +* **authentication:** Add safe dispatch data for authentication requests ([#2662](https://github.com/feathersjs/feathers/issues/2662)) ([d8104a1](https://github.com/feathersjs/feathers/commit/d8104a19ee9181e6a5ea81014af29ff9a3c28a8a)) + + +### Features + +* **cli:** Add support for JavaScript to the new CLI ([#2668](https://github.com/feathersjs/feathers/issues/2668)) ([ebac587](https://github.com/feathersjs/feathers/commit/ebac587f7d00dc7607c3f546352d79f79b89a5d4)) + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) diff --git a/packages/express/package.json b/packages/express/package.json index e5fa48897f..568e732ef2 100644 --- a/packages/express/package.json +++ b/packages/express/package.json @@ -1,7 +1,7 @@ { "name": "@feathersjs/express", "description": "Feathers Express framework bindings and REST provider", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "homepage": "https://feathersjs.com", "main": "lib/", "types": "lib/", @@ -51,18 +51,18 @@ "access": "public" }, "dependencies": { - "@feathersjs/authentication": "^5.0.0-pre.23", - "@feathersjs/commons": "^5.0.0-pre.23", - "@feathersjs/errors": "^5.0.0-pre.23", - "@feathersjs/feathers": "^5.0.0-pre.23", - "@feathersjs/transport-commons": "^5.0.0-pre.23", + "@feathersjs/authentication": "^5.0.0-pre.24", + "@feathersjs/commons": "^5.0.0-pre.24", + "@feathersjs/errors": "^5.0.0-pre.24", + "@feathersjs/feathers": "^5.0.0-pre.24", + "@feathersjs/transport-commons": "^5.0.0-pre.24", "@types/express": "^4.17.13", "@types/express-serve-static-core": "^4.17.28", "express": "^4.18.1" }, "devDependencies": { - "@feathersjs/authentication-local": "^5.0.0-pre.23", - "@feathersjs/tests": "^5.0.0-pre.23", + "@feathersjs/authentication-local": "^5.0.0-pre.24", + "@feathersjs/tests": "^5.0.0-pre.24", "@types/lodash": "^4.14.182", "@types/mocha": "^9.1.1", "@types/node": "^17.0.40", @@ -73,5 +73,5 @@ "ts-node": "^10.8.1", "typescript": "^4.7.3" }, - "gitHead": "e452e02063e6d8943a9cae2315ab585bc4f82fb6" + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" } diff --git a/packages/express/src/index.ts b/packages/express/src/index.ts index 40c9e422b2..4b8fef2408 100644 --- a/packages/express/src/index.ts +++ b/packages/express/src/index.ts @@ -3,23 +3,33 @@ import { Application as FeathersApplication, defaultServiceMethods } from '@feat import { routing } from '@feathersjs/transport-commons' import { createDebug } from '@feathersjs/commons' -import { Application } from './declarations' +import { rest, RestOptions, formatter } from './rest' +import { errorHandler, notFound, ErrorHandlerOptions } from './handlers' +import { Application, ExpressOverrides } from './declarations' +import { AuthenticationSettings, authenticate, parseAuthentication } from './authentication' +import { default as original, static as serveStatic, json, raw, text, urlencoded, query } from 'express' export { - default as original, - static, - static as serveStatic, + original, + serveStatic, + serveStatic as static, json, raw, text, urlencoded, - query -} from 'express' - -export * from './authentication' -export * from './declarations' -export * from './handlers' -export * from './rest' + query, + rest, + RestOptions, + formatter, + errorHandler, + notFound, + Application, + ErrorHandlerOptions, + ExpressOverrides, + AuthenticationSettings, + parseAuthentication, + authenticate +} const debug = createDebug('@feathersjs/express') diff --git a/packages/express/test/authentication.test.ts b/packages/express/test/authentication.test.ts index 44d215b2ad..9a342f39de 100644 --- a/packages/express/test/authentication.test.ts +++ b/packages/express/test/authentication.test.ts @@ -67,8 +67,7 @@ describe('@feathersjs/express/authentication', () => { it('successful local authentication', () => { assert.ok(authResult.accessToken) assert.deepStrictEqual(omit(authResult.authentication, 'payload'), { - strategy: 'local', - accessToken: authResult.accessToken + strategy: 'local' }) assert.strictEqual(authResult.user.email, email) assert.strictEqual(authResult.user.password, undefined) diff --git a/packages/feathers/CHANGELOG.md b/packages/feathers/CHANGELOG.md index b2c135eba6..aded29f2e7 100644 --- a/packages/feathers/CHANGELOG.md +++ b/packages/feathers/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + + +### Features + +* **authentication-local:** Add passwordHash property resolver ([#2660](https://github.com/feathersjs/feathers/issues/2660)) ([b41279b](https://github.com/feathersjs/feathers/commit/b41279b55eea3771a6fa4983a37be2413287bbc6)) +* **cli:** Add typed client to a generated app ([#2669](https://github.com/feathersjs/feathers/issues/2669)) ([5b801b5](https://github.com/feathersjs/feathers/commit/5b801b5017ddc3eaa95622b539f51d605916bc86)) + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) diff --git a/packages/feathers/package.json b/packages/feathers/package.json index a306240dcf..7eb8c5d0c6 100644 --- a/packages/feathers/package.json +++ b/packages/feathers/package.json @@ -1,7 +1,7 @@ { "name": "@feathersjs/feathers", "description": "A framework for real-time applications and REST API with JavaScript and TypeScript", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "homepage": "http://feathersjs.com", "repository": { "type": "git", @@ -42,8 +42,8 @@ "*.js" ], "scripts": { - "write-version": "node -e \"console.log('export default \\'' + require('./package.json').version + '\\';')\" > src/version.ts", - "reset-version": "node -e \"console.log('export default \\'development\\';')\" > src/version.ts", + "write-version": "node -e \"console.log('export default \\'' + require('./package.json').version + '\\'')\" > src/version.ts", + "reset-version": "node -e \"console.log('export default \\'development\\'')\" > src/version.ts", "prepublish": "npm run compile", "version": "npm run write-version", "publish": "npm run reset-version", @@ -57,7 +57,7 @@ "access": "public" }, "dependencies": { - "@feathersjs/commons": "^5.0.0-pre.23", + "@feathersjs/commons": "^5.0.0-pre.24", "@feathersjs/hooks": "^0.7.5", "events": "^3.3.0" }, @@ -69,5 +69,5 @@ "ts-node": "^10.8.1", "typescript": "^4.7.3" }, - "gitHead": "e452e02063e6d8943a9cae2315ab585bc4f82fb6" + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" } diff --git a/packages/feathers/src/declarations.ts b/packages/feathers/src/declarations.ts index a63416bac0..b03e613a25 100644 --- a/packages/feathers/src/declarations.ts +++ b/packages/feathers/src/declarations.ts @@ -6,6 +6,9 @@ type OptionalPick = Pick> export type { NextFunction } +/** + * The object returned from `.find` call by standard database adapters + */ export interface Paginated { total: number limit: number @@ -13,6 +16,9 @@ export interface Paginated { data: T[] } +/** + * Options that can be passed when registering a service via `app.use(name, service, options)` + */ export interface ServiceOptions { events?: string[] methods?: string[] @@ -89,6 +95,21 @@ export type CustomMethods = { [K in keyof T]: (data: T[K][0], params?: Params) => Promise } +/** + * An interface usually use by transport clients that represents a e.g. HTTP or websocket + * connection that can be configured on the application. + */ +export type TransportConnection = { + (app: Application): void + Service: any + service: ( + name: L + ) => keyof any extends keyof Services ? ServiceInterface : Services[L] +} + +/** + * The interface for a custom service method. Can e.g. be used to type client side services. + */ export type CustomMethod = (data: T, params?: P) => Promise export type ServiceMixin = (service: FeathersService, path: string, options: ServiceOptions) => void diff --git a/packages/knex/CHANGELOG.md b/packages/knex/CHANGELOG.md new file mode 100644 index 0000000000..caa607c667 --- /dev/null +++ b/packages/knex/CHANGELOG.md @@ -0,0 +1,11 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + + +### Features + +* **knex:** Add KnexJS SQL database adapter to core ([#2671](https://github.com/feathersjs/feathers/issues/2671)) ([9380fff](https://github.com/feathersjs/feathers/commit/9380fff58596e8bb90b8bb098d2795b7eadfec20)) diff --git a/packages/knex/LICENSE b/packages/knex/LICENSE new file mode 100644 index 0000000000..59604f46f3 --- /dev/null +++ b/packages/knex/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2022 Feathers + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/_templates/package/new/README.md.t b/packages/knex/README.md similarity index 51% rename from _templates/package/new/README.md.t rename to packages/knex/README.md index ecf2413ffb..4e9adac6a5 100644 --- a/_templates/package/new/README.md.t +++ b/packages/knex/README.md @@ -1,18 +1,14 @@ ---- -to: packages/<%= name %>/README.md ---- - -# @feathersjs/<%= name %> +# @feathersjs/knex [![CI](https://github.com/feathersjs/feathers/workflows/CI/badge.svg)](https://github.com/feathersjs/feathers/actions?query=workflow%3ACI) -[![Download Status](https://img.shields.io/npm/dm/@feathersjs/<%= name %>.svg?style=flat-square)](https://www.npmjs.com/package/@feathersjs/<%= name %>) +[![Download Status](https://img.shields.io/npm/dm/@feathersjs/mongodb.svg?style=flat-square)](https://www.npmjs.com/package/@feathersjs/mongodb) -> <%= description %> +> Feathers SQL service adapter using KnexJS ## Installation ``` -npm install @feathersjs/<%= name %> --save +npm install @feathersjs/knex --save ``` ## Documentation @@ -21,6 +17,6 @@ Refer to the [Feathers documentation](https://docs.feathersjs.com) for more deta ## License -Copyright (c) 2021 [Feathers contributors](https://github.com/feathersjs/feathers/graphs/contributors) +Copyright (c) 2022 [Feathers contributors](https://github.com/feathersjs/feathers/graphs/contributors) Licensed under the [MIT license](LICENSE). diff --git a/_templates/package/new/package.json.t b/packages/knex/package.json similarity index 59% rename from _templates/package/new/package.json.t rename to packages/knex/package.json index a9a0e96d66..b1a179017e 100644 --- a/_templates/package/new/package.json.t +++ b/packages/knex/package.json @@ -1,11 +1,7 @@ ---- -to: packages/<%= name %>/package.json ---- - { - "name": "@feathersjs/<%= name %>", - "description": "<%= description %>", - "version": "0.0.0", + "name": "@feathersjs/knex", + "description": "Feathers SQL service adapter using KnexJS", + "version": "5.0.0-pre.24", "homepage": "https://feathersjs.com", "main": "lib/", "keywords": [ @@ -31,7 +27,7 @@ to: packages/<%= name %>/package.json "url": "https://github.com/feathersjs/feathers/issues" }, "engines": { - "node": ">= 12" + "node": ">= 14" }, "files": [ "CHANGELOG.md", @@ -43,7 +39,6 @@ to: packages/<%= name %>/package.json "*.js" ], "scripts": { - "prepublish": "npm run compile", "compile": "shx rm -rf lib/ && tsc", "test": "mocha --config ../../.mocharc.json --recursive test/**.test.ts test/**/*.test.ts" }, @@ -54,12 +49,23 @@ to: packages/<%= name %>/package.json "access": "public" }, "dependencies": { + "@feathersjs/adapter-commons": "^5.0.0-pre.24", + "@feathersjs/commons": "^5.0.0-pre.24", + "@feathersjs/errors": "^5.0.0-pre.24", + "@feathersjs/feathers": "^5.0.0-pre.24" + }, + "peerDependencies": { + "knex": "^2.1.0" }, "devDependencies": { - "@types/mocha": "^8.2.2", - "@types/node": "^14.14.37", - "mocha": "^8.3.2", - "shx": "^0.3.3", - "typescript": "^4.2.3" - } + "@feathersjs/adapter-tests": "^5.0.0-pre.24", + "@types/mocha": "^9.1.1", + "@types/node": "^17.0.40", + "knex": "^2.1.0", + "mocha": "^10.0.0", + "shx": "^0.3.4", + "sqlite3": "^5.0.8", + "typescript": "^4.7.3" + }, + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" } diff --git a/packages/knex/src/adapter.ts b/packages/knex/src/adapter.ts new file mode 100644 index 0000000000..b5de594a12 --- /dev/null +++ b/packages/knex/src/adapter.ts @@ -0,0 +1,314 @@ +import { Id, NullableId, Paginated, Query } from '@feathersjs/feathers' +import { _ } from '@feathersjs/commons' +import { AdapterBase, PaginationOptions, filterQuery } from '@feathersjs/adapter-commons' +import { NotFound } from '@feathersjs/errors' +import { Knex } from 'knex' + +import { errorHandler } from './error-handler' +import { KnexAdapterOptions, KnexAdapterParams } from './declarations' +const METHODS = { + $ne: 'whereNot', + $in: 'whereIn', + $nin: 'whereNotIn', + $or: 'orWhere', + $and: 'andWhere' +} + +const OPERATORS = { + $lt: '<', + $lte: '<=', + $gt: '>', + $gte: '>=', + $like: 'like', + $notlike: 'not like', + $ilike: 'ilike' +} + +export class KnexAdapter< + T, + D = Partial, + P extends KnexAdapterParams = KnexAdapterParams +> extends AdapterBase { + table: string + schema?: string + + constructor(options: KnexAdapterOptions) { + if (!options || !options.Model) { + throw new Error('You must provide a Model (the initialized knex object)') + } + + if (typeof options.name !== 'string') { + throw new Error('No table name specified.') + } + + super({ + id: 'id', + ...options, + filters: { + ...options.filters, + $and: (value: any) => value + }, + operators: [...(options.operators || []), '$like', '$notlike', '$ilike', '$and', '$or'] + }) + + this.table = options.name + this.schema = options.schema + } + + get Model() { + return this.options.Model + } + + get fullName() { + return this.schema ? `${this.schema}.${this.table}` : this.table + } + + db(params?: P) { + const { Model, table, schema } = this + + if (params && params.transaction && params.transaction.trx) { + const { trx } = params.transaction + // debug('ran %s with transaction %s', fullName, id) + return schema ? (trx.withSchema(schema).table(table) as Knex.QueryBuilder) : trx(table) + } + return schema ? (Model.withSchema(schema).table(table) as Knex.QueryBuilder) : Model(table) + } + + knexify(knexQuery: Knex.QueryBuilder, query: Query = {}, parentKey?: string): Knex.QueryBuilder { + const knexify = this.knexify.bind(this) + + return Object.keys(query || {}).reduce((currentQuery, key) => { + const value = query[key] + + if (_.isObject(value)) { + return knexify(currentQuery, value, key) + } + + const column = parentKey || key + const method = METHODS[key as keyof typeof METHODS] + + if (method) { + if (key === '$or' || key === '$and') { + // This will create a nested query + currentQuery.where(function (this: any) { + for (const condition of value) { + this[method](function (this: Knex.QueryBuilder) { + knexify(this, condition) + }) + } + }) + + return currentQuery + } + + return (currentQuery as any)[method](column, value) + } + + const operator = OPERATORS[key as keyof typeof OPERATORS] || '=' + + return operator === '=' + ? currentQuery.where(column, value) + : currentQuery.where(column, operator, value) + }, knexQuery) + } + + createQuery(params: P) { + const { table, id } = this + const { filters, query } = this.filterQuery(params) + const builder = this.db(params) + + // $select uses a specific find syntax, so it has to come first. + if (filters.$select) { + // always select the id field, but make sure we only select it once + builder.select(...new Set([...filters.$select, `${table}.${id}`])) + } else { + builder.select(`${table}.*`) + } + + // build up the knex query out of the query params, include $and and $or filters + this.knexify(builder, { + ...query, + ..._.pick(filters, '$and', '$or') + }) + + // Handle $sort + if (filters.$sort) { + return Object.keys(filters.$sort).reduce( + (currentQuery, key) => currentQuery.orderBy(key, filters.$sort[key] === 1 ? 'asc' : 'desc'), + builder + ) + } + + return builder + } + + filterQuery(params: P) { + const options = this.getOptions(params) + const { filters, query } = filterQuery(params?.query || {}, options) + + return { filters, query, paginate: options.paginate } + } + + async $find(params?: P & { paginate?: PaginationOptions }): Promise> + async $find(params?: P & { paginate: false }): Promise + async $find(params?: P): Promise | T[]> + async $find(params: P = {} as P): Promise | T[]> { + const { filters, paginate } = this.filterQuery(params) + const builder = params.knex ? params.knex.clone() : this.createQuery(params) + const countBuilder = builder.clone().count(`${this.table}.${this.id} as total`) + + // Handle $limit + if (filters.$limit) { + builder.limit(filters.$limit) + } + + // Handle $skip + if (filters.$skip) { + builder.offset(filters.$skip) + } + + // provide default sorting if its not set + if (!filters.$sort) { + builder.orderBy(`${this.table}.${this.id}`, 'asc') + } + + const data = filters.$limit === 0 ? [] : await builder + + if (paginate && paginate.default) { + return { + total: await countBuilder.then((count) => (count[0] ? count[0].total : 0)), + limit: filters.$limit, + skip: filters.$skip || 0, + data + } + } + + return data + } + + async _findOrGet(id: NullableId, params?: P) { + const findParams = { + ...params, + paginate: false, + query: { + ...params?.query, + ...(id !== null ? { [`${this.table}.${this.id}`]: id } : {}) + } + } + + return this.$find(findParams as any) as any as Promise + } + + async $get(id: Id, params: P = {} as P): Promise { + const data = await this._findOrGet(id, params) + + if (data.length !== 1) { + throw new NotFound(`No record found for id '${id}'`) + } + + return data[0] + } + + async $create(data: Partial, params?: P): Promise + async $create(data: Partial[], params?: P): Promise + async $create(data: Partial | Partial[], _params?: P): Promise + async $create(_data: Partial | Partial[], params: P = {} as P): Promise { + const data = _data as any + + if (Array.isArray(data)) { + return Promise.all(data.map((current) => this.$create(current, params))) + } + + const client = this.db(params).client.config.client + const returning = client === 'pg' || client === 'oracledb' || client === 'mssql' ? [this.id] : [] + const rows: any = await this.db(params).insert(data, returning).catch(errorHandler) + const id = data[this.id] || rows[0][this.id] || rows[0] + + if (!id) { + return rows as T[] + } + + return this.$get(id, params) + } + + async $patch(id: null, data: Partial, params?: P): Promise + async $patch(id: Id, data: Partial, params?: P): Promise + async $patch(id: NullableId, data: Partial, _params?: P): Promise + async $patch(id: NullableId, raw: Partial, params: P = {} as P): Promise { + const data = _.omit(raw, this.id) + const results = await this._findOrGet(id, { + ...params, + query: { + ...params?.query, + $select: [`${this.table}.${this.id}`] + } + }) + const idList = results.map((current: any) => current[this.id]) + const updateParams = { + ...params, + query: { + [`${this.table}.${this.id}`]: { $in: idList }, + ...(params?.query?.$select ? { $select: params?.query?.$select } : {}) + } + } + const builder = this.createQuery(updateParams) + + await builder.update(data) + + const items = await this._findOrGet(null, updateParams) + + if (id !== null) { + if (items.length === 1) { + return items[0] + } else { + throw new NotFound(`No record found for id '${id}'`) + } + } + + return items + } + + async $update(id: Id, _data: D, params: P = {} as P): Promise { + const data = _.omit(_data, this.id) + const oldData = await this.$get(id, params) + const newObject = Object.keys(oldData).reduce((result: any, key) => { + if (key !== this.id) { + // We don't want the id field to be changed + result[key] = data[key] === undefined ? null : data[key] + } + + return result + }, {}) + + await this.db(params).update(newObject, '*').where(this.id, id) + + return this.$get(id, params) + } + + async $remove(id: null, params?: P): Promise + async $remove(id: Id, params?: P): Promise + async $remove(id: NullableId, _params?: P): Promise + async $remove(id: NullableId, params: P = {} as P): Promise { + const items = await this._findOrGet(id, params) + const { query } = this.filterQuery(params) + const q = this.db(params) + const idList = items.map((current: any) => current[this.id]) + + query[this.id] = { $in: idList } + + // build up the knex query out of the query params + this.knexify(q, query) + + await q.del().catch(errorHandler) + + if (id !== null) { + if (items.length === 1) { + return items[0] + } + + throw new NotFound(`No record found for id '${id}'`) + } + + return items + } +} diff --git a/packages/knex/src/declarations.ts b/packages/knex/src/declarations.ts new file mode 100644 index 0000000000..4e30ba6a0a --- /dev/null +++ b/packages/knex/src/declarations.ts @@ -0,0 +1,23 @@ +import { Knex } from 'knex' +import { AdapterServiceOptions, AdapterParams, AdapterQuery } from '@feathersjs/adapter-commons' + +export interface KnexAdapterOptions extends AdapterServiceOptions { + Model: Knex + name: string + schema?: string +} + +export interface KnexAdapterTransaction { + starting: boolean + parent?: KnexAdapterTransaction + committed?: any + resolve?: any + trx?: Knex.Transaction + id?: number + promise?: Promise +} + +export interface KnexAdapterParams extends AdapterParams> { + knex?: Knex.QueryBuilder + transaction?: KnexAdapterTransaction +} diff --git a/packages/knex/src/error-handler.ts b/packages/knex/src/error-handler.ts new file mode 100644 index 0000000000..62662a7702 --- /dev/null +++ b/packages/knex/src/error-handler.ts @@ -0,0 +1,95 @@ +import { errors } from '@feathersjs/errors' + +export const ERROR = Symbol('@feathersjs/knex/error') + +export function errorHandler(error: any) { + const { message } = error + let feathersError = error + + if (error.sqlState && error.sqlState.length) { + // remove SQLSTATE marker (#) and pad/truncate SQLSTATE to 5 chars + const sqlState = ('00000' + error.sqlState.replace('#', '')).slice(-5) + + switch (sqlState.slice(0, 2)) { + case '02': + feathersError = new errors.NotFound(message) + break + case '28': + feathersError = new errors.Forbidden(message) + break + case '08': + case '0A': + case '0K': + feathersError = new errors.Unavailable(message) + break + case '20': + case '21': + case '22': + case '23': + case '24': + case '25': + case '40': + case '42': + case '70': + feathersError = new errors.BadRequest(message) + break + default: + feathersError = new errors.GeneralError(message) + } + } else if (error.code === 'SQLITE_ERROR') { + // NOTE (EK): Error codes taken from + // https://www.sqlite.org/c3ref/c_abort.html + switch (error.errno) { + case 1: + case 8: + case 18: + case 19: + case 20: + feathersError = new errors.BadRequest(message) + break + case 2: + feathersError = new errors.Unavailable(message) + break + case 3: + case 23: + feathersError = new errors.Forbidden(message) + break + case 12: + feathersError = new errors.NotFound(message) + break + default: + feathersError = new errors.GeneralError(message) + break + } + } else if (typeof error.code === 'string' && error.severity && error.routine) { + // NOTE: Error codes taken from + // https://www.postgresql.org/docs/9.6/static/errcodes-appendix.html + // Omit query information + const messages = error.message.split('-') + error.message = messages[messages.length - 1] + + switch (error.code.slice(0, 2)) { + case '22': + case '23': + feathersError = new errors.BadRequest(message) + break + case '28': + feathersError = new errors.Forbidden(message) + break + case '3D': + case '3F': + case '42': + feathersError = new errors.Unprocessable(message) + break + default: + feathersError = new errors.GeneralError(message) + break + } + } else if (!(error instanceof errors.FeathersError)) { + feathersError = new errors.GeneralError(message) + } + + feathersError[ERROR] = error + + throw feathersError +} diff --git a/packages/knex/src/hooks.ts b/packages/knex/src/hooks.ts new file mode 100644 index 0000000000..1ef169570c --- /dev/null +++ b/packages/knex/src/hooks.ts @@ -0,0 +1,101 @@ +import { createDebug } from '@feathersjs/commons' +import { HookContext } from '@feathersjs/feathers' +import { Knex } from 'knex' +import { KnexAdapterTransaction } from './declarations' + +const debug = createDebug('feathers-knex-transaction') + +const ROLLBACK = { rollback: true } + +export const getKnex = (context: HookContext): Knex => { + const knex = context.service.Model + + return knex && typeof knex.transaction === 'function' ? knex : undefined +} + +export const start = + () => + async (context: HookContext): Promise => { + const { transaction } = context.params + const parent = transaction + const knex: Knex = transaction ? transaction.trx : getKnex(context) + + if (!knex) { + return + } + + return new Promise((resolve, reject) => { + const transaction: KnexAdapterTransaction = { + starting: true + } + + if (parent) { + transaction.parent = parent + transaction.committed = parent.committed + } else { + transaction.committed = new Promise((resolve) => { + transaction.resolve = resolve + }) + } + + transaction.starting = true + transaction.promise = knex + .transaction((trx) => { + transaction.trx = trx + transaction.id = Date.now() + + context.params = { ...context.params, transaction } + + debug('started a new transaction %s', transaction.id) + + resolve() + }) + .catch((error) => { + if (transaction.starting) { + reject(error) + } else if (error !== ROLLBACK) { + throw error + } + }) + }) + } + +export const end = () => (context: HookContext) => { + const { transaction } = context.params + + if (!transaction) { + return + } + + const { trx, id, promise, parent } = transaction + + context.params = { ...context.params, transaction: parent } + transaction.starting = false + + return trx + .commit() + .then(() => promise) + .then(() => transaction.resolve && transaction.resolve(true)) + .then(() => debug('ended transaction %s', id)) + .then(() => context) +} + +export const rollback = () => (context: HookContext) => { + const { transaction } = context.params + + if (!transaction) { + return + } + + const { trx, id, promise, parent } = transaction + + context.params = { ...context.params, transaction: parent } + transaction.starting = false + + return trx + .rollback(ROLLBACK) + .then(() => promise) + .then(() => transaction.resolve && transaction.resolve(false)) + .then(() => debug('rolled back transaction %s', id)) + .then(() => context) +} diff --git a/packages/knex/src/index.ts b/packages/knex/src/index.ts new file mode 100644 index 0000000000..1fef087153 --- /dev/null +++ b/packages/knex/src/index.ts @@ -0,0 +1,47 @@ +import { PaginationOptions } from '@feathersjs/adapter-commons' +import { Paginated, ServiceMethods, Id, NullableId } from '@feathersjs/feathers' +import { KnexAdapter } from './adapter' +import { KnexAdapterParams } from './declarations' + +export * from './declarations' +export * from './adapter' +export * from './error-handler' +export * as transaction from './hooks' + +export class KnexService, P extends KnexAdapterParams = KnexAdapterParams> + extends KnexAdapter + implements ServiceMethods, D, P> +{ + async find(params?: P & { paginate?: PaginationOptions }): Promise> + async find(params?: P & { paginate: false }): Promise + async find(params?: P): Promise | T[]> + async find(params?: P): Promise | T[]> { + return this._find(params) as any + } + + async get(id: Id, params?: P): Promise { + return this._get(id, params) + } + + async create(data: Partial, params?: P): Promise + async create(data: Partial[], params?: P): Promise + async create(data: Partial | Partial[], params?: P): Promise { + return this._create(data, params) + } + + async update(id: Id, data: D, params?: P): Promise { + return this._update(id, data, params) + } + + async patch(id: Id, data: Partial, params?: P): Promise + async patch(id: null, data: Partial, params?: P): Promise + async patch(id: NullableId, data: Partial, params?: P): Promise { + return this._patch(id, data, params) + } + + async remove(id: Id, params?: P): Promise + async remove(id: null, params?: P): Promise + async remove(id: NullableId, params?: P): Promise { + return this._remove(id, params) + } +} diff --git a/packages/knex/test/connection.ts b/packages/knex/test/connection.ts new file mode 100644 index 0000000000..d635b77dbb --- /dev/null +++ b/packages/knex/test/connection.ts @@ -0,0 +1,32 @@ +export default (DB: string) => { + if (DB === 'mysql') { + return { + client: 'mysql', + connection: { + host: '127.0.0.1', + user: 'root', + password: '', + database: 'feathers_knex' + } + } + } + + if (DB === 'postgres') { + return { + client: 'postgresql', + connection: { + host: 'localhost', + database: 'sequelize', + user: 'postgres', + password: 'password' + } + } + } + + return { + client: 'sqlite3', + connection: { + filename: './db.sqlite' + } + } +} diff --git a/packages/knex/test/index.test.ts b/packages/knex/test/index.test.ts new file mode 100644 index 0000000000..62045197a3 --- /dev/null +++ b/packages/knex/test/index.test.ts @@ -0,0 +1,612 @@ +import knex, { Knex } from 'knex' +import assert from 'assert' +import { feathers, HookContext, Service } from '@feathersjs/feathers' +import adapterTests from '@feathersjs/adapter-tests' +import { errors } from '@feathersjs/errors' + +import connection from './connection' +import { KnexService, transaction } from '../src/index' + +const testSuite = adapterTests([ + '.options', + '.events', + '._get', + '._find', + '._create', + '._update', + '._patch', + '._remove', + '.$get', + '.$find', + '.$create', + '.$update', + '.$patch', + '.$remove', + '.get', + '.get + $select', + '.get + id + query', + '.get + NotFound', + '.get + id + query id', + '.find', + '.remove', + '.remove + $select', + '.remove + id + query', + '.remove + multi', + '.remove + multi no pagination', + '.remove + id + query id', + '.update', + '.update + $select', + '.update + id + query', + '.update + NotFound', + '.update + query + NotFound', + '.update + id + query id', + '.patch', + '.patch + $select', + '.patch + id + query', + '.patch multiple', + '.patch multiple no pagination', + '.patch multi query same', + '.patch multi query changed', + '.patch + NotFound', + '.patch + query + NotFound', + '.patch + id + query id', + '.create', + '.create + $select', + '.create multi', + 'internal .find', + 'internal .get', + 'internal .create', + 'internal .update', + 'internal .patch', + 'internal .remove', + '.find + equal', + '.find + equal multiple', + '.find + $sort', + '.find + $sort + string', + '.find + $limit', + '.find + $limit 0', + '.find + $skip', + '.find + $select', + '.find + $or', + '.find + $in', + '.find + $nin', + '.find + $lt', + '.find + $lte', + '.find + $gt', + '.find + $gte', + '.find + $ne', + '.find + $gt + $lt + $sort', + '.find + $or nested + $sort', + 'params.adapter + paginate', + 'params.adapter + multi', + '.find + paginate', + '.find + paginate + query', + '.find + paginate + $limit + $skip', + '.find + paginate + $limit 0', + '.find + paginate + params' +]) + +const TYPE = process.env.DB || 'sqlite' +const db = knex(connection(TYPE) as any) + +// Create a public database to mimic a "schema" +const schemaName = 'public' + +function clean() { + return Promise.all([ + db.schema.dropTableIfExists(people.fullName).then(() => { + return db.schema.createTable(people.fullName, (table) => { + table.increments('id') + table.string('name').notNullable() + table.integer('age') + table.integer('time') + table.boolean('created') + return table + }) + }), + db.schema.dropTableIfExists(peopleId.fullName).then(() => { + return db.schema.createTable(peopleId.fullName, (table) => { + table.increments('customid') + table.string('name') + table.integer('age') + table.integer('time') + table.boolean('created') + return table + }) + }), + db.schema.dropTableIfExists(users.fullName).then(() => { + return db.schema.createTable(users.fullName, (table) => { + table.increments('id') + table.string('name') + table.integer('age') + table.integer('time') + table.boolean('created') + return table + }) + }) + ]) +} + +type Person = { + id: number + name: string + age: number | null + time: string + create: boolean +} + +type ServiceTypes = { + people: KnexService + 'people-customid': KnexService + users: KnexService +} + +const people = new KnexService({ + Model: db, + name: 'people', + events: ['testing'] +}) + +const peopleId = new KnexService({ + Model: db, + id: 'customid', + name: 'people-customid', + events: ['testing'] +}) + +const users = new KnexService({ + Model: db, + name: 'users', + events: ['testing'] +}) + +describe('Feathers Knex Service', () => { + const app = feathers() + .hooks({ + before: [transaction.start()], + after: [transaction.end()], + error: [transaction.rollback()] + }) + .use('people', people) + .use('people-customid', peopleId) + .use('users', users) + const peopleService = app.service('people') + + before(() => { + if (TYPE === 'sqlite') { + // Attach the public database to mimic a "schema" + db.schema.raw(`attach database '${schemaName}.sqlite' as ${schemaName}`) + } + }) + before(clean) + after(clean) + + describe('$like method', () => { + let charlie: Person + + beforeEach(async () => { + charlie = await peopleService.create({ + name: 'Charlie Brown', + age: 10 + }) + }) + + afterEach(() => peopleService.remove(charlie.id)) + + it('$like in query', async () => { + const data = await peopleService.find({ + paginate: false, + query: { name: { $like: '%lie%' } } + }) + + assert.strictEqual(data[0].name, 'Charlie Brown') + }) + }) + + describe('$notlike method', () => { + let hasMatch: Person + let hasNoMatch: Person + + beforeEach(async () => { + hasMatch = await peopleService.create({ + name: 'XYZabcZYX' + }) + hasNoMatch = await peopleService.create({ + name: 'XYZZYX' + }) + }) + + afterEach(() => { + peopleService.remove(hasMatch.id) + peopleService.remove(hasNoMatch.id) + }) + + it('$notlike in query', async () => { + const data = await peopleService.find({ + paginate: false, + query: { name: { $notlike: '%abc%' } } + }) + + assert.strictEqual(data.length, 1) + assert.strictEqual(data[0].name, 'XYZZYX') + }) + }) + + describe('adapter specifics', () => { + let daves: Person[] + + beforeEach(async () => { + daves = await Promise.all([ + peopleService.create({ + name: 'Ageless', + age: null + }), + peopleService.create({ + name: 'Dave', + age: 32 + }), + peopleService.create({ + name: 'Dada', + age: 1 + }) + ]) + }) + + afterEach(async () => { + try { + await peopleService.remove(daves[0].id) + await peopleService.remove(daves[1].id) + await peopleService.remove(daves[2].id) + } catch (error: unknown) {} + }) + + it('$or works properly (#120)', async () => { + const data = await peopleService.find({ + paginate: false, + query: { + name: 'Dave', + $or: [ + { + age: 1 + }, + { + age: 32 + } + ] + } + }) + + assert.strictEqual(data.length, 1) + assert.strictEqual(data[0].name, 'Dave') + assert.strictEqual(data[0].age, 32) + }) + + it('$and works properly', async () => { + const data = await peopleService.find({ + paginate: false, + query: { + $and: [ + { + $or: [{ name: 'Dave' }, { name: 'Dada' }] + }, + { + age: { $lt: 23 } + } + ] + } + }) + + assert.strictEqual(data.length, 1) + assert.strictEqual(data[0].name, 'Dada') + assert.strictEqual(data[0].age, 1) + }) + + it('where conditions support NULL values properly', async () => { + const data = await peopleService.find({ + paginate: false, + query: { + age: null + } + }) + + assert.strictEqual(data.length, 1) + assert.strictEqual(data[0].name, 'Ageless') + assert.strictEqual(data[0].age, null) + }) + + it('where conditions support NOT NULL case properly', async () => { + const data = await peopleService.find({ + paginate: false, + query: { + age: { $ne: null } + } + }) + + assert.strictEqual(data.length, 2) + assert.notStrictEqual(data[0].name, 'Ageless') + assert.notStrictEqual(data[0].age, null) + assert.notStrictEqual(data[1].name, 'Ageless') + assert.notStrictEqual(data[1].age, null) + }) + + it('where conditions support NULL values within AND conditions', async () => { + const data = await peopleService.find({ + paginate: false, + query: { + age: null, + name: 'Ageless' + } + }) + + assert.strictEqual(data.length, 1) + assert.strictEqual(data[0].name, 'Ageless') + assert.strictEqual(data[0].age, null) + }) + + it('where conditions support NULL values within OR conditions', async () => { + const data = await peopleService.find({ + paginate: false, + query: { + $or: [ + { + age: null + }, + { + name: 'Dada' + } + ] + } + }) + + assert.strictEqual(data.length, 2) + assert.notStrictEqual(data[0].name, 'Dave') + assert.notStrictEqual(data[0].age, 32) + assert.notStrictEqual(data[1].name, 'Dave') + assert.notStrictEqual(data[1].age, 32) + }) + + it('attaches the SQL error', async () => { + await assert.rejects(() => peopleService.create({}), { + name: 'GeneralError' + }) + }) + }) + + describe('hooks', () => { + afterEach(async () => { + await db('people').truncate() + }) + + it('does reject on problem with commit', async () => { + const app = feathers() + + app.hooks({ + before: transaction.start(), + after: [ + (context: HookContext) => { + const client = context.params.transaction.trx.client + const query = client.query + + client.query = (conn: any, sql: any) => { + let result = query.call(client, conn, sql) + + if (sql === 'COMMIT;') { + result = result.then(() => { + throw new TypeError('Deliberate') + }) + } + + return result + } + }, + transaction.end() + ], + error: transaction.rollback() + }) + + app.use('/people', people) + + await assert.rejects(() => app.service('/people').create({ name: 'Foo' }), { + message: 'Deliberate' + }) + }) + + it('does commit, rollback, nesting', async () => { + const app = feathers<{ + people: typeof people + test: Pick & { Model: Knex } + }>() + + app.hooks({ + before: transaction.start(), + after: transaction.end(), + error: transaction.rollback() + }) + + app.use('people', people) + + app.use('test', { + Model: db, + create: async (data: any, params) => { + const created = await app.service('people').create({ name: 'Foo' }, { ...params }) + + if (data.throw) { + throw new TypeError('Deliberate') + } + + return created + } + }) + + await assert.rejects(() => app.service('test').create({ throw: true }), { + message: 'Deliberate' + }) + + assert.strictEqual((await app.service('people').find({ paginate: false })).length, 0) + + await app.service('test').create({}) + + assert.strictEqual((await app.service('people').find({ paginate: false })).length, 1) + }) + + it('does use savepoints for nested calls', async () => { + const app = feathers<{ + people: typeof people + success: Pick & { Model: Knex } + fail: Pick & { Model: Knex } + test: Pick & { Model: Knex } + }>() + + app.hooks({ + before: transaction.start(), + after: transaction.end(), + error: transaction.rollback() + }) + + app.use('people', people) + + app.use('success', { + Model: db, + create: async (_data, params) => { + return app.service('people').create({ name: 'Success' }, { ...params }) + } + }) + + app.use('fail', { + Model: db, + create: async (_data, params) => { + await app.service('people').create({ name: 'Fail' }, { ...params }) + throw new TypeError('Deliberate') + } + }) + + app.use('test', { + Model: db, + create: async (_data, params) => { + await app.service('success').create({}, { ...params }) + await app + .service('fail') + .create({}, { ...params }) + // eslint-disable-next-line @typescript-eslint/no-empty-function + .catch(() => {}) + return [] + } + }) + + await app.service('test').create({}) + + const created = await app.service('people').find({ paginate: false }) + + assert.strictEqual(created.length, 1) + assert.ok(created[0].name) + }) + + it('allows waiting for transaction to complete', async () => { + const app = feathers<{ + people: typeof people + test: Pick & { Model: Knex } + }>() + + let seq: string[] = [] + + app.hooks({ + before: [ + transaction.start(), + (context: HookContext) => { + seq.push(`${context.path}: waiting for trx to be committed`) + context.params.transaction.committed.then((success: any) => { + seq.push(`${context.path}: committed ${success}`) + }) + }, + async (context: HookContext) => { + seq.push(`${context.path}: another hook`) + } + ], + after: [ + transaction.end(), + (context: HookContext) => { + seq.push(`${context.path}: trx ended`) + } + ], + error: [ + transaction.rollback(), + (context: HookContext) => { + seq.push(`${context.path}: trx rolled back`) + } + ] + }) + + app.use('people', people) + + app.use('test', { + Model: db, + create: async (data: any, params) => { + const peeps = await app.service('people').create({ name: 'Foo' }, { ...params }) + + if (data.throw) { + throw new TypeError('Deliberate') + } + return peeps + } + }) + + assert.deepStrictEqual(seq, []) + + await assert.rejects(() => app.service('test').create({ throw: true }), { + message: 'Deliberate' + }) + + assert.deepStrictEqual(seq, [ + 'test: waiting for trx to be committed', + 'test: another hook', + 'people: waiting for trx to be committed', + 'people: another hook', + 'people: trx ended', + 'test: committed false', + 'people: committed false', + 'test: trx rolled back' + ]) + + seq = [] + + assert.strictEqual((await app.service('people').find({ paginate: false })).length, 0) + + assert.deepStrictEqual(seq, [ + 'people: waiting for trx to be committed', + 'people: another hook', + 'people: committed true', + 'people: trx ended' + ]) + + seq = [] + + await app.service('test').create({}) + + assert.deepStrictEqual(seq, [ + 'test: waiting for trx to be committed', + 'test: another hook', + 'people: waiting for trx to be committed', + 'people: another hook', + 'people: trx ended', + 'test: committed true', + 'people: committed true', + 'test: trx ended' + ]) + + seq = [] + + assert.strictEqual((await app.service('people').find({ paginate: false })).length, 1) + + assert.deepStrictEqual(seq, [ + 'people: waiting for trx to be committed', + 'people: another hook', + 'people: committed true', + 'people: trx ended' + ]) + }) + }) + + testSuite(app, errors, 'users') + testSuite(app, errors, 'people') + testSuite(app, errors, 'people-customid', 'customid') +}) diff --git a/packages/knex/test/overrides.test.ts b/packages/knex/test/overrides.test.ts new file mode 100644 index 0000000000..076dc3c6b4 --- /dev/null +++ b/packages/knex/test/overrides.test.ts @@ -0,0 +1,125 @@ +import knex from 'knex' +import assert from 'assert' +import { feathers, Paginated } from '@feathersjs/feathers' +import { KnexAdapterParams, KnexService, transaction } from '../src' +import { PaginationOptions } from '@feathersjs/adapter-commons' + +// const { transaction } = service.hooks + +const db = knex({ + client: 'sqlite3', + connection: { + filename: './db.sqlite' + } +}) + +const schemaName = 'overrides' + +knex({ + client: 'sqlite3', + connection: { + filename: `./${schemaName}.sqlite` + } +}) + +type Animal = { + id: number + ancestor_id: number + ancestor_name: string + name: string +} + +/** + * Override the _find() method to manipulate the knex query, and + * introduce ambiguity by the table to itself. + */ +class AnimalService extends KnexService { + async $find(params?: P & { paginate?: PaginationOptions }): Promise> + async $find(params?: P & { paginate: false }): Promise + async $find(params?: P): Promise | T[]> + async $find(params: P = {} as P): Promise | T[]> { + const knexQuery = this.createQuery(params) + knexQuery + .select('ancestors.name as ancestor_name') + .leftJoin('animals as ancestors', 'ancestors.id', '=', 'animals.ancestor_id') + params.knex = knexQuery + return super.$find(params) + } +} + +const animals = new AnimalService({ + Model: db, + name: 'animals', + events: ['testing'] +}) + +function clean() { + return db.schema.dropTableIfExists(animals.fullName).then(() => { + return db.schema.createTable(animals.fullName, (table) => { + table.increments('id') + table.integer('ancestor_id') + table.string('name').notNullable() + return table + }) + }) +} + +describe('Feathers Knex Overridden Method With Self-Join', () => { + let ancestor: Animal + let animal: Animal + + const app = feathers<{ animals: AnimalService }>() + .hooks({ + before: [transaction.start()], + after: [transaction.end()], + error: [transaction.rollback()] + }) + .use('animals', animals) + const animalService = app.service('animals') + + before(() => { + return db.schema.raw(`attach database '${schemaName}.sqlite' as ${schemaName}`) + }) + before(clean) + after(clean) + + beforeEach(async () => { + ancestor = await animalService.create({ + name: 'Ape' + }) + animal = await animalService.create({ + ancestor_id: ancestor.id, + name: 'Human' + }) + }) + + it('finds properly', async () => { + const foundAnimals = await animalService.find({ + paginate: false, + query: { + $limit: 1, + ancestor_name: 'Ape' + } + }) + assert.strictEqual(foundAnimals[0].id, animal.id) + assert.strictEqual(foundAnimals[0].name, 'Human') + assert.strictEqual(foundAnimals[0].ancestor_name, 'Ape') + }) + + /** + * Previously, any query modified to include joins with ambiguous primary keys + * would yield an ambiguous column errors: + * BadRequest: select `animals`.* + * from `animals` + * left join `animals` as `ancestors` on `ancestors`.`id` = `animals`.`ancestor_id` + * where `id` in (2) - SQLITE_ERROR: ambiguous column name: id + * + * The fix involves explicitly specifying the table to query in the _patch() method + */ + it('patches without ambiguous query', async () => { + const newName = 'Homo Sapiens' + const patchedAnimal = await animalService.patch(animal.id, { name: newName }) + + assert.strictEqual(patchedAnimal.name, newName) + }) +}) diff --git a/_templates/package/new/tsconfig.json.t b/packages/knex/tsconfig.json similarity index 72% rename from _templates/package/new/tsconfig.json.t rename to packages/knex/tsconfig.json index 2bd96b2c60..316fd41336 100644 --- a/_templates/package/new/tsconfig.json.t +++ b/packages/knex/tsconfig.json @@ -1,7 +1,3 @@ ---- -to: packages/<%= name %>/tsconfig.json ---- - { "extends": "../../tsconfig", "include": [ diff --git a/packages/koa/CHANGELOG.md b/packages/koa/CHANGELOG.md index 1c17ec22e4..ae22ecfde5 100644 --- a/packages/koa/CHANGELOG.md +++ b/packages/koa/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + + +### Features + +* **cli:** Add support for JavaScript to the new CLI ([#2668](https://github.com/feathersjs/feathers/issues/2668)) ([ebac587](https://github.com/feathersjs/feathers/commit/ebac587f7d00dc7607c3f546352d79f79b89a5d4)) +* **cli:** Initial Feathers v5 CLI and Pinion generator ([#2578](https://github.com/feathersjs/feathers/issues/2578)) ([7f59ae7](https://github.com/feathersjs/feathers/commit/7f59ae7f1471895ba8a82aa4702f1a23f71b7682)) + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) **Note:** Version bump only for package @feathersjs/koa diff --git a/packages/koa/package.json b/packages/koa/package.json index 7d6e45569d..07dd589874 100644 --- a/packages/koa/package.json +++ b/packages/koa/package.json @@ -1,7 +1,7 @@ { "name": "@feathersjs/koa", "description": "Feathers KoaJS framework bindings and REST provider", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "homepage": "https://feathersjs.com", "main": "lib/", "types": "lib/", @@ -48,10 +48,10 @@ "access": "public" }, "dependencies": { - "@feathersjs/authentication": "^5.0.0-pre.23", - "@feathersjs/commons": "^5.0.0-pre.23", - "@feathersjs/errors": "^5.0.0-pre.23", - "@feathersjs/transport-commons": "^5.0.0-pre.23", + "@feathersjs/authentication": "^5.0.0-pre.24", + "@feathersjs/commons": "^5.0.0-pre.24", + "@feathersjs/errors": "^5.0.0-pre.24", + "@feathersjs/transport-commons": "^5.0.0-pre.24", "@types/koa": "^2.13.4", "@types/koa-bodyparser": "^4.3.7", "@types/koa-qs": "^2.0.0", @@ -61,10 +61,10 @@ "koa-qs": "^3.0.0" }, "devDependencies": { - "@feathersjs/authentication-local": "^5.0.0-pre.23", - "@feathersjs/feathers": "^5.0.0-pre.23", - "@feathersjs/memory": "^5.0.0-pre.23", - "@feathersjs/tests": "^5.0.0-pre.23", + "@feathersjs/authentication-local": "^5.0.0-pre.24", + "@feathersjs/feathers": "^5.0.0-pre.24", + "@feathersjs/memory": "^5.0.0-pre.24", + "@feathersjs/tests": "^5.0.0-pre.24", "@types/koa-compose": "^3.2.5", "@types/mocha": "^9.1.1", "@types/node": "^17.0.40", @@ -74,5 +74,5 @@ "ts-node": "^10.8.1", "typescript": "^4.7.3" }, - "gitHead": "e452e02063e6d8943a9cae2315ab585bc4f82fb6" + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" } diff --git a/packages/koa/src/index.ts b/packages/koa/src/index.ts index 74681218c9..7047422696 100644 --- a/packages/koa/src/index.ts +++ b/packages/koa/src/index.ts @@ -3,12 +3,10 @@ import koaQs from 'koa-qs' import { Application as FeathersApplication } from '@feathersjs/feathers' import { routing } from '@feathersjs/transport-commons' import { createDebug } from '@feathersjs/commons' - +import bodyParser from 'koa-bodyparser' import { Application } from './declarations' -export { default as Koa } from 'koa' -export { default as bodyParser } from 'koa-bodyparser' - +export { Koa, bodyParser } export * from './authentication' export * from './declarations' export * from './handlers' diff --git a/packages/memory/CHANGELOG.md b/packages/memory/CHANGELOG.md index ed848a886d..25862a556b 100644 --- a/packages/memory/CHANGELOG.md +++ b/packages/memory/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + + +### Features + +* **cli:** Initial Feathers v5 CLI and Pinion generator ([#2578](https://github.com/feathersjs/feathers/issues/2578)) ([7f59ae7](https://github.com/feathersjs/feathers/commit/7f59ae7f1471895ba8a82aa4702f1a23f71b7682)) + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) **Note:** Version bump only for package @feathersjs/memory diff --git a/packages/memory/_templates/memory/service/index.js b/packages/memory/_templates/memory/service/index.js new file mode 100644 index 0000000000..f276f1b449 --- /dev/null +++ b/packages/memory/_templates/memory/service/index.js @@ -0,0 +1,12 @@ +module.exports = { + async prompt ({ config, args }) { + const { helpers } = config; + const result = await helpers.generate({ + generator: 'service', + action: 'base', + args + }); + + return result.args; + } +} diff --git a/packages/memory/_templates/memory/service/js/class.js.t b/packages/memory/_templates/memory/service/js/class.js.t new file mode 100644 index 0000000000..03a479c897 --- /dev/null +++ b/packages/memory/_templates/memory/service/js/class.js.t @@ -0,0 +1,8 @@ +--- +to: "<%= h.lib %>/services/<%= path %>.js" +inject: true +after: "The <%= className %> service class" +--- + +export class <%= className %> extends Service { +} \ No newline at end of file diff --git a/packages/memory/_templates/memory/service/js/import.js.t b/packages/memory/_templates/memory/service/js/import.js.t new file mode 100644 index 0000000000..44baad49d4 --- /dev/null +++ b/packages/memory/_templates/memory/service/js/import.js.t @@ -0,0 +1,6 @@ +--- +to: "<%= h.lib %>/services/<%= path %>.js" +inject: true +prepend: true +--- +import { Service } from '@feathersjs/memory'; \ No newline at end of file diff --git a/packages/memory/package.json b/packages/memory/package.json index 605f1a3bcc..0df78ec62a 100644 --- a/packages/memory/package.json +++ b/packages/memory/package.json @@ -1,7 +1,7 @@ { "name": "@feathersjs/memory", "description": "An in memory service store", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "homepage": "https://github.com/feathersjs/feathers", "main": "lib/", "types": "lib/", @@ -31,6 +31,7 @@ "CHANGELOG.md", "LICENSE", "README.md", + "_templates/**", "src/**", "lib/**", "*.js" @@ -47,14 +48,14 @@ "lib": "lib" }, "dependencies": { - "@feathersjs/adapter-commons": "^5.0.0-pre.23", - "@feathersjs/commons": "^5.0.0-pre.23", - "@feathersjs/errors": "^5.0.0-pre.23", + "@feathersjs/adapter-commons": "^5.0.0-pre.24", + "@feathersjs/commons": "^5.0.0-pre.24", + "@feathersjs/errors": "^5.0.0-pre.24", "sift": "^16.0.0" }, "devDependencies": { - "@feathersjs/adapter-tests": "^5.0.0-pre.23", - "@feathersjs/feathers": "^5.0.0-pre.23", + "@feathersjs/adapter-tests": "^5.0.0-pre.24", + "@feathersjs/feathers": "^5.0.0-pre.24", "@types/mocha": "^9.1.1", "@types/node": "^17.0.40", "mocha": "^10.0.0", @@ -62,5 +63,5 @@ "ts-node": "^10.8.1", "typescript": "^4.7.3" }, - "gitHead": "e452e02063e6d8943a9cae2315ab585bc4f82fb6" + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" } diff --git a/packages/mongodb/CHANGELOG.md b/packages/mongodb/CHANGELOG.md index 136db3353b..abffdf92fd 100644 --- a/packages/mongodb/CHANGELOG.md +++ b/packages/mongodb/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + + +### Features + +* **authentication-local:** Add passwordHash property resolver ([#2660](https://github.com/feathersjs/feathers/issues/2660)) ([b41279b](https://github.com/feathersjs/feathers/commit/b41279b55eea3771a6fa4983a37be2413287bbc6)) +* **knex:** Add KnexJS SQL database adapter to core ([#2671](https://github.com/feathersjs/feathers/issues/2671)) ([9380fff](https://github.com/feathersjs/feathers/commit/9380fff58596e8bb90b8bb098d2795b7eadfec20)) + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) **Note:** Version bump only for package @feathersjs/mongodb diff --git a/packages/mongodb/package.json b/packages/mongodb/package.json index 209b91b0c5..92a72b43a2 100644 --- a/packages/mongodb/package.json +++ b/packages/mongodb/package.json @@ -1,7 +1,7 @@ { "name": "@feathersjs/mongodb", "description": "Feathers MongoDB service adapter", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "homepage": "https://feathersjs.com", "main": "lib/", "keywords": [ @@ -50,16 +50,16 @@ "access": "public" }, "dependencies": { - "@feathersjs/adapter-commons": "^5.0.0-pre.23", - "@feathersjs/commons": "^5.0.0-pre.23", - "@feathersjs/errors": "^5.0.0-pre.23", - "@feathersjs/feathers": "^5.0.0-pre.23" + "@feathersjs/adapter-commons": "^5.0.0-pre.24", + "@feathersjs/commons": "^5.0.0-pre.24", + "@feathersjs/errors": "^5.0.0-pre.24", + "@feathersjs/feathers": "^5.0.0-pre.24" }, "peerDependencies": { "mongodb": "^4.5.0" }, "devDependencies": { - "@feathersjs/adapter-tests": "^5.0.0-pre.23", + "@feathersjs/adapter-tests": "^5.0.0-pre.24", "@types/mocha": "^9.1.1", "@types/node": "^17.0.40", "mocha": "^10.0.0", @@ -67,5 +67,5 @@ "shx": "^0.3.4", "typescript": "^4.7.3" }, - "gitHead": "e452e02063e6d8943a9cae2315ab585bc4f82fb6" + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" } diff --git a/packages/mongodb/src/adapter.ts b/packages/mongodb/src/adapter.ts index 35e6bd30fb..263d06866e 100644 --- a/packages/mongodb/src/adapter.ts +++ b/packages/mongodb/src/adapter.ts @@ -237,7 +237,7 @@ export class MongoDbAdapter< const model = await Promise.resolve(Model) const { query, - filters: { $select, $limit } + filters: { $select } } = this.filterQuery(id, params) const updateOptions = { ...params.mongodb } const modifier = Object.keys(data).reduce((current, key) => { @@ -268,7 +268,6 @@ export class MongoDbAdapter< ...params, paginate: false, query: { - ...($limit === 0 ? { $limit: 0 } : {}), [this.id]: { $in: idList }, $select } @@ -298,7 +297,7 @@ export class MongoDbAdapter< const model = await Promise.resolve(Model) const { query, - filters: { $select, $limit } + filters: { $select } } = this.filterQuery(id, params) const deleteOptions = { ...params.mongodb } const findParams = { @@ -306,7 +305,6 @@ export class MongoDbAdapter< paginate: false, query: { ...query, - ...($limit === 0 ? { $limit: 0 } : {}), $select } } diff --git a/packages/mongodb/src/index.ts b/packages/mongodb/src/index.ts index bb36a0c946..b6edcbbbc3 100644 --- a/packages/mongodb/src/index.ts +++ b/packages/mongodb/src/index.ts @@ -5,7 +5,11 @@ import { MongoDbAdapter, MongoDBAdapterParams } from './adapter' export * from './adapter' export * from './error-handler' -export class MongoDBService, P extends MongoDBAdapterParams = MongoDBAdapterParams> +export class MongoDBService< + T = any, + D = Partial, + P extends MongoDBAdapterParams = MongoDBAdapterParams + > extends MongoDbAdapter implements ServiceMethods, D, P> { diff --git a/packages/rest-client/CHANGELOG.md b/packages/rest-client/CHANGELOG.md index 72abb17f8e..26f739dd6a 100644 --- a/packages/rest-client/CHANGELOG.md +++ b/packages/rest-client/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + + +### Features + +* **cli:** Add typed client to a generated app ([#2669](https://github.com/feathersjs/feathers/issues/2669)) ([5b801b5](https://github.com/feathersjs/feathers/commit/5b801b5017ddc3eaa95622b539f51d605916bc86)) + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) diff --git a/packages/rest-client/package.json b/packages/rest-client/package.json index ae5e56660b..737ec7f812 100644 --- a/packages/rest-client/package.json +++ b/packages/rest-client/package.json @@ -1,7 +1,7 @@ { "name": "@feathersjs/rest-client", "description": "REST client services for different Ajax libraries", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "homepage": "https://feathersjs.com", "main": "lib/", "types": "lib/", @@ -52,16 +52,16 @@ "access": "public" }, "dependencies": { - "@feathersjs/commons": "^5.0.0-pre.23", - "@feathersjs/errors": "^5.0.0-pre.23", - "@feathersjs/feathers": "^5.0.0-pre.23", + "@feathersjs/commons": "^5.0.0-pre.24", + "@feathersjs/errors": "^5.0.0-pre.24", + "@feathersjs/feathers": "^5.0.0-pre.24", "@types/superagent": "^4.1.15", "qs": "^6.10.3" }, "devDependencies": { - "@feathersjs/express": "^5.0.0-pre.23", - "@feathersjs/memory": "^5.0.0-pre.23", - "@feathersjs/tests": "^5.0.0-pre.23", + "@feathersjs/express": "^5.0.0-pre.24", + "@feathersjs/memory": "^5.0.0-pre.24", + "@feathersjs/tests": "^5.0.0-pre.24", "@types/mocha": "^9.1.1", "@types/node": "^17.0.40", "@types/node-fetch": "^2.6.1", @@ -75,5 +75,5 @@ "ts-node": "^10.8.1", "typescript": "^4.7.3" }, - "gitHead": "e452e02063e6d8943a9cae2315ab585bc4f82fb6" + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" } diff --git a/packages/rest-client/src/index.ts b/packages/rest-client/src/index.ts index 49e3166d25..d0afbaf7a5 100644 --- a/packages/rest-client/src/index.ts +++ b/packages/rest-client/src/index.ts @@ -1,4 +1,4 @@ -import { Application, defaultServiceMethods } from '@feathersjs/feathers' +import { Application, TransportConnection, defaultServiceMethods } from '@feathersjs/feathers' import { Base } from './base' import { AxiosClient } from './axios' @@ -13,34 +13,21 @@ const transports = { axios: AxiosClient } -interface HandlerResult extends Function { - /** - * initialize service - */ - (): void - - /** - * Transport Service - */ - Service: any - - /** - * default Service - */ - service: any -} - -export type Handler = (connection: any, options?: any, Service?: any) => HandlerResult +export type Handler = ( + connection: any, + options?: any, + Service?: any +) => TransportConnection -export interface Transport { - superagent: Handler - fetch: Handler - axios: Handler +export interface Transport { + superagent: Handler + fetch: Handler + axios: Handler } export type RestService> = Base -export default function restClient(base = '') { +export default function restClient(base = '') { const result: any = { Base } Object.keys(transports).forEach((key) => { @@ -81,7 +68,7 @@ export default function restClient(base = '') { } }) - return result as Transport + return result as Transport } if (typeof module !== 'undefined') { diff --git a/packages/rest-client/test/axios.test.ts b/packages/rest-client/test/axios.test.ts index 1dc6ba7828..84da787221 100644 --- a/packages/rest-client/test/axios.test.ts +++ b/packages/rest-client/test/axios.test.ts @@ -12,7 +12,7 @@ import { ServiceTypes } from './declarations' describe('Axios REST connector', function () { const url = 'http://localhost:8889' - const connection = rest(url).axios(axios) + const connection = rest(url).axios(axios) const app = feathers() .configure(connection) .use('todos', connection.service('todos'), { diff --git a/packages/rest-client/test/fetch.test.ts b/packages/rest-client/test/fetch.test.ts index bd4b380aa8..54ea3cec8e 100644 --- a/packages/rest-client/test/fetch.test.ts +++ b/packages/rest-client/test/fetch.test.ts @@ -11,7 +11,7 @@ import { ServiceTypes } from './declarations' describe('fetch REST connector', function () { const url = 'http://localhost:8889' - const connection = rest(url).fetch(fetch) + const connection = rest(url).fetch(fetch) const app = feathers() .configure(connection) .use('todos', connection.service('todos'), { diff --git a/packages/schema/CHANGELOG.md b/packages/schema/CHANGELOG.md index b5dff78d36..41626698e7 100644 --- a/packages/schema/CHANGELOG.md +++ b/packages/schema/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + + +### Bug Fixes + +* **schema:** Fix dispatch resovler hook to convert actually resolved data ([#2663](https://github.com/feathersjs/feathers/issues/2663)) ([f7e87db](https://github.com/feathersjs/feathers/commit/f7e87dbb9a0bc8d89aee47318dddbaa4d6ba5b91)) + + +### Features + +* **cli:** Add typed client to a generated app ([#2669](https://github.com/feathersjs/feathers/issues/2669)) ([5b801b5](https://github.com/feathersjs/feathers/commit/5b801b5017ddc3eaa95622b539f51d605916bc86)) + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) diff --git a/packages/schema/package.json b/packages/schema/package.json index c06fe76fdc..66531555c5 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -1,7 +1,7 @@ { "name": "@feathersjs/schema", "description": "A common data schema definition format", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "homepage": "https://feathersjs.com", "main": "lib/", "types": "lib/", @@ -53,9 +53,9 @@ "access": "public" }, "dependencies": { - "@feathersjs/commons": "^5.0.0-pre.23", - "@feathersjs/errors": "^5.0.0-pre.23", - "@feathersjs/feathers": "^5.0.0-pre.23", + "@feathersjs/commons": "^5.0.0-pre.24", + "@feathersjs/errors": "^5.0.0-pre.24", + "@feathersjs/feathers": "^5.0.0-pre.24", "@feathersjs/hooks": "^0.7.5", "@types/json-schema": "^7.0.11", "ajv": "^8.11.0", @@ -63,7 +63,7 @@ "json-schema-to-ts": "^2.5.3" }, "devDependencies": { - "@feathersjs/memory": "^5.0.0-pre.23", + "@feathersjs/memory": "^5.0.0-pre.24", "@types/mocha": "^9.1.1", "@types/node": "^17.0.40", "ajv-formats": "^2.1.1", @@ -71,5 +71,5 @@ "shx": "^0.3.4", "typescript": "^4.7.3" }, - "gitHead": "e452e02063e6d8943a9cae2315ab585bc4f82fb6" + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" } diff --git a/packages/schema/src/hooks/resolve.ts b/packages/schema/src/hooks/resolve.ts index 8c36b5778a..c891ec1b65 100644 --- a/packages/schema/src/hooks/resolve.ts +++ b/packages/schema/src/hooks/resolve.ts @@ -143,10 +143,10 @@ export const resolveDispatch = const status = context.params.resolve const { isPaginated, data } = getData(context) const resolveAndGetDispatch = async (current: any) => { - const resolved = await runResolvers(resolvers, current, ctx, status) + const resolved: any = await runResolvers(resolvers, current, ctx, status) return Object.keys(resolved).reduce((res, key) => { - res[key] = getDispatch(current[key]) + res[key] = getDispatch(resolved[key]) return res }, {} as any) diff --git a/packages/schema/src/query.ts b/packages/schema/src/query.ts index a8535fda8c..e786069ea5 100644 --- a/packages/schema/src/query.ts +++ b/packages/schema/src/query.ts @@ -63,7 +63,7 @@ export const queryProperties = (definit return result }, {} as { [K in keyof T]: PropertyQuery }) -export const querySyntax = (definition: T) => +export const querySyntax = (definition: T) => ({ $limit: { type: 'number', diff --git a/packages/schema/test/fixture.ts b/packages/schema/test/fixture.ts index 05f83d199d..d32932fc8c 100644 --- a/packages/schema/test/fixture.ts +++ b/packages/schema/test/fixture.ts @@ -63,7 +63,8 @@ export const userResultResolver = resolve>( export const userDispatchResolver = resolve>({ schema: userResultSchema, properties: { - password: () => undefined + password: async () => undefined, + email: async () => '[redacted]' } }) diff --git a/packages/schema/test/hooks.test.ts b/packages/schema/test/hooks.test.ts index 84e10c0d1f..de1a2b22da 100644 --- a/packages/schema/test/hooks.test.ts +++ b/packages/schema/test/hooks.test.ts @@ -159,8 +159,8 @@ describe('@feathersjs/schema/hooks', () => { userId: 0, id: 0, user: { - email: 'hello@feathersjs.com', id: 0, + email: '[redacted]', name: 'hello (hello@feathersjs.com)' } }) diff --git a/packages/socketio-client/CHANGELOG.md b/packages/socketio-client/CHANGELOG.md index d61037bb5d..f2548ad7d0 100644 --- a/packages/socketio-client/CHANGELOG.md +++ b/packages/socketio-client/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + + +### Features + +* **cli:** Add typed client to a generated app ([#2669](https://github.com/feathersjs/feathers/issues/2669)) ([5b801b5](https://github.com/feathersjs/feathers/commit/5b801b5017ddc3eaa95622b539f51d605916bc86)) + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) diff --git a/packages/socketio-client/package.json b/packages/socketio-client/package.json index 7316e07312..604a250af1 100644 --- a/packages/socketio-client/package.json +++ b/packages/socketio-client/package.json @@ -1,7 +1,7 @@ { "name": "@feathersjs/socketio-client", "description": "The client for Socket.io through feathers-socketio", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "homepage": "https://feathersjs.com", "main": "lib/", "types": "lib/", @@ -53,14 +53,14 @@ "access": "public" }, "dependencies": { - "@feathersjs/transport-commons": "^5.0.0-pre.23" + "@feathersjs/transport-commons": "^5.0.0-pre.24" }, "devDependencies": { - "@feathersjs/commons": "^5.0.0-pre.23", - "@feathersjs/feathers": "^5.0.0-pre.23", - "@feathersjs/memory": "^5.0.0-pre.23", - "@feathersjs/socketio": "^5.0.0-pre.23", - "@feathersjs/tests": "^5.0.0-pre.23", + "@feathersjs/commons": "^5.0.0-pre.24", + "@feathersjs/feathers": "^5.0.0-pre.24", + "@feathersjs/memory": "^5.0.0-pre.24", + "@feathersjs/socketio": "^5.0.0-pre.24", + "@feathersjs/tests": "^5.0.0-pre.24", "@types/mocha": "^9.1.1", "@types/node": "^17.0.40", "mocha": "^10.0.0", @@ -69,5 +69,5 @@ "ts-node": "^10.8.1", "typescript": "^4.7.3" }, - "gitHead": "e452e02063e6d8943a9cae2315ab585bc4f82fb6" + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" } diff --git a/packages/socketio-client/src/index.ts b/packages/socketio-client/src/index.ts index 1b43ee744b..34c9102982 100644 --- a/packages/socketio-client/src/index.ts +++ b/packages/socketio-client/src/index.ts @@ -1,6 +1,11 @@ import { Service, SocketService } from '@feathersjs/transport-commons/client' import { Socket } from 'socket.io-client' -import { Application, defaultEventMap, defaultServiceMethods } from '@feathersjs/feathers' +import { + Application, + TransportConnection, + defaultEventMap, + defaultServiceMethods +} from '@feathersjs/feathers' export { SocketService } @@ -14,7 +19,7 @@ declare module '@feathersjs/feathers/lib/declarations' { } } -export default function socketioClient(connection: Socket, options?: any) { +export default function socketioClient(connection: Socket, options?: any) { if (!connection) { throw new Error('Socket.io connection needs to be provided') } @@ -31,7 +36,7 @@ export default function socketioClient(connection: Socket, options?: any) { return new Service(settings) as any } - const initialize = function (app: Application) { + const initialize = function (app: Application) { if (app.io !== undefined) { throw new Error('Only one default client provider can be configured') } @@ -50,7 +55,7 @@ export default function socketioClient(connection: Socket, options?: any) { initialize.Service = Service initialize.service = defaultService - return initialize + return initialize as TransportConnection } if (typeof module !== 'undefined') { diff --git a/packages/socketio-client/test/index.test.ts b/packages/socketio-client/test/index.test.ts index 239e61adb9..e7d45fbfa4 100644 --- a/packages/socketio-client/test/index.test.ts +++ b/packages/socketio-client/test/index.test.ts @@ -26,7 +26,7 @@ describe('@feathersjs/socketio-client', () => { server = await createServer().listen(9988) socket = io('http://localhost:9988') - const connection = socketio(socket) + const connection = socketio(socket) app.configure(connection) app.use('todos', connection.service('todos'), { diff --git a/packages/socketio/CHANGELOG.md b/packages/socketio/CHANGELOG.md index 9b8c69c9a7..77b36394f4 100644 --- a/packages/socketio/CHANGELOG.md +++ b/packages/socketio/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + +**Note:** Version bump only for package @feathersjs/socketio + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) **Note:** Version bump only for package @feathersjs/socketio diff --git a/packages/socketio/package.json b/packages/socketio/package.json index dab8393ff4..70a6392791 100644 --- a/packages/socketio/package.json +++ b/packages/socketio/package.json @@ -1,7 +1,7 @@ { "name": "@feathersjs/socketio", "description": "The Feathers Socket.io real-time API provider", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "homepage": "https://feathersjs.com", "main": "lib/", "types": "lib/", @@ -52,15 +52,15 @@ "access": "public" }, "dependencies": { - "@feathersjs/commons": "^5.0.0-pre.23", - "@feathersjs/feathers": "^5.0.0-pre.23", - "@feathersjs/transport-commons": "^5.0.0-pre.23", + "@feathersjs/commons": "^5.0.0-pre.24", + "@feathersjs/feathers": "^5.0.0-pre.24", + "@feathersjs/transport-commons": "^5.0.0-pre.24", "socket.io": "^4.5.1" }, "devDependencies": { - "@feathersjs/express": "^5.0.0-pre.23", - "@feathersjs/memory": "^5.0.0-pre.23", - "@feathersjs/tests": "^5.0.0-pre.23", + "@feathersjs/express": "^5.0.0-pre.24", + "@feathersjs/memory": "^5.0.0-pre.24", + "@feathersjs/tests": "^5.0.0-pre.24", "@types/mocha": "^9.1.1", "@types/node": "^17.0.40", "lodash": "^4.17.21", @@ -69,5 +69,5 @@ "socket.io-client": "^4.5.1", "typescript": "^4.7.3" }, - "gitHead": "e452e02063e6d8943a9cae2315ab585bc4f82fb6" + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" } diff --git a/packages/tests/CHANGELOG.md b/packages/tests/CHANGELOG.md index 5895d516aa..23e4de4613 100644 --- a/packages/tests/CHANGELOG.md +++ b/packages/tests/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + +**Note:** Version bump only for package @feathersjs/tests + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) **Note:** Version bump only for package @feathersjs/tests diff --git a/packages/tests/package.json b/packages/tests/package.json index b07228da3b..52ecc1f2be 100644 --- a/packages/tests/package.json +++ b/packages/tests/package.json @@ -2,7 +2,7 @@ "name": "@feathersjs/tests", "private": true, "description": "Feathers core module common tests", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "homepage": "https://feathersjs.com", "main": "lib/", "types": "lib/", @@ -48,7 +48,7 @@ "lodash": "^4.17.21" }, "devDependencies": { - "@feathersjs/feathers": "^5.0.0-pre.23", + "@feathersjs/feathers": "^5.0.0-pre.24", "@types/axios": "^0.14.0", "@types/mocha": "^9.1.1", "@types/node": "^17.0.40", diff --git a/packages/transport-commons/CHANGELOG.md b/packages/transport-commons/CHANGELOG.md index 839f5c1b6d..e1d6c1c2ef 100644 --- a/packages/transport-commons/CHANGELOG.md +++ b/packages/transport-commons/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21) + +**Note:** Version bump only for package @feathersjs/transport-commons + + + + + # [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06) diff --git a/packages/transport-commons/package.json b/packages/transport-commons/package.json index a29214280d..60506ba497 100644 --- a/packages/transport-commons/package.json +++ b/packages/transport-commons/package.json @@ -1,7 +1,7 @@ { "name": "@feathersjs/transport-commons", "description": "Shared functionality for websocket providers", - "version": "5.0.0-pre.23", + "version": "5.0.0-pre.24", "homepage": "https://feathersjs.com", "main": "lib/", "types": "lib/", @@ -53,9 +53,9 @@ "*.js" ], "dependencies": { - "@feathersjs/commons": "^5.0.0-pre.23", - "@feathersjs/errors": "^5.0.0-pre.23", - "@feathersjs/feathers": "^5.0.0-pre.23", + "@feathersjs/commons": "^5.0.0-pre.24", + "@feathersjs/errors": "^5.0.0-pre.24", + "@feathersjs/feathers": "^5.0.0-pre.24", "encodeurl": "^1.0.2", "lodash": "^4.17.21" }, @@ -69,5 +69,5 @@ "ts-node": "^10.8.1", "typescript": "^4.7.3" }, - "gitHead": "e452e02063e6d8943a9cae2315ab585bc4f82fb6" + "gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f" }