diff --git a/.changeset/wise-eels-study.md b/.changeset/wise-eels-study.md
new file mode 100644
index 0000000000..eab0166ae4
--- /dev/null
+++ b/.changeset/wise-eels-study.md
@@ -0,0 +1,5 @@
+---
+"create-medusa-app": minor
+---
+
+feat(create-medusa-app): update command for a better onboarding experience
diff --git a/.eslintignore b/.eslintignore
index 64364f4d01..e5bffebae1 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -19,6 +19,7 @@ packages/*
!packages/stock-location
!packages/cache-redis
!packages/cache-inmemory
+!packages/create-medusa-app
**/models/*
diff --git a/.eslintrc.js b/.eslintrc.js
index 228b7876fb..e392021ce7 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -94,6 +94,7 @@ module.exports = {
"./packages/stock-location/tsconfig.spec.json",
"./packages/cache-redis/tsconfig.spec.json",
"./packages/cache-inmemory/tsconfig.spec.json",
+ "./packages/create-medusa-app/tsconfig.json",
],
},
rules: {
diff --git a/packages/create-medusa-app/.gitignore b/packages/create-medusa-app/.gitignore
index 57db47f86a..5941af043a 100644
--- a/packages/create-medusa-app/.gitignore
+++ b/packages/create-medusa-app/.gitignore
@@ -1,3 +1,4 @@
node_modules
/dist
yarn.lock
+my-medusa-store
\ No newline at end of file
diff --git a/packages/create-medusa-app/README.md b/packages/create-medusa-app/README.md
new file mode 100644
index 0000000000..7012b30f46
--- /dev/null
+++ b/packages/create-medusa-app/README.md
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+ create-medusa-app
+
+
+
+
+
+An open source composable commerce engine built for developers.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Overview
+
+Using this NPX command, you can setup a Medusa backend and admin along with a PostgreSQL database in simple steps.
+
+---
+
+## Usage
+
+Run the following command in your terminal:
+
+```bash
+npx create-medusa-app@latest
+```
+
+Then, answer the prompted questions to setup your PostgreSQL database and Medusa project. Once the setup is done, the Medusa admin dashboard will open in your default browser.
+
+### Options
+
+| Option | Description | Default value |
+|--------------------|-------------------------------------------------------|------------------------------------------------------|
+| `--repo-url ` | Create Medusa project from a different repository URL | `https://github.com/medusajs/medusa-starter-default` |
+| `--seed` | Using this option seeds the database with demo data | false |
diff --git a/packages/create-medusa-app/cli.js b/packages/create-medusa-app/cli.js
deleted file mode 100755
index 5283a3da31..0000000000
--- a/packages/create-medusa-app/cli.js
+++ /dev/null
@@ -1,7 +0,0 @@
-#! /usr/bin/env node
-
-const { run } = require("./dist")
-
-run().catch((e) => {
- console.warn(e)
-})
diff --git a/packages/create-medusa-app/package.json b/packages/create-medusa-app/package.json
index 4a41aa673f..0129589442 100644
--- a/packages/create-medusa-app/package.json
+++ b/packages/create-medusa-app/package.json
@@ -1,55 +1,62 @@
{
"name": "create-medusa-app",
"version": "0.0.10",
- "main": "dist/index.js",
- "bin": "cli.js",
+ "description": "Create a Medusa project using a single command.",
+ "type": "module",
+ "exports": "./dist/index.js",
+ "bin": "dist/index.js",
"license": "MIT",
- "files": [
- "dist/index.js",
- "cli.js"
- ],
"scripts": {
- "build": "microbundle -i src/index.ts --no-pkg-main --target=node -f=cjs --sourcemap=false --compress --alias worker_threads=@ascorbic/worker-threads-shim",
- "watch": "microbundle -i src/index.ts --no-pkg-main --target=node -f=cjs --sourcemap=false --alias worker_threads=@ascorbic/worker-threads-shim --watch",
- "prepare": "yarn build"
+ "dev": "ts-node --esm src/index.ts",
+ "build": "tsc",
+ "watch": "tsc --watch",
+ "prepare": "cross-env NODE_ENV=production yarn run build"
},
"dependencies": {
- "@babel/runtime": "^7.15.4"
+ "boxen": "^7.1.0",
+ "chalk": "^5.2.0",
+ "commander": "^10.0.1",
+ "inquirer": "^9.2.2",
+ "medusa-telemetry": "^0.0.16",
+ "nanoid": "^4.0.2",
+ "node-fetch": "^3.3.1",
+ "open": "^9.1.0",
+ "ora": "^6.3.0",
+ "pg": "^8.10.0",
+ "slugify": "^1.6.6",
+ "uuid": "^9.0.0",
+ "validator": "^13.9.0",
+ "wait-on": "^7.0.1"
},
"devDependencies": {
- "@ascorbic/worker-threads-shim": "^1.0.0",
- "@babel/runtime": "^7.15.4",
"@types/chalk": "^2.2.0",
"@types/commander": "^2.12.2",
- "@types/configstore": "^4.0.0",
- "@types/fs-extra": "^9.0.13",
- "@types/node": "^14.18.36",
- "ansi-wordwrap": "^1.0.2",
- "chalk": "^4.1.2",
- "commander": "^8.1.0",
- "common-tags": "^1.8.2",
+ "@types/configstore": "^6.0.0",
+ "@types/inquirer": "^9.0.3",
+ "@types/pg": "^8.6.6",
+ "@types/uuid": "^9.0.1",
+ "@types/validator": "^13.7.17",
+ "@types/wait-on": "^5.3.1",
+ "@typescript-eslint/eslint-plugin": "^5.59.5",
+ "@typescript-eslint/parser": "^5.59.5",
"configstore": "^6.0.0",
- "enquirer": "^2.3.6",
- "execa": "^5.1.1",
- "fs-exists-cached": "^1.0.0",
- "fs-extra": "^10.0.0",
- "hosted-git-info": "^4.0.2",
- "is-valid-path": "^0.1.1",
- "microbundle": "^0.13.3",
- "node-fetch": "^2.6.9",
- "prompts": "^2.4.2",
- "string-length": "^4.0.2",
- "terminal-link": "^2.1.1",
- "tiny-spin": "^1.0.2",
- "url": "^0.11.0",
- "uuid": "3.4.0"
+ "eslint": "^8.40.0",
+ "eslint-config-google": "^0.14.0",
+ "eslint-config-prettier": "^8.8.0",
+ "eslint-plugin-prettier": "^4.2.1",
+ "prettier": "^2.8.8",
+ "ts-node": "^10.9.1",
+ "typescript": "^5.0.4"
+ },
+ "engines": {
+ "node": ">=14.16"
},
"repository": {
"type": "git",
"url": "https://github.com/medusajs/medusa.git",
"directory": "packages/create-medusa-app"
},
- "author": "Sebastian Rindom ",
+ "author": "Medusa",
"publishConfig": {
"access": "public"
},
diff --git a/packages/create-medusa-app/src/commands/create.ts b/packages/create-medusa-app/src/commands/create.ts
new file mode 100644
index 0000000000..f6eca15d0c
--- /dev/null
+++ b/packages/create-medusa-app/src/commands/create.ts
@@ -0,0 +1,278 @@
+import inquirer from "inquirer"
+import slugifyType from "slugify"
+import chalk from "chalk"
+import pg from "pg"
+import createDb from "../utils/create-db.js"
+import postgresClient from "../utils/postgres-client.js"
+import cloneRepo from "../utils/clone-repo.js"
+import prepareProject from "../utils/prepare-project.js"
+import startMedusa from "../utils/start-medusa.js"
+import open from "open"
+import waitOn from "wait-on"
+import formatConnectionString from "../utils/format-connection-string.js"
+import ora from "ora"
+import fs from "fs"
+import { nanoid } from "nanoid"
+import isEmailImported from "validator/lib/isEmail.js"
+import logMessage from "../utils/log-message.js"
+import onProcessTerminated from "../utils/on-process-terminated.js"
+import createAbortController, {
+ isAbortError,
+} from "../utils/create-abort-controller.js"
+import { track } from "medusa-telemetry"
+import { createFactBox, resetFactBox } from "../utils/facts.js"
+import boxen from "boxen"
+
+const slugify = slugifyType.default
+const isEmail = isEmailImported.default
+
+type CreateOptions = {
+ repoUrl?: string
+ seed?: boolean
+}
+
+export default async ({ repoUrl = "", seed }: CreateOptions) => {
+ track("CREATE_CLI")
+ if (repoUrl) {
+ track("STARTER_SELECTED", { starter: repoUrl })
+ }
+ if (seed) {
+ track("SEED_SELECTED", { seed })
+ }
+ const abortController = createAbortController()
+
+ const { projectName } = await inquirer.prompt([
+ {
+ type: "input",
+ name: "projectName",
+ message: "What's the name of your project?",
+ default: "my-medusa-store",
+ filter: (input) => {
+ return slugify(input)
+ },
+ validate: (input) => {
+ if (!input.length) {
+ return "Please enter a project name"
+ }
+ return fs.existsSync(input) && fs.lstatSync(input).isDirectory()
+ ? "A directory already exists with the same name. Please enter a different project name."
+ : true
+ },
+ },
+ ])
+
+ let client: pg.Client | undefined
+ let dbConnectionString = ""
+ let postgresUsername = "postgres"
+ let postgresPassword = ""
+
+ // try to log in with default db username and password
+ try {
+ client = await postgresClient({
+ user: postgresUsername,
+ password: postgresPassword,
+ })
+ } catch (e) {
+ // ask for the user's postgres credentials
+ const answers = await inquirer.prompt([
+ {
+ type: "input",
+ name: "postgresUsername",
+ message: "Enter your Postgres username",
+ default: "postgres",
+ validate: (input) => {
+ return typeof input === "string" && input.length > 0
+ },
+ },
+ {
+ type: "password",
+ name: "postgresPassword",
+ message: "Enter your Postgres password",
+ },
+ ])
+
+ postgresUsername = answers.postgresUsername
+ postgresPassword = answers.postgresPassword
+
+ try {
+ client = await postgresClient({
+ user: postgresUsername,
+ password: postgresPassword,
+ })
+ } catch (e) {
+ logMessage({
+ message:
+ "Couldn't connect to PostgreSQL. Make sure you have PostgreSQL installed and the credentials you provided are correct.\n\n" +
+ "You can learn how to install PostgreSQL here: https://docs.medusajs.com/development/backend/prepare-environment#postgresql",
+ type: "error",
+ })
+ }
+ }
+
+ const { adminEmail } = await inquirer.prompt([
+ {
+ type: "input",
+ name: "adminEmail",
+ message: "Enter an email for your admin dashboard user",
+ default: !seed ? "admin@medusa-test.com" : undefined,
+ validate: (input) => {
+ return typeof input === "string" && input.length > 0 && isEmail(input)
+ ? true
+ : "Please enter a valid email"
+ },
+ },
+ ])
+
+ const spinner = ora().start()
+
+ onProcessTerminated(() => spinner.stop())
+
+ let interval: NodeJS.Timer | null = createFactBox(
+ spinner,
+ "Setting up project..."
+ )
+
+ // clone repository
+ try {
+ await cloneRepo({
+ directoryName: projectName,
+ repoUrl,
+ abortController,
+ })
+ } catch (e) {
+ if (isAbortError(e)) {
+ process.exit()
+ }
+
+ spinner.stop()
+ logMessage({
+ message: `An error occurred while setting up your project: ${e}`,
+ type: "error",
+ })
+ }
+
+ interval = resetFactBox(
+ interval,
+ spinner,
+ "Created project directory",
+ "Creating database..."
+ )
+
+ if (client) {
+ const dbName = `medusa-${nanoid(4)}`
+ // create postgres database
+ try {
+ await createDb({
+ client,
+ db: dbName,
+ })
+ } catch (e) {
+ spinner.stop()
+ logMessage({
+ message: `An error occurred while trying to create your database: ${e}`,
+ type: "error",
+ })
+ }
+
+ // format connection string
+ dbConnectionString = formatConnectionString({
+ user: postgresUsername,
+ password: postgresPassword,
+ host: client.host,
+ db: dbName,
+ })
+
+ resetFactBox(interval, spinner, `Database ${dbName} created`)
+ }
+
+ // prepare project
+ let inviteToken: string | undefined = undefined
+ try {
+ inviteToken = await prepareProject({
+ directory: projectName,
+ dbConnectionString,
+ admin: {
+ email: adminEmail,
+ },
+ seed,
+ spinner,
+ abortController,
+ })
+ } catch (e: any) {
+ if (isAbortError(e)) {
+ process.exit()
+ }
+
+ spinner.stop()
+ logMessage({
+ message: `An error occurred while preparing project: ${e}`,
+ type: "error",
+ })
+ }
+
+ spinner.succeed(chalk.green("Project Prepared"))
+
+ // close db connection
+ await client?.end()
+
+ // start backend
+ logMessage({
+ message: "Starting Medusa...",
+ })
+
+ try {
+ startMedusa({
+ directory: projectName,
+ abortController,
+ })
+ } catch (e) {
+ if (isAbortError(e)) {
+ process.exit()
+ }
+
+ logMessage({
+ message: `An error occurred while starting Medusa`,
+ type: "error",
+ })
+ }
+
+ // the SIGINT event is triggered twice once the backend runs
+ // this ensures that the message isn't printed twice to the user
+ let printedMessage = false
+
+ onProcessTerminated(() => {
+ if (!printedMessage) {
+ printedMessage = true
+ console.log(
+ boxen(
+ chalk.green(
+ `Change to the \`${projectName}\` directory to explore your Medusa project.
+
+ Check out the Medusa documentation to start your development:
+ https://docs.medusajs.com/
+
+ Star us on GitHub if you like what we're building:
+ https://github.com/medusajs/medusa/stargazers`
+ ),
+ {
+ titleAlignment: "center",
+ textAlignment: "center",
+ padding: 1,
+ margin: 1,
+ float: "center",
+ }
+ )
+ )
+ }
+ })
+
+ await waitOn({
+ resources: ["http://localhost:9000/health"],
+ }).then(async () =>
+ open(
+ inviteToken
+ ? `http://localhost:9000/app/invite?token=${inviteToken}&first_run=true`
+ : "http://localhost:9000/app"
+ )
+ )
+}
diff --git a/packages/create-medusa-app/src/index.ts b/packages/create-medusa-app/src/index.ts
index 5e3b4daccd..07f4d45373 100644
--- a/packages/create-medusa-app/src/index.ts
+++ b/packages/create-medusa-app/src/index.ts
@@ -1,136 +1,11 @@
-import Commander from "commander"
-import path from "path"
+#!/usr/bin/env node
+import { program } from "commander"
+import create from "./commands/create.js"
-import { prompt } from "enquirer"
-import { newStarter } from "./new-starter"
-import { track } from "./track"
+program
+ .description("Create a new Medusa project")
+ .option("--repo-url ", "URL of repository to use to setup project.")
+ .option("--seed", "Seed the created database with demo data.")
+ .parse()
-import pkg from "../package.json"
-
-let projectPath: string = ""
-
-const questions = {
- projectRoot: {
- type: "input",
- name: "projectRoot",
- message: "Where should your project be installed?",
- initial: "my-medusa-store",
- },
- starter: {
- type: "select",
- name: "starter",
- message: "Which Medusa starter would you like to install?",
- choices: ["medusa-starter-default", "medusa-starter-contentful", "Other"],
- },
- starterUrl: {
- type: "input",
- name: "starterUrl",
- message: "Where is the starter located? (URL or path)",
- },
- storefront: {
- type: "select",
- name: "storefront",
- message: "Which storefront starter would you like to install?",
- choices: [
- "Next.js Starter",
- "medusa.express (Next.js)",
- "None",
- ],
- },
-}
-
-const program = new Commander.Command(pkg.name)
- .version(pkg.version)
- .action((name) => (projectPath = name))
- .option(`-r --root`, `The directory to install your Medusa app`)
- .option(
- `-s --starter-url`,
- `A GitHub URL to a repository that contains a Medusa starter project to bootstrap from`
- )
- .option(`-v --verbose`, `Show all installation output`)
- .parse(process.argv)
-
-const getStorefrontStarter = (starter: string): string => {
- const selected = starter.toLowerCase()
- switch (selected) {
- case "next.js starter":
- return "https://github.com/medusajs/nextjs-starter-medusa"
- case "medusa.express (next.js)":
- return "https://github.com/medusajs/medusa-express-nextjs"
- default:
- return ""
- }
-}
-
-export const run = async (): Promise => {
- track("CREATE_CLI")
-
- if (typeof projectPath === "string") {
- projectPath = projectPath.trim()
- }
-
- const { projectRoot } = (await prompt(questions.projectRoot)) as {
- projectRoot: string
- }
- let { starter } = (await prompt(questions.starter)) as {
- starter: string
- }
-
- if (starter === "Other") {
- const { starterUrl } = (await prompt(questions.starterUrl)) as {
- starterUrl: string
- }
- starter = starterUrl
- } else {
- starter = `medusajs/${starter}`
- }
- track("STARTER_SELECTED", { starter })
-
- const progOptions = program.opts()
-
- const { storefront } = (await prompt(questions.storefront)) as {
- storefront: string
- }
- track("STOREFRONT_SELECTED", { storefront })
-
- await newStarter({
- starter,
- root: path.join(projectRoot, `backend`),
- verbose: progOptions.verbose,
- })
-
- const hasStorefront = storefront.toLowerCase() !== "none"
- if (hasStorefront) {
- const storefrontStarter = getStorefrontStarter(storefront)
- await newStarter({
- starter: storefrontStarter,
- root: path.join(projectRoot, `storefront`),
- verbose: progOptions.verbose,
- })
- }
-
- console.log(`
- Your project is ready 🚀. To start your Medusa project:
-
- Medusa Backend
- 1. Change to the backend directory: cd ${projectRoot}/backend
- 2. Create a PostgreSQL database and make sure your PostgreSQL server is running.
- 3. Add the following environment variable to the \`.env\` file:
- DATABASE_URL=postgres://localhost/medusa-store # This is the default URL, change it to your own database URL
- 4. Run migrations:
- npx @medusajs/medusa-cli@latest migrations run
- 5. Optionally seed database with dummy data:
- npx @medusajs/medusa-cli@latest seed -f ./data/seed.json
- 6. Start backend:
- npx @medusajs/medusa-cli@latest develop
- `)
-
- if (hasStorefront) {
- console.log(`
- Storefront
- 1. Run the backend as explained above.
- 2. Change to the storefront directory: cd ${projectRoot}/storefront
- 3. Run storefront: yarn dev
- `)
- }
-}
+void create(program.opts())
diff --git a/packages/create-medusa-app/src/new-starter.js b/packages/create-medusa-app/src/new-starter.js
deleted file mode 100644
index 8662a88eb8..0000000000
--- a/packages/create-medusa-app/src/new-starter.js
+++ /dev/null
@@ -1,293 +0,0 @@
-import { execSync } from "child_process"
-import execa from "execa"
-import { spin } from "tiny-spin"
-import { sync as existsSync } from "fs-exists-cached"
-import fs from "fs-extra"
-import hostedGitInfo from "hosted-git-info"
-import isValid from "is-valid-path"
-import sysPath from "path"
-import url from "url"
-
-import { reporter } from "./reporter"
-import { getConfigStore } from "./get-config-store"
-
-const packageManagerConfigKey = `cli.packageManager`
-
-export const getPackageManager = (npmConfigUserAgent) => {
- const configStore = getConfigStore()
- const actualPackageManager = configStore.get(packageManagerConfigKey)
-
- if (actualPackageManager) {
- return actualPackageManager
- }
-
- if (npmConfigUserAgent?.includes(`yarn`)) {
- configStore.set(packageManagerConfigKey, `yarn`)
- return `yarn`
- }
-
- configStore.set(packageManagerConfigKey, `npm`)
- return `npm`
-}
-
-const spawnWithArgs = (file, args, options) =>
- execa(file, args, { stdio: "ignore", preferLocal: false, ...options })
-
-const spawn = (cmd, options) => {
- const [file, ...args] = cmd.split(/\s+/)
- return spawnWithArgs(file, args, options)
-}
-// Checks the existence of yarn package
-// We use yarnpkg instead of yarn to avoid conflict with Hadoop yarn
-// Refer to https://github.com/yarnpkg/yarn/issues/673
-const checkForYarn = () => {
- try {
- execSync(`yarnpkg --version`, { stdio: `ignore` })
- return true
- } catch (e) {
- return false
- }
-}
-
-const isAlreadyGitRepository = async () => {
- try {
- return await spawn(`git rev-parse --is-inside-work-tree`, {
- stdio: `pipe`,
- }).then((output) => output.stdout === `true`)
- } catch (err) {
- return false
- }
-}
-
-// Initialize newly cloned directory as a git repo
-const gitInit = async (rootPath) => {
- reporter.info(`Initialising git in ${rootPath}`)
-
- return await spawn(`git init`, { cwd: rootPath })
-}
-
-// Create a .gitignore file if it is missing in the new directory
-const maybeCreateGitIgnore = async (rootPath) => {
- if (existsSync(sysPath.join(rootPath, `.gitignore`))) {
- return
- }
-
- reporter.info(`Creating minimal .gitignore in ${rootPath}`)
- await fs.writeFile(
- sysPath.join(rootPath, `.gitignore`),
- `.cache\nnode_modules\npublic\n`
- )
- reporter.success(`Created .gitignore in ${rootPath}`)
-}
-
-// Create an initial git commit in the new directory
-const createInitialGitCommit = async (rootPath, starterUrl) => {
- reporter.info(`Create initial git commit in ${rootPath}`)
-
- await spawn(`git add -A`, { cwd: rootPath })
- // use execSync instead of spawn to handle git clients using
- // pgp signatures (with password)
- try {
- execSync(`git commit -m "Initial commit from medusa: (${starterUrl})"`, {
- cwd: rootPath,
- })
- } catch {
- // Remove git support if initial commit fails
- reporter.warn(`Initial git commit failed - removing git support\n`)
- fs.removeSync(sysPath.join(rootPath, `.git`))
- }
-}
-
-// Executes `npm install` or `yarn install` in rootPath.
-const install = async (rootPath, verbose) => {
- const prevDir = process.cwd()
-
- const stop = spin(`Installing packages...`)
- console.log() // Add some space
-
- process.chdir(rootPath)
-
- try {
- if (getPackageManager() === `yarn` && checkForYarn()) {
- await fs.remove(`package-lock.json`)
- await spawn(`yarnpkg`, { stdio: verbose ? `inherit` : `ignore` })
- } else {
- await fs.remove(`yarn.lock`)
- await spawn(`npm install`, { stdio: verbose ? `inherit` : `ignore` })
- }
- } finally {
- stop()
- console.log()
- reporter.success(`Packages installed`)
- process.chdir(prevDir)
- }
-}
-
-const ignored = (path) => !/^\.(git|hg)$/.test(sysPath.basename(path))
-
-// Copy starter from file system.
-const copy = async (starterPath, rootPath) => {
- // Chmod with 755.
- // 493 = parseInt('755', 8)
- await fs.ensureDir(rootPath, { mode: 493 })
-
- if (!existsSync(starterPath)) {
- throw new Error(`starter ${starterPath} doesn't exist`)
- }
-
- if (starterPath === `.`) {
- throw new Error(
- `You can't create a starter from the existing directory. If you want to
- create a new project in the current directory, the trailing dot isn't
- necessary. If you want to create a project from a local starter, run
- something like "medusa new my-medusa-store ../local-medusa-starter"`
- )
- }
-
- const stop = spin(`Creating new site from local starter: ${starterPath}`)
-
- reporter.info(`Copying local starter to ${rootPath} ...`)
-
- await fs.copy(starterPath, rootPath, { filter: ignored })
-
- stop()
- console.log()
- reporter.success(`Created starter directory layout`)
- console.log() // Add some space
-
- await install(rootPath)
-
- return true
-}
-
-// Clones starter from URI.
-const clone = async (hostInfo, rootPath, keepGit, verbose = false) => {
- let url
- // Let people use private repos accessed over SSH.
- if (hostInfo.getDefaultRepresentation() === `sshurl`) {
- url = hostInfo.ssh({ noCommittish: true })
- // Otherwise default to normal git syntax.
- } else {
- url = hostInfo.https({ noCommittish: true, noGitPlus: true })
- }
-
- const branch = hostInfo.committish ? [`-b`, hostInfo.committish] : []
-
- const stop = spin(`Creating new project from git: ${url}`)
-
- const args = [
- `clone`,
- ...branch,
- url,
- rootPath,
- `--recursive`,
- `--depth=1`,
- ].filter((arg) => Boolean(arg))
-
- await execa(`git`, args, {})
- .then(() => {
- stop()
- console.log()
- reporter.success(`Created starter directory layout`)
- })
- .catch((err) => {
- stop()
- console.log()
- reporter.error(`Failed to clone repository`)
- throw err
- })
-
- if (!keepGit) {
- await fs.remove(sysPath.join(rootPath, `.git`))
- }
-
- await install(rootPath, verbose)
- const isGit = await isAlreadyGitRepository()
- if (!isGit) await gitInit(rootPath)
- await maybeCreateGitIgnore(rootPath)
- if (!isGit) await createInitialGitCommit(rootPath, url)
-}
-
-const getPaths = async (starterPath, rootPath) => {
- let selectedOtherStarter = false
-
- // set defaults if no root or starter has been set yet
- rootPath = rootPath || process.cwd()
- starterPath = starterPath || `medusajs/medusa-starter-default`
-
- return { starterPath, rootPath, selectedOtherStarter }
-}
-
-const setupEnvVars = async (rootPath) => {
- const templatePath = sysPath.join(rootPath, ".env.template")
- const destination = sysPath.join(rootPath, ".env")
- if (existsSync(templatePath)) {
- fs.renameSync(templatePath, destination)
- }
-}
-
-/**
- * Main function that clones or copies the starter.
- */
-export const newStarter = async (args) => {
- const { starter, root, verbose, keepGit } = args
-
- const { starterPath, rootPath, selectedOtherStarter } = await getPaths(
- starter,
- root
- )
-
- const urlObject = url.parse(rootPath)
-
- if (urlObject.protocol && urlObject.host) {
- const isStarterAUrl =
- starter && !url.parse(starter).hostname && !url.parse(starter).protocol
-
- if (/medusa-starter/gi.test(rootPath) && isStarterAUrl) {
- reporter.panic({
- id: `10000`,
- context: {
- starter,
- rootPath,
- },
- })
- return
- }
- reporter.panic({
- id: `10001`,
- context: {
- rootPath,
- },
- })
- return
- }
-
- if (!isValid(rootPath)) {
- reporter.panic({
- id: `10002`,
- context: {
- path: sysPath.resolve(rootPath),
- },
- })
- return
- }
-
- if (existsSync(sysPath.join(rootPath, `package.json`))) {
- reporter.panic({
- id: `10003`,
- context: {
- rootPath,
- },
- })
- return
- }
-
- const hostedInfo = hostedGitInfo.fromUrl(starterPath)
- if (hostedInfo) {
- await clone(hostedInfo, rootPath, keepGit, verbose)
- } else {
- await copy(starterPath, rootPath, verbose)
- }
-
- await setupEnvVars(rootPath)
-}
diff --git a/packages/create-medusa-app/src/panic-handler.js b/packages/create-medusa-app/src/panic-handler.js
deleted file mode 100644
index 588e96b12a..0000000000
--- a/packages/create-medusa-app/src/panic-handler.js
+++ /dev/null
@@ -1,25 +0,0 @@
-export const panicHandler = (panicData = {}) => {
- const { id, context } = panicData
- switch (id) {
- case "10000":
- return {
- message: `Looks like you provided a URL as your project name. Try "medusa new my-medusa-store ${context.rootPath}" instead.`,
- }
- case "10001":
- return {
- message: `Looks like you provided a URL as your project name. Try "medusa new my-medusa-store ${context.rootPath}" instead.`,
- }
- case "10002":
- return {
- message: `Could not create project because ${context.path} is not a valid path.`,
- }
- case "10003":
- return {
- message: `Directory ${context.rootPath} is already a Node project.`,
- }
- default:
- return {
- message: "Unknown error",
- }
- }
-}
diff --git a/packages/create-medusa-app/src/reporter.ts b/packages/create-medusa-app/src/reporter.ts
deleted file mode 100644
index 57cc44673b..0000000000
--- a/packages/create-medusa-app/src/reporter.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import c from "ansi-colors"
-import { panicHandler } from "./panic-handler"
-
-export const reporter = {
- info: (message: string): void => console.log(message),
- verbose: (message: string): void => console.log(message),
- log: (message: string): void => console.log(message),
- success: (message: string): void =>
- console.log(c.green(c.symbols.check + ` `) + message),
- error: (message: string): void =>
- console.error(c.red(c.symbols.cross + ` `) + message),
- panic: (panicData: { id: string; context: any }): never => {
- const { message } = panicHandler(panicData)
- console.error(message)
- process.exit(1)
- },
- warn: (message: string): void => console.warn(message),
-}
diff --git a/packages/create-medusa-app/src/track.ts b/packages/create-medusa-app/src/track.ts
deleted file mode 100644
index 2ddf44fa31..0000000000
--- a/packages/create-medusa-app/src/track.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import fetch from "node-fetch"
-import uuidv4 from "uuid/v4"
-import { getConfigStore } from "./get-config-store"
-
-const store = getConfigStore()
-const medusaCliVersion = require(`../package.json`).version
-
-const analyticsApi =
- process.env.MEDUSA_TELEMETRY_API ||
- `https://telemetry.medusa-commerce.com/batch`
-
-const getMachineId = (): string => {
- let machineId = store.get(`telemetry.machine_id`)
-
- if (typeof machineId !== `string`) {
- machineId = uuidv4()
- store.set(`telemetry.machine_id`, machineId)
- }
-
- return machineId
-}
-
-const sessionId = uuidv4()
-
-export const track = (eventType: string, args?: any): void => {
- fetch(analyticsApi, {
- method: `POST`,
- headers: {
- "content-type": `application/json`,
- "user-agent": `create-medusa-app:${medusaCliVersion}`,
- },
- body: JSON.stringify({
- timestamp: new Date(),
- batch: [
- {
- type: eventType,
- timestamp: new Date(),
- sessionId,
- machine_id: getMachineId(),
- component_id: `create-medusa-app`,
- cli_version: medusaCliVersion,
- properties: args,
- },
- ],
- }),
- }).catch(() => {}) /* do nothing, it's telemetry */
-}
diff --git a/packages/create-medusa-app/src/types.d.ts b/packages/create-medusa-app/src/types.d.ts
index ec8f69389c..6100c805a7 100644
--- a/packages/create-medusa-app/src/types.d.ts
+++ b/packages/create-medusa-app/src/types.d.ts
@@ -1,4 +1 @@
-declare module "stream-filter"
-declare module "ansi-wordwrap"
-declare module "uuid/v4"
-declare module "node-fetch"
+declare module "medusa-telemetry"
diff --git a/packages/create-medusa-app/src/utils/clone-repo.ts b/packages/create-medusa-app/src/utils/clone-repo.ts
new file mode 100644
index 0000000000..5d89295663
--- /dev/null
+++ b/packages/create-medusa-app/src/utils/clone-repo.ts
@@ -0,0 +1,21 @@
+import promiseExec from "./promise-exec.js"
+
+type CloneRepoOptions = {
+ directoryName?: string
+ repoUrl?: string
+ abortController?: AbortController
+}
+
+// TODO change default repo URL
+const DEFAULT_REPO =
+ "https://github.com/medusajs/medusa-starter-default -b feat/onboarding"
+
+export default async ({
+ directoryName = "",
+ repoUrl,
+ abortController,
+}: CloneRepoOptions) => {
+ await promiseExec(`git clone ${repoUrl || DEFAULT_REPO} ${directoryName}`, {
+ signal: abortController?.signal,
+ })
+}
diff --git a/packages/create-medusa-app/src/utils/create-abort-controller.ts b/packages/create-medusa-app/src/utils/create-abort-controller.ts
new file mode 100644
index 0000000000..2ffe334ce9
--- /dev/null
+++ b/packages/create-medusa-app/src/utils/create-abort-controller.ts
@@ -0,0 +1,10 @@
+import onProcessTerminated from "./on-process-terminated.js"
+
+export default () => {
+ const abortController = new AbortController()
+ onProcessTerminated(() => abortController.abort())
+ return abortController
+}
+
+export const isAbortError = (e: any) =>
+ e !== null && "code" in e && e.code === "ABORT_ERR"
diff --git a/packages/create-medusa-app/src/utils/create-db.ts b/packages/create-medusa-app/src/utils/create-db.ts
new file mode 100644
index 0000000000..d4abac337e
--- /dev/null
+++ b/packages/create-medusa-app/src/utils/create-db.ts
@@ -0,0 +1,10 @@
+import pg from "pg"
+
+type CreateDbOptions = {
+ client: pg.Client
+ db: string
+}
+
+export default async ({ client, db }: CreateDbOptions) => {
+ await client.query(`CREATE DATABASE "${db}"`)
+}
diff --git a/packages/create-medusa-app/src/utils/facts.ts b/packages/create-medusa-app/src/utils/facts.ts
new file mode 100644
index 0000000000..86d7be21d9
--- /dev/null
+++ b/packages/create-medusa-app/src/utils/facts.ts
@@ -0,0 +1,76 @@
+import boxen from "boxen"
+import chalk from "chalk"
+import { Ora } from "ora"
+import onProcessTerminated from "./on-process-terminated.js"
+
+const facts = [
+ "Plugins allow you to integrate third-party services for payment, fulfillment, notifications, and more.",
+ "You can specify a product's availability in one or more sales channels.",
+ "Payment and shipping options and providers can be configured per region.",
+ "Tax-inclusive pricing allows you to set prices for products, shipping options, and more without having to worry about calculating taxes.",
+ "Medusa provides multi-currency and region support, with full control over prices for each currency and region.",
+ "You can organize customers by customer groups and set special prices for them.",
+ "You can specify the inventory of products per location and sales channel.",
+ "Publishable-API Keys allow you to send requests to the backend within a scoped resource.",
+ "You can create custom endpoints by creating a TypeScript file under the src/api directory.",
+ "You can listen to events to perform asynchronous actions using Subscribers.",
+ "An entity represents a table in the database. You can create a table by creating a custom entity and migration.",
+ "Medusa's store endpoint paths are prefixed by /store. The admin endpoints are prefixed by /admin.",
+ "Medusa provides a JavaScript client and a React library that you can use to build a storefront or a custom admin.",
+ "Services are classes with methods related to an entity or functionality. You can create a custom service in a TypeScript file under src/services.",
+ "Modules allow you to replace an entire functionality with your custom logic.",
+ "The event bus module is responsible for triggering events and relaying them to subscribers.",
+ "The cache module is responsible for caching data that requires heavy computation.",
+]
+
+export const getFact = () => {
+ const randIndex = Math.floor(Math.random() * facts.length)
+
+ return facts[randIndex]
+}
+
+export const showFact = (spinner: Ora, title: string) => {
+ const fact = getFact()
+ spinner.text = `${boxen(fact, {
+ title: chalk.cyan(title),
+ titleAlignment: "center",
+ textAlignment: "center",
+ padding: 1,
+ margin: 1,
+ float: "center",
+ })}`
+}
+
+export const createFactBox = (spinner: Ora, title: string): NodeJS.Timer => {
+ spinner.spinner = {
+ frames: [""],
+ }
+ showFact(spinner, title)
+ const interval = setInterval(() => {
+ showFact(spinner, title)
+ }, 10000)
+
+ onProcessTerminated(() => clearInterval(interval))
+
+ return interval
+}
+
+export const resetFactBox = (
+ interval: NodeJS.Timer | null,
+ spinner: Ora,
+ successMessage: string,
+ newTitle?: string
+): NodeJS.Timer | null => {
+ if (interval) {
+ clearInterval(interval)
+ }
+
+ spinner.spinner = "dots"
+ spinner.succeed(chalk.green(successMessage)).start()
+ let newInterval = null
+ if (newTitle) {
+ newInterval = createFactBox(spinner, newTitle)
+ }
+
+ return newInterval
+}
diff --git a/packages/create-medusa-app/src/utils/format-connection-string.ts b/packages/create-medusa-app/src/utils/format-connection-string.ts
new file mode 100644
index 0000000000..5ec497c8eb
--- /dev/null
+++ b/packages/create-medusa-app/src/utils/format-connection-string.ts
@@ -0,0 +1,25 @@
+type ConnectionStringOptions = {
+ user?: string
+ password?: string
+ host?: string
+ db: string
+}
+
+export default ({ user, password, host, db }: ConnectionStringOptions) => {
+ let connection = `postgres://`
+ if (user) {
+ connection += user
+ }
+
+ if (password) {
+ connection += `:${password}`
+ }
+
+ if (user || password) {
+ connection += "@"
+ }
+
+ connection += `${host}/${db}`
+
+ return connection
+}
diff --git a/packages/create-medusa-app/src/get-config-store.ts b/packages/create-medusa-app/src/utils/get-config-store.ts
similarity index 100%
rename from packages/create-medusa-app/src/get-config-store.ts
rename to packages/create-medusa-app/src/utils/get-config-store.ts
diff --git a/packages/create-medusa-app/src/utils/log-message.ts b/packages/create-medusa-app/src/utils/log-message.ts
new file mode 100644
index 0000000000..2f11f04581
--- /dev/null
+++ b/packages/create-medusa-app/src/utils/log-message.ts
@@ -0,0 +1,23 @@
+import chalk from "chalk"
+import { program } from "commander"
+
+type LogOptions = {
+ message: string
+ type?: "error" | "success" | "info" | "warning"
+}
+
+export default ({ message, type = "info" }: LogOptions) => {
+ switch (type) {
+ case "info":
+ console.log(chalk.white(message))
+ break
+ case "success":
+ console.log(chalk.green(message))
+ break
+ case "warning":
+ console.log(chalk.yellow(message))
+ break
+ case "error":
+ program.error(chalk.bold.red(message))
+ }
+}
diff --git a/packages/create-medusa-app/src/utils/on-process-terminated.ts b/packages/create-medusa-app/src/utils/on-process-terminated.ts
new file mode 100644
index 0000000000..4bb49c2cc7
--- /dev/null
+++ b/packages/create-medusa-app/src/utils/on-process-terminated.ts
@@ -0,0 +1,4 @@
+export default (fn: Function) => {
+ process.on("SIGTERM", () => fn())
+ process.on("SIGINT", () => fn())
+}
diff --git a/packages/create-medusa-app/src/utils/postgres-client.ts b/packages/create-medusa-app/src/utils/postgres-client.ts
new file mode 100644
index 0000000000..dfa37e23c9
--- /dev/null
+++ b/packages/create-medusa-app/src/utils/postgres-client.ts
@@ -0,0 +1,15 @@
+import pg from "pg"
+const { Client } = pg
+
+type PostgresConnection = {
+ user?: string
+ password?: string
+}
+
+export default async (connect: PostgresConnection) => {
+ const client = new Client(connect)
+
+ await client.connect()
+
+ return client
+}
diff --git a/packages/create-medusa-app/src/utils/prepare-project.ts b/packages/create-medusa-app/src/utils/prepare-project.ts
new file mode 100644
index 0000000000..2b78096ed3
--- /dev/null
+++ b/packages/create-medusa-app/src/utils/prepare-project.ts
@@ -0,0 +1,149 @@
+import chalk from "chalk"
+import fs from "fs"
+import path from "path"
+import { Ora } from "ora"
+import promiseExec from "./promise-exec.js"
+import { EOL } from "os"
+import runProcess from "./run-process.js"
+import { createFactBox, resetFactBox } from "./facts.js"
+
+type PrepareOptions = {
+ directory: string
+ dbConnectionString: string
+ admin?: {
+ email: string
+ }
+ seed?: boolean
+ spinner: Ora
+ abortController?: AbortController
+}
+
+export default async ({
+ directory,
+ dbConnectionString,
+ admin,
+ seed,
+ spinner,
+ abortController,
+}: PrepareOptions) => {
+ // initialize execution options
+ const execOptions = {
+ cwd: directory,
+ signal: abortController?.signal,
+ }
+
+ // initialize the invite token to return
+ let inviteToken: string | undefined = undefined
+
+ // add connection string to project
+ fs.appendFileSync(
+ path.join(directory, `.env`),
+ `DATABASE_TYPE=postgres${EOL}DATABASE_URL=${dbConnectionString}`
+ )
+
+ let interval: NodeJS.Timer | null = createFactBox(
+ spinner,
+ "Installing dependencies..."
+ )
+
+ await runProcess({
+ process: async () => {
+ try {
+ await promiseExec(`yarn`, execOptions)
+ } catch (e) {
+ // yarn isn't available
+ // use npm
+ await promiseExec(`npm install --legacy-peer-deps`, execOptions)
+ }
+ },
+ ignoreERESOLVE: true,
+ })
+
+ interval = resetFactBox(
+ interval,
+ spinner,
+ "Installed Dependencies",
+ "Running Migrations...."
+ )
+
+ // run migrations
+ await runProcess({
+ process: async () => {
+ await promiseExec(
+ "npx -y @medusajs/medusa-cli@latest migrations run",
+ execOptions
+ )
+ },
+ })
+
+ interval = resetFactBox(interval, spinner, "Ran Migrations")
+
+ if (admin) {
+ // create admin user
+ interval = createFactBox(spinner, "Creating an admin user...")
+
+ await runProcess({
+ process: async () => {
+ const proc = await promiseExec(
+ // TODO replace with latest version
+ `npx -y @medusajs/medusa-cli@1.3.16-snapshot-20230605093446 user -e ${admin.email} --invite`,
+ execOptions
+ )
+ // get invite token from stdout
+ const match = proc.stdout.match(/Invite token: (?.+)/)
+ inviteToken = match?.groups?.token
+ },
+ })
+
+ interval = resetFactBox(interval, spinner, "Created admin user")
+ }
+
+ if (seed) {
+ interval = createFactBox(spinner, "Seeding database...")
+
+ // check if a seed file exists in the project
+ if (!fs.existsSync(path.join(directory, "data", "seed.json"))) {
+ spinner
+ ?.warn(
+ chalk.yellow(
+ "Seed file was not found in the project. Skipping seeding..."
+ )
+ )
+ .start()
+ return inviteToken
+ }
+
+ await runProcess({
+ process: async () => {
+ await promiseExec(
+ `npx -y @medusajs/medusa-cli@latest seed --seed-file=${path.join(
+ "data",
+ "seed.json"
+ )}`,
+ execOptions
+ )
+ },
+ })
+ resetFactBox(interval, spinner, "Seeded database with demo data")
+ } else if (
+ fs.existsSync(path.join(directory, "data", "seed-onboarding.json"))
+ ) {
+ // seed the database with onboarding seed
+ interval = createFactBox(spinner, "Finish preparation...")
+
+ await runProcess({
+ process: async () => {
+ await promiseExec(
+ `npx -y @medusajs/medusa-cli@latest seed --seed-file=${path.join(
+ "data",
+ "seed-onboarding.json"
+ )}`,
+ execOptions
+ )
+ },
+ })
+ resetFactBox(interval, spinner, "Finished Preparation")
+ }
+
+ return inviteToken
+}
diff --git a/packages/create-medusa-app/src/utils/promise-exec.ts b/packages/create-medusa-app/src/utils/promise-exec.ts
new file mode 100644
index 0000000000..40230a68bc
--- /dev/null
+++ b/packages/create-medusa-app/src/utils/promise-exec.ts
@@ -0,0 +1,6 @@
+import { exec } from "child_process"
+import util from "util"
+
+const promiseExec = util.promisify(exec)
+
+export default promiseExec
diff --git a/packages/create-medusa-app/src/utils/run-process.ts b/packages/create-medusa-app/src/utils/run-process.ts
new file mode 100644
index 0000000000..78b63ba806
--- /dev/null
+++ b/packages/create-medusa-app/src/utils/run-process.ts
@@ -0,0 +1,36 @@
+type ProcessOptions = {
+ process: Function
+ ignoreERESOLVE?: boolean
+}
+
+// when running commands with npx or npm sometimes they
+// terminate with EAGAIN error unexpectedly
+// this utility function allows retrying the process if
+// EAGAIN occurs, or otherwise throw the error that occurs
+export default async ({ process, ignoreERESOLVE }: ProcessOptions) => {
+ let processError = false
+ do {
+ try {
+ await process()
+ } catch (error) {
+ if (
+ typeof error === "object" &&
+ error !== null &&
+ "code" in error &&
+ error?.code === "EAGAIN"
+ ) {
+ processError = true
+ } else if (
+ ignoreERESOLVE &&
+ typeof error === "object" &&
+ error !== null &&
+ "code" in error &&
+ error?.code === "ERESOLVE"
+ ) {
+ // ignore error
+ } else {
+ throw error
+ }
+ }
+ } while (processError)
+}
diff --git a/packages/create-medusa-app/src/utils/start-medusa.ts b/packages/create-medusa-app/src/utils/start-medusa.ts
new file mode 100644
index 0000000000..13df8cecc5
--- /dev/null
+++ b/packages/create-medusa-app/src/utils/start-medusa.ts
@@ -0,0 +1,15 @@
+import { exec } from "child_process"
+
+type StartOptions = {
+ directory: string
+ abortController?: AbortController
+}
+
+export default ({ directory, abortController }: StartOptions) => {
+ const childProcess = exec(`npx -y @medusajs/medusa-cli develop`, {
+ cwd: directory,
+ signal: abortController?.signal,
+ })
+
+ childProcess.stdout?.pipe(process.stdout)
+}
diff --git a/packages/create-medusa-app/tsconfig.json b/packages/create-medusa-app/tsconfig.json
index ec10870fc1..3a4e399437 100644
--- a/packages/create-medusa-app/tsconfig.json
+++ b/packages/create-medusa-app/tsconfig.json
@@ -1,15 +1,18 @@
{
"compilerOptions": {
- "target": "ES2015",
- "module": "commonjs",
- "allowJs": true,
- "declaration": false,
- "outDir": "./dist",
- "strict": true,
+ "target": "ESNext",
+ "module": "ESNext",
+ "moduleResolution": "node16",
+ "outDir": "./dist",
"esModuleInterop": true,
+ "strict": true,
+ "skipLibCheck": true,
"resolveJsonModule": true,
- "skipLibCheck": true
},
- "include": ["src/**/*.ts", "src/**/*.json", "src/**/*.js"],
- "exclude": ["**/__tests__/**/*"]
+ "include": ["src"],
+ "ts-node": {
+ "esm": true,
+ "experimentalSpecifierResolution": "node",
+ "transpileOnly": true
+ }
}
diff --git a/yarn.lock b/yarn.lock
index 91a81856ef..874de958d9 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -228,13 +228,6 @@ __metadata:
languageName: node
linkType: hard
-"@ascorbic/worker-threads-shim@npm:^1.0.0":
- version: 1.0.0
- resolution: "@ascorbic/worker-threads-shim@npm:1.0.0"
- checksum: de6f0439c96a44bc7354a20aa22eb4311474f1c0913c2fdb1fe993d7dc85c7134623979188c85040c97adc633ed1bb2c6751f1ce89ebb794b60d0048d5f31e81
- languageName: node
- linkType: hard
-
"@babel/cli@npm:7.14.3":
version: 7.14.3
resolution: "@babel/cli@npm:7.14.3"
@@ -3414,6 +3407,24 @@ __metadata:
languageName: node
linkType: hard
+"@eslint-community/eslint-utils@npm:^4.2.0":
+ version: 4.4.0
+ resolution: "@eslint-community/eslint-utils@npm:4.4.0"
+ dependencies:
+ eslint-visitor-keys: ^3.3.0
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+ checksum: 7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e
+ languageName: node
+ linkType: hard
+
+"@eslint-community/regexpp@npm:^4.4.0":
+ version: 4.5.1
+ resolution: "@eslint-community/regexpp@npm:4.5.1"
+ checksum: d79cbd99cc4dcfbb17e8dd30a30bb5aec5da9c60b9471043f886f116615bb15f0d417cb0ca638cefedba0b4c67c339e2011b53d88264a4540775f042a5879e01
+ languageName: node
+ linkType: hard
+
"@eslint/eslintrc@npm:^0.4.3":
version: 0.4.3
resolution: "@eslint/eslintrc@npm:0.4.3"
@@ -3448,6 +3459,30 @@ __metadata:
languageName: node
linkType: hard
+"@eslint/eslintrc@npm:^2.0.3":
+ version: 2.0.3
+ resolution: "@eslint/eslintrc@npm:2.0.3"
+ dependencies:
+ ajv: ^6.12.4
+ debug: ^4.3.2
+ espree: ^9.5.2
+ globals: ^13.19.0
+ ignore: ^5.2.0
+ import-fresh: ^3.2.1
+ js-yaml: ^4.1.0
+ minimatch: ^3.1.2
+ strip-json-comments: ^3.1.1
+ checksum: 46291c33bf580ab12101fb7f20adabaa60326a7de094409ab4a5ca4611552ab2325f8d677d6c1d2d9f45f83f93360b115a0b4488bc48180cca0d0f386804d829
+ languageName: node
+ linkType: hard
+
+"@eslint/js@npm:8.41.0":
+ version: 8.41.0
+ resolution: "@eslint/js@npm:8.41.0"
+ checksum: 41cf403ccebbc90315c7190bd901fa17975327022146b2db8c846ec5b11d04c56b33ccf9064b9da7349068e96bef8f322423fbcce700d815b4097fd808aaa4c6
+ languageName: node
+ linkType: hard
+
"@exodus/schemasafe@npm:^1.0.0-rc.2":
version: 1.0.0-rc.11
resolution: "@exodus/schemasafe@npm:1.0.0-rc.11"
@@ -4006,6 +4041,17 @@ __metadata:
languageName: node
linkType: hard
+"@humanwhocodes/config-array@npm:^0.11.8":
+ version: 0.11.8
+ resolution: "@humanwhocodes/config-array@npm:0.11.8"
+ dependencies:
+ "@humanwhocodes/object-schema": ^1.2.1
+ debug: ^4.1.1
+ minimatch: ^3.0.5
+ checksum: 441223496cc5ae3ae443e11e2ba05f03f6418d1e0233e3d160b027dda742d7a957fa9e1d56125d5829079419c797c13e1ae8ffe3454f268901ac18f68e0198f1
+ languageName: node
+ linkType: hard
+
"@humanwhocodes/config-array@npm:^0.5.0":
version: 0.5.0
resolution: "@humanwhocodes/config-array@npm:0.5.0"
@@ -8321,6 +8367,13 @@ __metadata:
languageName: node
linkType: hard
+"@sideway/formula@npm:^3.0.1":
+ version: 3.0.1
+ resolution: "@sideway/formula@npm:3.0.1"
+ checksum: 3fe81fa9662efc076bf41612b060eb9b02e846ea4bea5bd114f1662b7f1541e9dedcf98aff0d24400bcb92f113964a50e0290b86e284edbdf6346fa9b7e2bf2c
+ languageName: node
+ linkType: hard
+
"@sideway/pinpoint@npm:^2.0.0":
version: 2.0.0
resolution: "@sideway/pinpoint@npm:2.0.0"
@@ -11129,10 +11182,10 @@ __metadata:
languageName: node
linkType: hard
-"@types/configstore@npm:^4.0.0":
- version: 4.0.0
- resolution: "@types/configstore@npm:4.0.0"
- checksum: b0c502fad26c7732da9fdeb5964c9aa0b54aa76647882e16ce01d1114cad9c1cc61cf52ec0e9dbfe827bc0e0311eb516deab3e4e729593eea9afa9eef75af322
+"@types/configstore@npm:^6.0.0":
+ version: 6.0.0
+ resolution: "@types/configstore@npm:6.0.0"
+ checksum: 167bf467c6e85d567f2f1209175907bb189db470d77beb9e748a17cc3c92a81bcd20351a50542700526b66429f4519ea4578df94b4cd171d28220150b2c8bf37
languageName: node
linkType: hard
@@ -11277,7 +11330,7 @@ __metadata:
languageName: node
linkType: hard
-"@types/fs-extra@npm:^9.0.12, @types/fs-extra@npm:^9.0.13":
+"@types/fs-extra@npm:^9.0.12":
version: 9.0.13
resolution: "@types/fs-extra@npm:9.0.13"
dependencies:
@@ -11373,6 +11426,16 @@ __metadata:
languageName: node
linkType: hard
+"@types/inquirer@npm:^9.0.3":
+ version: 9.0.3
+ resolution: "@types/inquirer@npm:9.0.3"
+ dependencies:
+ "@types/through": "*"
+ rxjs: ^7.2.0
+ checksum: df22239016c18d59a62e8dba2874022a5851f392a0d6d9f6a85343486a6db782b656f6e60c572683834886bd98c180764c317c43c45cb7e3f4c0e26a004033e7
+ languageName: node
+ linkType: hard
+
"@types/ioredis@npm:^4.28.10":
version: 4.28.10
resolution: "@types/ioredis@npm:4.28.10"
@@ -11650,13 +11713,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/node@npm:^14.18.36":
- version: 14.18.36
- resolution: "@types/node@npm:14.18.36"
- checksum: 9742b62fee705cbb177b681e849640834ea3651ea90c7bfea07462dc7511eb73116a12b32c01157b591ebaaed9ece8042016f2a78b50396883f1358a18903fe2
- languageName: node
- linkType: hard
-
"@types/node@npm:^8.5.7":
version: 8.10.66
resolution: "@types/node@npm:8.10.66"
@@ -11708,6 +11764,17 @@ __metadata:
languageName: node
linkType: hard
+"@types/pg@npm:^8.6.6":
+ version: 8.10.1
+ resolution: "@types/pg@npm:8.10.1"
+ dependencies:
+ "@types/node": "*"
+ pg-protocol: "*"
+ pg-types: ^4.0.1
+ checksum: 1bb62b5844a8f4cc99079b17660f99173e996cf07a23525c9a3883b1673f1b77e60500c47b5d41024299653020085640080b1f8549be1dd9425df266bd6b92bc
+ languageName: node
+ linkType: hard
+
"@types/pluralize@npm:^0.0.29":
version: 0.0.29
resolution: "@types/pluralize@npm:0.0.29"
@@ -12060,6 +12127,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/uuid@npm:^9.0.1":
+ version: 9.0.1
+ resolution: "@types/uuid@npm:9.0.1"
+ checksum: 234e14e053504a98532bb5d1490c8d649fe24ae04a94ba042b09b380a900094df1032aa7c3864b74b7a85a0a5e97530b2d1340048ed9d07855140cb99b2cefc8
+ languageName: node
+ linkType: hard
+
"@types/validator@npm:^13.7.10":
version: 13.7.15
resolution: "@types/validator@npm:13.7.15"
@@ -12067,6 +12141,22 @@ __metadata:
languageName: node
linkType: hard
+"@types/validator@npm:^13.7.17":
+ version: 13.7.17
+ resolution: "@types/validator@npm:13.7.17"
+ checksum: 46ec9b8bc11d91a575aead891a9c1d2f23bc28369449cb62415d663262d1d0e96debe75ceac626102a17a0a7a899330626ec36c8d4e84d337c705daed314fed5
+ languageName: node
+ linkType: hard
+
+"@types/wait-on@npm:^5.3.1":
+ version: 5.3.1
+ resolution: "@types/wait-on@npm:5.3.1"
+ dependencies:
+ "@types/node": "*"
+ checksum: fae18fa11910e0471582b762839d198852ed1b9fc75b2feae388f9f27502c16609514121fb2d9c9a63e2f973037b878b84635ac00cc8de345b5f286d26f03fc1
+ languageName: node
+ linkType: hard
+
"@types/webpack-env@npm:^1.16.0":
version: 1.17.0
resolution: "@types/webpack-env@npm:1.17.0"
@@ -12195,6 +12285,30 @@ __metadata:
languageName: node
linkType: hard
+"@typescript-eslint/eslint-plugin@npm:^5.59.5":
+ version: 5.59.8
+ resolution: "@typescript-eslint/eslint-plugin@npm:5.59.8"
+ dependencies:
+ "@eslint-community/regexpp": ^4.4.0
+ "@typescript-eslint/scope-manager": 5.59.8
+ "@typescript-eslint/type-utils": 5.59.8
+ "@typescript-eslint/utils": 5.59.8
+ debug: ^4.3.4
+ grapheme-splitter: ^1.0.4
+ ignore: ^5.2.0
+ natural-compare-lite: ^1.4.0
+ semver: ^7.3.7
+ tsutils: ^3.21.0
+ peerDependencies:
+ "@typescript-eslint/parser": ^5.0.0
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ checksum: 491f88984dd032f309d84b41af6a227a9da944ad6c806b868e71122bd55ad355d8738e7925019f54929784ba631ae9b186a028b194bdb9bad72d122229c029e4
+ languageName: node
+ linkType: hard
+
"@typescript-eslint/experimental-utils@npm:4.33.0":
version: 4.33.0
resolution: "@typescript-eslint/experimental-utils@npm:4.33.0"
@@ -12245,6 +12359,23 @@ __metadata:
languageName: node
linkType: hard
+"@typescript-eslint/parser@npm:^5.59.5":
+ version: 5.59.8
+ resolution: "@typescript-eslint/parser@npm:5.59.8"
+ dependencies:
+ "@typescript-eslint/scope-manager": 5.59.8
+ "@typescript-eslint/types": 5.59.8
+ "@typescript-eslint/typescript-estree": 5.59.8
+ debug: ^4.3.4
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ checksum: 710daf64331d5bc198c22c66c1fdd06db2300487f655d161f0e59971fcd0c70661a7059ff7e3cf2ed66fc72d6674a3f4a317d5d5778ce6605d18e831b0a7039e
+ languageName: node
+ linkType: hard
+
"@typescript-eslint/scope-manager@npm:4.33.0":
version: 4.33.0
resolution: "@typescript-eslint/scope-manager@npm:4.33.0"
@@ -12265,6 +12396,16 @@ __metadata:
languageName: node
linkType: hard
+"@typescript-eslint/scope-manager@npm:5.59.8":
+ version: 5.59.8
+ resolution: "@typescript-eslint/scope-manager@npm:5.59.8"
+ dependencies:
+ "@typescript-eslint/types": 5.59.8
+ "@typescript-eslint/visitor-keys": 5.59.8
+ checksum: 164ea98d0d7dd4dd0c462eb7238266b2260af63fd29b96746dd978322114c7ebf31ba697c424397e3fb36027704e1c5d788cb6049a6ccb52fec8c6c134d7503b
+ languageName: node
+ linkType: hard
+
"@typescript-eslint/type-utils@npm:5.53.0":
version: 5.53.0
resolution: "@typescript-eslint/type-utils@npm:5.53.0"
@@ -12282,6 +12423,23 @@ __metadata:
languageName: node
linkType: hard
+"@typescript-eslint/type-utils@npm:5.59.8":
+ version: 5.59.8
+ resolution: "@typescript-eslint/type-utils@npm:5.59.8"
+ dependencies:
+ "@typescript-eslint/typescript-estree": 5.59.8
+ "@typescript-eslint/utils": 5.59.8
+ debug: ^4.3.4
+ tsutils: ^3.21.0
+ peerDependencies:
+ eslint: "*"
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ checksum: 70c64edb564d4c5270cb8cea226544eebcf0f0a394c185a3c5b5bfd9df2e97e0396fa6324ba58da3136d99d12adcfe5f21243aa6c997734e6daa154a6708ae60
+ languageName: node
+ linkType: hard
+
"@typescript-eslint/types@npm:4.33.0":
version: 4.33.0
resolution: "@typescript-eslint/types@npm:4.33.0"
@@ -12296,6 +12454,13 @@ __metadata:
languageName: node
linkType: hard
+"@typescript-eslint/types@npm:5.59.8":
+ version: 5.59.8
+ resolution: "@typescript-eslint/types@npm:5.59.8"
+ checksum: 3f5000f556b4fe45c16e00b24d18c0f8930a214e61a0302daf3ef952a7a45342d9e63119626bd0556b252a6345e1fa423e34908eaf08560756f6c747dcffb56a
+ languageName: node
+ linkType: hard
+
"@typescript-eslint/typescript-estree@npm:4.33.0":
version: 4.33.0
resolution: "@typescript-eslint/typescript-estree@npm:4.33.0"
@@ -12332,6 +12497,24 @@ __metadata:
languageName: node
linkType: hard
+"@typescript-eslint/typescript-estree@npm:5.59.8":
+ version: 5.59.8
+ resolution: "@typescript-eslint/typescript-estree@npm:5.59.8"
+ dependencies:
+ "@typescript-eslint/types": 5.59.8
+ "@typescript-eslint/visitor-keys": 5.59.8
+ debug: ^4.3.4
+ globby: ^11.1.0
+ is-glob: ^4.0.3
+ semver: ^7.3.7
+ tsutils: ^3.21.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ checksum: a6ec2654c5c8c0bead99e1a43936a56e9bd0e1422b993fcd9d603ff31fe4701e9562fbc6d0f2b4d50a7d113d27d5fb68c428f78b938bd110b0112ed4df81ed72
+ languageName: node
+ linkType: hard
+
"@typescript-eslint/utils@npm:5.53.0":
version: 5.53.0
resolution: "@typescript-eslint/utils@npm:5.53.0"
@@ -12350,6 +12533,24 @@ __metadata:
languageName: node
linkType: hard
+"@typescript-eslint/utils@npm:5.59.8":
+ version: 5.59.8
+ resolution: "@typescript-eslint/utils@npm:5.59.8"
+ dependencies:
+ "@eslint-community/eslint-utils": ^4.2.0
+ "@types/json-schema": ^7.0.9
+ "@types/semver": ^7.3.12
+ "@typescript-eslint/scope-manager": 5.59.8
+ "@typescript-eslint/types": 5.59.8
+ "@typescript-eslint/typescript-estree": 5.59.8
+ eslint-scope: ^5.1.1
+ semver: ^7.3.7
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ checksum: 20b859508942b79111ddbea8e777864fa76a5597b217bff921ba0e9ad245f71cff7ed598d18f384f441d4b433cfae0645654455fa38f313e24869fa062582964
+ languageName: node
+ linkType: hard
+
"@typescript-eslint/visitor-keys@npm:4.33.0":
version: 4.33.0
resolution: "@typescript-eslint/visitor-keys@npm:4.33.0"
@@ -12370,6 +12571,16 @@ __metadata:
languageName: node
linkType: hard
+"@typescript-eslint/visitor-keys@npm:5.59.8":
+ version: 5.59.8
+ resolution: "@typescript-eslint/visitor-keys@npm:5.59.8"
+ dependencies:
+ "@typescript-eslint/types": 5.59.8
+ eslint-visitor-keys: ^3.3.0
+ checksum: 0e7cdb5c0e9106bbb77bb599d9a6464306d7cfa1b35435810c5d59b951f3b65ac3a1a829894e328e43d411da189247568eb24d28dd9ceca95dfc3f19011b889f
+ languageName: node
+ linkType: hard
+
"@vercel/webpack-asset-relocator-loader@npm:^1.7.0":
version: 1.7.2
resolution: "@vercel/webpack-asset-relocator-loader@npm:1.7.2"
@@ -13229,7 +13440,7 @@ __metadata:
languageName: node
linkType: hard
-"ansi-align@npm:^3.0.0":
+"ansi-align@npm:^3.0.0, ansi-align@npm:^3.0.1":
version: 3.0.1
resolution: "ansi-align@npm:3.0.1"
dependencies:
@@ -13259,7 +13470,7 @@ __metadata:
languageName: node
linkType: hard
-"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0":
+"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0, ansi-escapes@npm:^4.3.2":
version: 4.3.2
resolution: "ansi-escapes@npm:4.3.2"
dependencies:
@@ -13346,7 +13557,7 @@ __metadata:
languageName: node
linkType: hard
-"ansi-styles@npm:^6.0.0":
+"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0":
version: 6.2.1
resolution: "ansi-styles@npm:6.2.1"
checksum: 5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c
@@ -13364,13 +13575,6 @@ __metadata:
languageName: node
linkType: hard
-"ansi-wordwrap@npm:^1.0.2":
- version: 1.0.2
- resolution: "ansi-wordwrap@npm:1.0.2"
- checksum: 1e1e7bcf46fd55d8646514ad4372b15ef6fb0cb205070c875e7128e62ec6dc7d4cda2624b3670265eb4873950e7ece1ae6753a2fe265210c5c5e7d786cbe4f6a
- languageName: node
- linkType: hard
-
"ansicolors@npm:~0.3.2":
version: 0.3.2
resolution: "ansicolors@npm:0.3.2"
@@ -14147,6 +14351,16 @@ __metadata:
languageName: node
linkType: hard
+"axios@npm:^0.27.2":
+ version: 0.27.2
+ resolution: "axios@npm:0.27.2"
+ dependencies:
+ follow-redirects: ^1.14.9
+ form-data: ^4.0.0
+ checksum: 76d673d2a90629944b44d6f345f01e58e9174690f635115d5ffd4aca495d99bcd8f95c590d5ccb473513f5ebc1d1a6e8934580d0c57cdd0498c3a101313ef771
+ languageName: node
+ linkType: hard
+
"axios@npm:^1.3.4":
version: 1.3.4
resolution: "axios@npm:1.3.4"
@@ -14880,7 +15094,7 @@ __metadata:
languageName: node
linkType: hard
-"big-integer@npm:^1.6.7":
+"big-integer@npm:^1.6.44, big-integer@npm:^1.6.7":
version: 1.6.51
resolution: "big-integer@npm:1.6.51"
checksum: c8139662d57f8833a44802f4b65be911679c569535ea73c5cfd3c1c8994eaead1b84b6f63e1db63833e4d4cacb6b6a9e5522178113dfdc8e4c81ed8436f1e8cc
@@ -14928,6 +15142,17 @@ __metadata:
languageName: node
linkType: hard
+"bl@npm:^5.0.0":
+ version: 5.1.0
+ resolution: "bl@npm:5.1.0"
+ dependencies:
+ buffer: ^6.0.3
+ inherits: ^2.0.4
+ readable-stream: ^3.4.0
+ checksum: 528a9c3d7d6b87af98c46f10a887654d027c28c503c7f7de87440e643f0056d7a2319a967762b8ec18150c64799d2825a277147a752a0570a7407c0b705b0d01
+ languageName: node
+ linkType: hard
+
"bluebird@npm:^3.4.0, bluebird@npm:^3.5.5, bluebird@npm:^3.7.2":
version: 3.7.2
resolution: "bluebird@npm:3.7.2"
@@ -15053,6 +15278,22 @@ __metadata:
languageName: node
linkType: hard
+"boxen@npm:^7.1.0":
+ version: 7.1.0
+ resolution: "boxen@npm:7.1.0"
+ dependencies:
+ ansi-align: ^3.0.1
+ camelcase: ^7.0.1
+ chalk: ^5.2.0
+ cli-boxes: ^3.0.0
+ string-width: ^5.1.2
+ type-fest: ^2.13.0
+ widest-line: ^4.0.1
+ wrap-ansi: ^8.1.0
+ checksum: e37b79f2156dc17e6f9994fedd175ff33a674d651bda0fcd99ba36d1be0fd1954ef8e25a940fc2229fb9978673bc7b78bc31a7ded42b443c32ba2fbccdbfcfa0
+ languageName: node
+ linkType: hard
+
"bplist-parser@npm:^0.1.0":
version: 0.1.1
resolution: "bplist-parser@npm:0.1.1"
@@ -15062,6 +15303,15 @@ __metadata:
languageName: node
linkType: hard
+"bplist-parser@npm:^0.2.0":
+ version: 0.2.0
+ resolution: "bplist-parser@npm:0.2.0"
+ dependencies:
+ big-integer: ^1.6.44
+ checksum: ce79c69e0f6efe506281e7c84e3712f7d12978991675b6e3a58a295b16f13ca81aa9b845c335614a545e0af728c8311b6aa3142af76ba1cb616af9bbac5c4a9f
+ languageName: node
+ linkType: hard
+
"brace-expansion@npm:^1.1.7":
version: 1.1.11
resolution: "brace-expansion@npm:1.1.11"
@@ -15364,6 +15614,15 @@ __metadata:
languageName: node
linkType: hard
+"bundle-name@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "bundle-name@npm:3.0.0"
+ dependencies:
+ run-applescript: ^5.0.0
+ checksum: 57bc7f8b025d83961b04db2f1eff6a87f2363c2891f3542a4b82471ff8ebb5d484af48e9784fcdb28ef1d48bb01f03d891966dc3ef58758e46ea32d750ce40f8
+ languageName: node
+ linkType: hard
+
"bundle-require@npm:^3.1.2":
version: 3.1.2
resolution: "bundle-require@npm:3.1.2"
@@ -15690,6 +15949,13 @@ __metadata:
languageName: node
linkType: hard
+"camelcase@npm:^7.0.1":
+ version: 7.0.1
+ resolution: "camelcase@npm:7.0.1"
+ checksum: 3adfc9a0e96d51b3a2f4efe90a84dad3e206aaa81dfc664f1bd568270e1bf3b010aad31f01db16345b4ffe1910e16ab411c7273a19a859addd1b98ef7cf4cfbd
+ languageName: node
+ linkType: hard
+
"camelize@npm:^1.0.0":
version: 1.0.1
resolution: "camelize@npm:1.0.1"
@@ -15849,6 +16115,13 @@ __metadata:
languageName: node
linkType: hard
+"chalk@npm:^5.0.0, chalk@npm:^5.2.0":
+ version: 5.2.0
+ resolution: "chalk@npm:5.2.0"
+ checksum: 8a519b35c239f96e041b7f1ed8fdd79d3ca2332a8366cb957378b8a1b8a4cdfb740d19628e8bf74654d4c0917aa10cf39c20752e177a1304eac29a1168a740e9
+ languageName: node
+ linkType: hard
+
"change-case-all@npm:1.0.14":
version: 1.0.14
resolution: "change-case-all@npm:1.0.14"
@@ -16106,6 +16379,13 @@ __metadata:
languageName: node
linkType: hard
+"cli-boxes@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "cli-boxes@npm:3.0.0"
+ checksum: 4db3e8fbfaf1aac4fb3a6cbe5a2d3fa048bee741a45371b906439b9ffc821c6e626b0f108bdcd3ddf126a4a319409aedcf39a0730573ff050fdd7b6731e99fb9
+ languageName: node
+ linkType: hard
+
"cli-cursor@npm:^3.1.0":
version: 3.1.0
resolution: "cli-cursor@npm:3.1.0"
@@ -16115,6 +16395,15 @@ __metadata:
languageName: node
linkType: hard
+"cli-cursor@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "cli-cursor@npm:4.0.0"
+ dependencies:
+ restore-cursor: ^4.0.0
+ checksum: e776e8c3c6727300d0539b0d25160b2bb56aed1a63942753ba1826b012f337a6f4b7ace3548402e4f2f13b5e16bfd751be672c44b203205e7eca8be94afec42c
+ languageName: node
+ linkType: hard
+
"cli-highlight@npm:^2.1.11":
version: 2.1.11
resolution: "cli-highlight@npm:2.1.11"
@@ -16147,6 +16436,13 @@ __metadata:
languageName: node
linkType: hard
+"cli-spinners@npm:^2.6.1":
+ version: 2.9.0
+ resolution: "cli-spinners@npm:2.9.0"
+ checksum: c0d5437acc1ace7361b1c58a4fda3c92c2d8691ff3169ac658ce30faee71280b7aa706c072bcb6d0e380c232f3495f7d5ad4668c1391fe02c4d3a39d37798f44
+ languageName: node
+ linkType: hard
+
"cli-table3@npm:^0.6.1":
version: 0.6.2
resolution: "cli-table3@npm:0.6.2"
@@ -16221,6 +16517,13 @@ __metadata:
languageName: node
linkType: hard
+"cli-width@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "cli-width@npm:4.0.0"
+ checksum: 7b331e69bc30745bdf6edc5062c8e1bce7c17bcc694442e9a5049d950e19739192ead51e106e482acb181f8b6a3a442bb3ca76f327165097aa54339c2f295ec0
+ languageName: node
+ linkType: hard
+
"client-sessions@npm:^0.8.0":
version: 0.8.0
resolution: "client-sessions@npm:0.8.0"
@@ -16506,6 +16809,13 @@ __metadata:
languageName: node
linkType: hard
+"commander@npm:^10.0.1":
+ version: 10.0.1
+ resolution: "commander@npm:10.0.1"
+ checksum: 53f33d8927758a911094adadda4b2cbac111a5b377d8706700587650fd8f45b0bbe336de4b5c3fe47fd61f420a3d9bd452b6e0e6e5600a7e74d7bf0174f6efe3
+ languageName: node
+ linkType: hard
+
"commander@npm:^2.19.0, commander@npm:^2.20.0, commander@npm:^2.20.3":
version: 2.20.3
resolution: "commander@npm:2.20.3"
@@ -16534,7 +16844,7 @@ __metadata:
languageName: node
linkType: hard
-"commander@npm:^8.1.0, commander@npm:^8.2.0":
+"commander@npm:^8.2.0":
version: 8.3.0
resolution: "commander@npm:8.3.0"
checksum: 8b043bb8322ea1c39664a1598a95e0495bfe4ca2fad0d84a92d7d1d8d213e2a155b441d2470c8e08de7c4a28cf2bc6e169211c49e1b21d9f7edc6ae4d9356060
@@ -17112,34 +17422,40 @@ __metadata:
version: 0.0.0-use.local
resolution: "create-medusa-app@workspace:packages/create-medusa-app"
dependencies:
- "@ascorbic/worker-threads-shim": ^1.0.0
- "@babel/runtime": ^7.15.4
"@types/chalk": ^2.2.0
"@types/commander": ^2.12.2
- "@types/configstore": ^4.0.0
- "@types/fs-extra": ^9.0.13
- "@types/node": ^14.18.36
- ansi-wordwrap: ^1.0.2
- chalk: ^4.1.2
- commander: ^8.1.0
- common-tags: ^1.8.2
+ "@types/configstore": ^6.0.0
+ "@types/inquirer": ^9.0.3
+ "@types/pg": ^8.6.6
+ "@types/uuid": ^9.0.1
+ "@types/validator": ^13.7.17
+ "@types/wait-on": ^5.3.1
+ "@typescript-eslint/eslint-plugin": ^5.59.5
+ "@typescript-eslint/parser": ^5.59.5
+ boxen: ^7.1.0
+ chalk: ^5.2.0
+ commander: ^10.0.1
configstore: ^6.0.0
- enquirer: ^2.3.6
- execa: ^5.1.1
- fs-exists-cached: ^1.0.0
- fs-extra: ^10.0.0
- hosted-git-info: ^4.0.2
- is-valid-path: ^0.1.1
- microbundle: ^0.13.3
- node-fetch: ^2.6.9
- prompts: ^2.4.2
- string-length: ^4.0.2
- terminal-link: ^2.1.1
- tiny-spin: ^1.0.2
- url: ^0.11.0
- uuid: 3.4.0
+ eslint: ^8.40.0
+ eslint-config-google: ^0.14.0
+ eslint-config-prettier: ^8.8.0
+ eslint-plugin-prettier: ^4.2.1
+ inquirer: ^9.2.2
+ medusa-telemetry: ^0.0.16
+ nanoid: ^4.0.2
+ node-fetch: ^3.3.1
+ open: ^9.1.0
+ ora: ^6.3.0
+ pg: ^8.10.0
+ prettier: ^2.8.8
+ slugify: ^1.6.6
+ ts-node: ^10.9.1
+ typescript: ^5.0.4
+ uuid: ^9.0.0
+ validator: ^13.9.0
+ wait-on: ^7.0.1
bin:
- create-medusa-app: cli.js
+ create-medusa-app: dist/index.js
languageName: unknown
linkType: soft
@@ -17622,6 +17938,13 @@ __metadata:
languageName: node
linkType: hard
+"data-uri-to-buffer@npm:^4.0.0":
+ version: 4.0.1
+ resolution: "data-uri-to-buffer@npm:4.0.1"
+ checksum: 20a6b93107597530d71d4cb285acee17f66bcdfc03fd81040921a81252f19db27588d87fc8fc69e1950c55cfb0bf8ae40d0e5e21d907230813eb5d5a7f9eb45b
+ languageName: node
+ linkType: hard
+
"data-urls@npm:^1.1.0":
version: 1.1.0
resolution: "data-urls@npm:1.1.0"
@@ -17865,6 +18188,28 @@ __metadata:
languageName: node
linkType: hard
+"default-browser-id@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "default-browser-id@npm:3.0.0"
+ dependencies:
+ bplist-parser: ^0.2.0
+ untildify: ^4.0.0
+ checksum: 8db3ab882eb3e1e8b59d84c8641320e6c66d8eeb17eb4bb848b7dd549b1e6fd313988e4a13542e95fbaeff03f6e9dedc5ad191ad4df7996187753eb0d45c00b7
+ languageName: node
+ linkType: hard
+
+"default-browser@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "default-browser@npm:4.0.0"
+ dependencies:
+ bundle-name: ^3.0.0
+ default-browser-id: ^3.0.0
+ execa: ^7.1.1
+ titleize: ^3.0.0
+ checksum: 7c8848badc139ecf9d878e562bc4e7ab4301e51ba120b24d8dcb14739c30152115cc612065ac3ab73c02aace4afa29db5a044257b2f0cf234f16e3a58f6c925e
+ languageName: node
+ linkType: hard
+
"defaults@npm:^1.0.3":
version: 1.0.3
resolution: "defaults@npm:1.0.3"
@@ -17905,6 +18250,13 @@ __metadata:
languageName: node
linkType: hard
+"define-lazy-prop@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "define-lazy-prop@npm:3.0.0"
+ checksum: 5ab0b2bf3fa58b3a443140bbd4cd3db1f91b985cc8a246d330b9ac3fc0b6a325a6d82bddc0b055123d745b3f9931afeea74a5ec545439a1630b9c8512b0eeb49
+ languageName: node
+ linkType: hard
+
"define-properties@npm:^1.1.2, define-properties@npm:^1.1.3, define-properties@npm:^1.1.4":
version: 1.1.4
resolution: "define-properties@npm:1.1.4"
@@ -19402,6 +19754,13 @@ __metadata:
languageName: node
linkType: hard
+"escape-string-regexp@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "escape-string-regexp@npm:5.0.0"
+ checksum: 6366f474c6f37a802800a435232395e04e9885919873e382b157ab7e8f0feb8fed71497f84a6f6a81a49aab41815522f5839112bd38026d203aea0c91622df95
+ languageName: node
+ linkType: hard
+
"escodegen@npm:^1.11.1":
version: 1.14.3
resolution: "escodegen@npm:1.14.3"
@@ -19460,6 +19819,17 @@ __metadata:
languageName: node
linkType: hard
+"eslint-config-prettier@npm:^8.8.0":
+ version: 8.8.0
+ resolution: "eslint-config-prettier@npm:8.8.0"
+ peerDependencies:
+ eslint: ">=7.0.0"
+ bin:
+ eslint-config-prettier: bin/cli.js
+ checksum: 9e3bb602184b7ec59239d2f901b1594cd7cc59ff38c3ddcd812137817e50840f4d65d62b61c515c7eae86d85f8b6fb2ebda659a3f83b2f2c5da75feb15531508
+ languageName: node
+ linkType: hard
+
"eslint-config-react-app@npm:^6.0.0":
version: 6.0.0
resolution: "eslint-config-react-app@npm:6.0.0"
@@ -19714,6 +20084,16 @@ __metadata:
languageName: node
linkType: hard
+"eslint-scope@npm:^7.2.0":
+ version: 7.2.0
+ resolution: "eslint-scope@npm:7.2.0"
+ dependencies:
+ esrecurse: ^4.3.0
+ estraverse: ^5.2.0
+ checksum: 5b48a3cc2485a3a58ca0bdecfb557c349009308a9b2afb24d070b1c0c254d445ee86d78bfee2c4ed6d1b8944307604a987c92f6d7e611e29de5d06256747a0ff
+ languageName: node
+ linkType: hard
+
"eslint-utils@npm:^1.4.3":
version: 1.4.3
resolution: "eslint-utils@npm:1.4.3"
@@ -19764,6 +20144,13 @@ __metadata:
languageName: node
linkType: hard
+"eslint-visitor-keys@npm:^3.4.1":
+ version: 3.4.1
+ resolution: "eslint-visitor-keys@npm:3.4.1"
+ checksum: b4ebd35aed5426cd81b1fb92487825f1acf47a31e91d76597a3ee0664d69627140c4dafaf9b319cfeb1f48c1113a393e21a734c669e6565a72e6fcc311bd9911
+ languageName: node
+ linkType: hard
+
"eslint-webpack-plugin@npm:^2.6.0":
version: 2.7.0
resolution: "eslint-webpack-plugin@npm:2.7.0"
@@ -19927,6 +20314,55 @@ __metadata:
languageName: node
linkType: hard
+"eslint@npm:^8.40.0":
+ version: 8.41.0
+ resolution: "eslint@npm:8.41.0"
+ dependencies:
+ "@eslint-community/eslint-utils": ^4.2.0
+ "@eslint-community/regexpp": ^4.4.0
+ "@eslint/eslintrc": ^2.0.3
+ "@eslint/js": 8.41.0
+ "@humanwhocodes/config-array": ^0.11.8
+ "@humanwhocodes/module-importer": ^1.0.1
+ "@nodelib/fs.walk": ^1.2.8
+ ajv: ^6.10.0
+ chalk: ^4.0.0
+ cross-spawn: ^7.0.2
+ debug: ^4.3.2
+ doctrine: ^3.0.0
+ escape-string-regexp: ^4.0.0
+ eslint-scope: ^7.2.0
+ eslint-visitor-keys: ^3.4.1
+ espree: ^9.5.2
+ esquery: ^1.4.2
+ esutils: ^2.0.2
+ fast-deep-equal: ^3.1.3
+ file-entry-cache: ^6.0.1
+ find-up: ^5.0.0
+ glob-parent: ^6.0.2
+ globals: ^13.19.0
+ graphemer: ^1.4.0
+ ignore: ^5.2.0
+ import-fresh: ^3.0.0
+ imurmurhash: ^0.1.4
+ is-glob: ^4.0.0
+ is-path-inside: ^3.0.3
+ js-yaml: ^4.1.0
+ json-stable-stringify-without-jsonify: ^1.0.1
+ levn: ^0.4.1
+ lodash.merge: ^4.6.2
+ minimatch: ^3.1.2
+ natural-compare: ^1.4.0
+ optionator: ^0.9.1
+ strip-ansi: ^6.0.1
+ strip-json-comments: ^3.1.0
+ text-table: ^0.2.0
+ bin:
+ eslint: bin/eslint.js
+ checksum: d71832b235bebaa67c09019dee32bf8393c5e12155e91131c4606670eb9836fbff31e11364408258cb75e2bde8a4dfa0c042aa6145bb23cd800a42e63ca4a035
+ languageName: node
+ linkType: hard
+
"espree@npm:^6.1.2":
version: 6.2.1
resolution: "espree@npm:6.2.1"
@@ -19960,6 +20396,17 @@ __metadata:
languageName: node
linkType: hard
+"espree@npm:^9.5.2":
+ version: 9.5.2
+ resolution: "espree@npm:9.5.2"
+ dependencies:
+ acorn: ^8.8.0
+ acorn-jsx: ^5.3.2
+ eslint-visitor-keys: ^3.4.1
+ checksum: 6885e57b3dcea3f65211403a10077a80a57f03e6c8b45c1e1db4bc5958e0fdb5c358819c88898ea67655d25fb646836182f688156e124a05610e714d3fcb6822
+ languageName: node
+ linkType: hard
+
"esprima@npm:^4.0.0, esprima@npm:^4.0.1, esprima@npm:~4.0.0":
version: 4.0.1
resolution: "esprima@npm:4.0.1"
@@ -19979,6 +20426,15 @@ __metadata:
languageName: node
linkType: hard
+"esquery@npm:^1.4.2":
+ version: 1.5.0
+ resolution: "esquery@npm:1.5.0"
+ dependencies:
+ estraverse: ^5.1.0
+ checksum: a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213
+ languageName: node
+ linkType: hard
+
"esrecurse@npm:^4.1.0, esrecurse@npm:^4.3.0":
version: 4.3.0
resolution: "esrecurse@npm:4.3.0"
@@ -20200,6 +20656,23 @@ __metadata:
languageName: node
linkType: hard
+"execa@npm:^7.1.1":
+ version: 7.1.1
+ resolution: "execa@npm:7.1.1"
+ dependencies:
+ cross-spawn: ^7.0.3
+ get-stream: ^6.0.1
+ human-signals: ^4.3.0
+ is-stream: ^3.0.0
+ merge-stream: ^2.0.0
+ npm-run-path: ^5.1.0
+ onetime: ^6.0.0
+ signal-exit: ^3.0.7
+ strip-final-newline: ^3.0.0
+ checksum: 0da5ee1c895b62142bc3d1567d1974711c28c2cfa6bae96e1923379bd597e476d762a13f282f92815d8ebfa33407949634fa32a0d6db8334a20e625fe11d4351
+ languageName: node
+ linkType: hard
+
"exif-parser@npm:^0.1.12":
version: 0.1.12
resolution: "exif-parser@npm:0.1.12"
@@ -20786,6 +21259,16 @@ __metadata:
languageName: node
linkType: hard
+"fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4":
+ version: 3.2.0
+ resolution: "fetch-blob@npm:3.2.0"
+ dependencies:
+ node-domexception: ^1.0.0
+ web-streams-polyfill: ^3.0.3
+ checksum: 60054bf47bfa10fb0ba6cb7742acec2f37c1f56344f79a70bb8b1c48d77675927c720ff3191fa546410a0442c998d27ab05e9144c32d530d8a52fbe68f843b69
+ languageName: node
+ linkType: hard
+
"fetch-retry@npm:^5.0.2":
version: 5.0.3
resolution: "fetch-retry@npm:5.0.3"
@@ -20819,6 +21302,16 @@ __metadata:
languageName: node
linkType: hard
+"figures@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "figures@npm:5.0.0"
+ dependencies:
+ escape-string-regexp: ^5.0.0
+ is-unicode-supported: ^1.2.0
+ checksum: ce0f17d4ea8b0fc429c5207c343534a2f5284ecfb22aa08607da7dc84ed9e1cf754f5b97760e8dcb98d3c9d1a1e4d3d578fe3b5b99c426f05d0f06c7ba618e16
+ languageName: node
+ linkType: hard
+
"file-entry-cache@npm:^5.0.1":
version: 5.0.1
resolution: "file-entry-cache@npm:5.0.1"
@@ -21142,7 +21635,7 @@ __metadata:
languageName: node
linkType: hard
-"follow-redirects@npm:^1.15.0":
+"follow-redirects@npm:^1.14.9, follow-redirects@npm:^1.15.0":
version: 1.15.2
resolution: "follow-redirects@npm:1.15.2"
peerDependenciesMeta:
@@ -21280,6 +21773,15 @@ __metadata:
languageName: node
linkType: hard
+"formdata-polyfill@npm:^4.0.10":
+ version: 4.0.10
+ resolution: "formdata-polyfill@npm:4.0.10"
+ dependencies:
+ fetch-blob: ^3.1.2
+ checksum: 5392ec484f9ce0d5e0d52fb5a78e7486637d516179b0eb84d81389d7eccf9ca2f663079da56f761355c0a65792810e3b345dc24db9a8bbbcf24ef3c8c88570c6
+ languageName: node
+ linkType: hard
+
"formidable@npm:^1.2.0":
version: 1.2.6
resolution: "formidable@npm:1.2.6"
@@ -22217,7 +22719,7 @@ __metadata:
languageName: node
linkType: hard
-"get-stream@npm:^6.0.0":
+"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1":
version: 6.0.1
resolution: "get-stream@npm:6.0.1"
checksum: 49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341
@@ -22468,6 +22970,15 @@ __metadata:
languageName: node
linkType: hard
+"globals@npm:^13.19.0":
+ version: 13.20.0
+ resolution: "globals@npm:13.20.0"
+ dependencies:
+ type-fest: ^0.20.2
+ checksum: 9a028f136f1e7a3574689f430f7d57faa0d699c4c7e92ade00b02882a892be31c314d50dff07b48e607283013117bb8a997406d03a1f7ab4a33a005eb16efd6c
+ languageName: node
+ linkType: hard
+
"globalthis@npm:^1.0.0, globalthis@npm:^1.0.3":
version: 1.0.3
resolution: "globalthis@npm:1.0.3"
@@ -22624,6 +23135,13 @@ __metadata:
languageName: node
linkType: hard
+"graphemer@npm:^1.4.0":
+ version: 1.4.0
+ resolution: "graphemer@npm:1.4.0"
+ checksum: e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31
+ languageName: node
+ linkType: hard
+
"graphql-compose@npm:^9.0.7":
version: 9.0.8
resolution: "graphql-compose@npm:9.0.8"
@@ -23409,6 +23927,13 @@ __metadata:
languageName: node
linkType: hard
+"human-signals@npm:^4.3.0":
+ version: 4.3.1
+ resolution: "human-signals@npm:4.3.1"
+ checksum: 40498b33fe139f5cc4ef5d2f95eb1803d6318ac1b1c63eaf14eeed5484d26332c828de4a5a05676b6c83d7b9e57727c59addb4b1dea19cb8d71e83689e5b336c
+ languageName: node
+ linkType: hard
+
"humanize-ms@npm:^1.2.1":
version: 1.2.1
resolution: "humanize-ms@npm:1.2.1"
@@ -23736,6 +24261,29 @@ __metadata:
languageName: node
linkType: hard
+"inquirer@npm:^9.2.2":
+ version: 9.2.6
+ resolution: "inquirer@npm:9.2.6"
+ dependencies:
+ ansi-escapes: ^4.3.2
+ chalk: ^5.2.0
+ cli-cursor: ^3.1.0
+ cli-width: ^4.0.0
+ external-editor: ^3.0.3
+ figures: ^5.0.0
+ lodash: ^4.17.21
+ mute-stream: 1.0.0
+ ora: ^5.4.1
+ run-async: ^3.0.0
+ rxjs: ^7.8.1
+ string-width: ^4.2.3
+ strip-ansi: ^6.0.1
+ through: ^2.3.6
+ wrap-ansi: ^6.0.1
+ checksum: f07fe6b0ce9587a306771c5d4c40e5f5bbb940c6a78648326e978ec7f26fb28a903cbf595fd23af3b35b633ec5eba1845e2c3d35888fe073c884f50046a738b8
+ languageName: node
+ linkType: hard
+
"integration-tests-api@workspace:integration-tests/api":
version: 0.0.0-use.local
resolution: "integration-tests-api@workspace:integration-tests/api"
@@ -24145,6 +24693,15 @@ __metadata:
languageName: node
linkType: hard
+"is-docker@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "is-docker@npm:3.0.0"
+ bin:
+ is-docker: cli.js
+ checksum: d2c4f8e6d3e34df75a5defd44991b6068afad4835bb783b902fa12d13ebdb8f41b2a199dcb0b5ed2cb78bfee9e4c0bbdb69c2d9646f4106464674d3e697a5856
+ languageName: node
+ linkType: hard
+
"is-dom@npm:^1.0.0":
version: 1.1.0
resolution: "is-dom@npm:1.1.0"
@@ -24270,6 +24827,17 @@ __metadata:
languageName: node
linkType: hard
+"is-inside-container@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "is-inside-container@npm:1.0.0"
+ dependencies:
+ is-docker: ^3.0.0
+ bin:
+ is-inside-container: cli.js
+ checksum: a8efb0e84f6197e6ff5c64c52890fa9acb49b7b74fed4da7c95383965da6f0fa592b4dbd5e38a79f87fc108196937acdbcd758fcefc9b140e479b39ce1fcd1cd
+ languageName: node
+ linkType: hard
+
"is-installed-globally@npm:^0.4.0":
version: 0.4.0
resolution: "is-installed-globally@npm:0.4.0"
@@ -24287,6 +24855,13 @@ __metadata:
languageName: node
linkType: hard
+"is-interactive@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "is-interactive@npm:2.0.0"
+ checksum: 801c8f6064f85199dc6bf99b5dd98db3282e930c3bc197b32f2c5b89313bb578a07d1b8a01365c4348c2927229234f3681eb861b9c2c92bee72ff397390fa600
+ languageName: node
+ linkType: hard
+
"is-invalid-path@npm:^0.1.0":
version: 0.1.0
resolution: "is-invalid-path@npm:0.1.0"
@@ -24407,7 +24982,7 @@ __metadata:
languageName: node
linkType: hard
-"is-path-inside@npm:^3.0.2":
+"is-path-inside@npm:^3.0.2, is-path-inside@npm:^3.0.3":
version: 3.0.3
resolution: "is-path-inside@npm:3.0.3"
checksum: cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05
@@ -24562,6 +25137,13 @@ __metadata:
languageName: node
linkType: hard
+"is-stream@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "is-stream@npm:3.0.0"
+ checksum: eb2f7127af02ee9aa2a0237b730e47ac2de0d4e76a4a905a50a11557f2339df5765eaea4ceb8029f1efa978586abe776908720bfcb1900c20c6ec5145f6f29d8
+ languageName: node
+ linkType: hard
+
"is-string@npm:^1.0.5, is-string@npm:^1.0.7":
version: 1.0.7
resolution: "is-string@npm:1.0.7"
@@ -24612,6 +25194,13 @@ __metadata:
languageName: node
linkType: hard
+"is-unicode-supported@npm:^1.1.0, is-unicode-supported@npm:^1.2.0":
+ version: 1.3.0
+ resolution: "is-unicode-supported@npm:1.3.0"
+ checksum: b8674ea95d869f6faabddc6a484767207058b91aea0250803cbf1221345cb0c56f466d4ecea375dc77f6633d248d33c47bd296fb8f4cdba0b4edba8917e83d8a
+ languageName: node
+ linkType: hard
+
"is-upper-case@npm:^2.0.2":
version: 2.0.2
resolution: "is-upper-case@npm:2.0.2"
@@ -27210,6 +27799,19 @@ __metadata:
languageName: node
linkType: hard
+"joi@npm:^17.7.0":
+ version: 17.9.2
+ resolution: "joi@npm:17.9.2"
+ dependencies:
+ "@hapi/hoek": ^9.0.0
+ "@hapi/topo": ^5.0.0
+ "@sideway/address": ^4.1.3
+ "@sideway/formula": ^3.0.1
+ "@sideway/pinpoint": ^2.0.0
+ checksum: 284bc34d5070c7b064a9fa68e02703961ad08229dd95dfe0baf2aa5d278c7a99543ecb979b8a6e6f72035539bfdaf1269ac7fa7684a503b6de18b173f72dcc89
+ languageName: node
+ linkType: hard
+
"join-component@npm:^1.1.0":
version: 1.1.0
resolution: "join-component@npm:1.1.0"
@@ -28527,6 +29129,16 @@ __metadata:
languageName: node
linkType: hard
+"log-symbols@npm:^5.1.0":
+ version: 5.1.0
+ resolution: "log-symbols@npm:5.1.0"
+ dependencies:
+ chalk: ^5.0.0
+ is-unicode-supported: ^1.1.0
+ checksum: c14f8567c6618a7f96209c4c4b9fb3b794187116904712f7b526e465a5c9535728aec983735a5bef919247d0e54b9b72b6680a7fb9fc72d76b945dac4865e669
+ languageName: node
+ linkType: hard
+
"log-update@npm:^4.0.0":
version: 4.0.0
resolution: "log-update@npm:4.0.0"
@@ -30164,6 +30776,13 @@ __metadata:
languageName: node
linkType: hard
+"mimic-fn@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "mimic-fn@npm:4.0.0"
+ checksum: de9cc32be9996fd941e512248338e43407f63f6d497abe8441fa33447d922e927de54d4cc3c1a3c6d652857acd770389d5a3823f311a744132760ce2be15ccbf
+ languageName: node
+ linkType: hard
+
"mimic-response@npm:^1.0.0, mimic-response@npm:^1.0.1":
version: 1.0.1
resolution: "mimic-response@npm:1.0.1"
@@ -30230,7 +30849,7 @@ __metadata:
languageName: node
linkType: hard
-"minimatch@npm:2 || 3, minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2":
+"minimatch@npm:2 || 3, minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2":
version: 3.1.2
resolution: "minimatch@npm:3.1.2"
dependencies:
@@ -30275,6 +30894,13 @@ __metadata:
languageName: node
linkType: hard
+"minimist@npm:^1.2.7":
+ version: 1.2.8
+ resolution: "minimist@npm:1.2.8"
+ checksum: 19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6
+ languageName: node
+ linkType: hard
+
"minipass-collect@npm:^1.0.2":
version: 1.0.2
resolution: "minipass-collect@npm:1.0.2"
@@ -30749,6 +31375,13 @@ __metadata:
languageName: node
linkType: hard
+"mute-stream@npm:1.0.0":
+ version: 1.0.0
+ resolution: "mute-stream@npm:1.0.0"
+ checksum: dce2a9ccda171ec979a3b4f869a102b1343dee35e920146776780de182f16eae459644d187e38d59a3d37adf85685e1c17c38cf7bfda7e39a9880f7a1d10a74c
+ languageName: node
+ linkType: hard
+
"mv@npm:2.1.1, mv@npm:~2":
version: 2.1.1
resolution: "mv@npm:2.1.1"
@@ -30789,6 +31422,15 @@ __metadata:
languageName: node
linkType: hard
+"nanoid@npm:^4.0.2":
+ version: 4.0.2
+ resolution: "nanoid@npm:4.0.2"
+ bin:
+ nanoid: bin/nanoid.js
+ checksum: 3fec62f422bc4727918eda0e7aa43e9cbb2e759be72813a0587b9dac99727d3c7ad972efce7f4f1d4cb5c7c554136a1ec3b1043d1d91d28d818d6acbe98200e5
+ languageName: node
+ linkType: hard
+
"nanomatch@npm:^1.2.9":
version: 1.2.13
resolution: "nanomatch@npm:1.2.13"
@@ -30967,6 +31609,13 @@ __metadata:
languageName: node
linkType: hard
+"node-domexception@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "node-domexception@npm:1.0.0"
+ checksum: 5e5d63cda29856402df9472335af4bb13875e1927ad3be861dc5ebde38917aecbf9ae337923777af52a48c426b70148815e890a5d72760f1b4d758cc671b1a2b
+ languageName: node
+ linkType: hard
+
"node-environment-flags@npm:^1.0.5":
version: 1.0.6
resolution: "node-environment-flags@npm:1.0.6"
@@ -31017,17 +31666,14 @@ __metadata:
languageName: node
linkType: hard
-"node-fetch@npm:^2.6.9":
- version: 2.6.9
- resolution: "node-fetch@npm:2.6.9"
+"node-fetch@npm:^3.3.1":
+ version: 3.3.1
+ resolution: "node-fetch@npm:3.3.1"
dependencies:
- whatwg-url: ^5.0.0
- peerDependencies:
- encoding: ^0.1.0
- peerDependenciesMeta:
- encoding:
- optional: true
- checksum: 7a4a0e027e509b741bec4172749103f158da23187ff251cb988dd54ea7267519c3fa11838971da0f5f3c54e79da3174e7bd72aa2179c9f69887511ece16c9c0f
+ data-uri-to-buffer: ^4.0.0
+ fetch-blob: ^3.1.4
+ formdata-polyfill: ^4.0.10
+ checksum: 78671bffed741a2f3ccb15588a42fd7e9db2bdc9f99f9f584e0c749307f9603d961692f0877d853b28a4d1375ab2253b19978dd3bfc0c3189b42adc340bef927
languageName: node
linkType: hard
@@ -31328,6 +31974,15 @@ __metadata:
languageName: node
linkType: hard
+"npm-run-path@npm:^5.1.0":
+ version: 5.1.0
+ resolution: "npm-run-path@npm:5.1.0"
+ dependencies:
+ path-key: ^4.0.0
+ checksum: ff6d77514489f47fa1c3b1311d09cd4b6d09a874cc1866260f9dea12cbaabda0436ed7f8c2ee44d147bf99a3af29307c6f63b0f83d242b0b6b0ab25dff2629e3
+ languageName: node
+ linkType: hard
+
"npmlog@npm:^5.0.1":
version: 5.0.1
resolution: "npmlog@npm:5.0.1"
@@ -31680,6 +32335,13 @@ __metadata:
languageName: node
linkType: hard
+"obuf@npm:~1.1.2":
+ version: 1.1.2
+ resolution: "obuf@npm:1.1.2"
+ checksum: 520aaac7ea701618eacf000fc96ae458e20e13b0569845800fc582f81b386731ab22d55354b4915d58171db00e79cfcd09c1638c02f89577ef092b38c65b7d81
+ languageName: node
+ linkType: hard
+
"omggif@npm:^1.0.10, omggif@npm:^1.0.9":
version: 1.0.10
resolution: "omggif@npm:1.0.10"
@@ -31739,6 +32401,15 @@ __metadata:
languageName: node
linkType: hard
+"onetime@npm:^6.0.0":
+ version: 6.0.0
+ resolution: "onetime@npm:6.0.0"
+ dependencies:
+ mimic-fn: ^4.0.0
+ checksum: 4eef7c6abfef697dd4479345a4100c382d73c149d2d56170a54a07418c50816937ad09500e1ed1e79d235989d073a9bade8557122aee24f0576ecde0f392bb6c
+ languageName: node
+ linkType: hard
+
"open@npm:^7.0.3":
version: 7.4.2
resolution: "open@npm:7.4.2"
@@ -31760,6 +32431,18 @@ __metadata:
languageName: node
linkType: hard
+"open@npm:^9.1.0":
+ version: 9.1.0
+ resolution: "open@npm:9.1.0"
+ dependencies:
+ default-browser: ^4.0.0
+ define-lazy-prop: ^3.0.0
+ is-inside-container: ^1.0.0
+ is-wsl: ^2.2.0
+ checksum: 8073ec0dd8994a7a7d9bac208bd17d093993a65ce10f2eb9b62b6d3a91c9366ae903938a237c275493c130171d339f6dcbdd2a2de7e32953452c0867b97825af
+ languageName: node
+ linkType: hard
+
"openapi-sampler@npm:^1.3.0":
version: 1.3.1
resolution: "openapi-sampler@npm:1.3.1"
@@ -31857,6 +32540,23 @@ __metadata:
languageName: node
linkType: hard
+"ora@npm:^6.3.0":
+ version: 6.3.1
+ resolution: "ora@npm:6.3.1"
+ dependencies:
+ chalk: ^5.0.0
+ cli-cursor: ^4.0.0
+ cli-spinners: ^2.6.1
+ is-interactive: ^2.0.0
+ is-unicode-supported: ^1.1.0
+ log-symbols: ^5.1.0
+ stdin-discarder: ^0.1.0
+ strip-ansi: ^7.0.1
+ wcwidth: ^1.0.1
+ checksum: f8753e234c9967c86cfb73e7396e1a51ed8771c4921d539af8e8962b32c7928cefef7b3c4ce730a504be72b1437f91cc0523f468927b9fe322498c4edcc50203
+ languageName: node
+ linkType: hard
+
"ordered-binary@npm:^1.2.4":
version: 1.3.0
resolution: "ordered-binary@npm:1.3.0"
@@ -32513,6 +33213,13 @@ __metadata:
languageName: node
linkType: hard
+"path-key@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "path-key@npm:4.0.0"
+ checksum: 794efeef32863a65ac312f3c0b0a99f921f3e827ff63afa5cb09a377e202c262b671f7b3832a4e64731003fa94af0263713962d317b9887bd1e0c48a342efba3
+ languageName: node
+ linkType: hard
+
"path-parse@npm:^1.0.6, path-parse@npm:^1.0.7":
version: 1.0.7
resolution: "path-parse@npm:1.0.7"
@@ -32634,6 +33341,13 @@ __metadata:
languageName: node
linkType: hard
+"pg-cloudflare@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "pg-cloudflare@npm:1.1.0"
+ checksum: 8196cd02224365ba9bf5a616c95212d829d9d12abb75ed7a35e8d9bc8dabacd461c227a1a387d98009ad72b2fbf435721bb91db7d8086b47633475724cebb1cf
+ languageName: node
+ linkType: hard
+
"pg-connection-string@npm:^2.5.0":
version: 2.5.0
resolution: "pg-connection-string@npm:2.5.0"
@@ -32641,6 +33355,13 @@ __metadata:
languageName: node
linkType: hard
+"pg-connection-string@npm:^2.6.0":
+ version: 2.6.0
+ resolution: "pg-connection-string@npm:2.6.0"
+ checksum: 04824a3f32897d58075f70c16e99ca578ba46b3a1343884bba63ae1740cd69f12f2f4777f91da8ff4c18d6b4dcafce61f1ebf0d58624fc33e0ff66e7f6db082a
+ languageName: node
+ linkType: hard
+
"pg-god@npm:^1.0.12":
version: 1.0.12
resolution: "pg-god@npm:1.0.12"
@@ -32664,6 +33385,13 @@ __metadata:
languageName: node
linkType: hard
+"pg-numeric@npm:1.0.2":
+ version: 1.0.2
+ resolution: "pg-numeric@npm:1.0.2"
+ checksum: 43dd9884e7b52c79ddc28d2d282d7475fce8bba13452d33c04ceb2e0a65f561edf6699694e8e1c832ff9093770496363183c950dd29608e1bdd98f344b25bca9
+ languageName: node
+ linkType: hard
+
"pg-pool@npm:^3.5.1":
version: 3.5.1
resolution: "pg-pool@npm:3.5.1"
@@ -32673,6 +33401,22 @@ __metadata:
languageName: node
linkType: hard
+"pg-pool@npm:^3.6.0":
+ version: 3.6.0
+ resolution: "pg-pool@npm:3.6.0"
+ peerDependencies:
+ pg: ">=8.0"
+ checksum: de5823f544431cc18a44e3b4fee82fddcd4e723c0912b60370600772291727a0c579ab3ff767a44cc1b5c9137bc5d6cba25a282b5f33d6c033df55072c99ac27
+ languageName: node
+ linkType: hard
+
+"pg-protocol@npm:*, pg-protocol@npm:^1.6.0":
+ version: 1.6.0
+ resolution: "pg-protocol@npm:1.6.0"
+ checksum: 318a4d1e9cebd3927b10a8bc412f5017117a1f9a5fafb628d75847da7d1ab81c33250de58596bd0990029e14e92a995a851286d60fc236692299faf509572213
+ languageName: node
+ linkType: hard
+
"pg-protocol@npm:^1.5.0":
version: 1.5.0
resolution: "pg-protocol@npm:1.5.0"
@@ -32693,6 +33437,45 @@ __metadata:
languageName: node
linkType: hard
+"pg-types@npm:^4.0.1":
+ version: 4.0.1
+ resolution: "pg-types@npm:4.0.1"
+ dependencies:
+ pg-int8: 1.0.1
+ pg-numeric: 1.0.2
+ postgres-array: ~3.0.1
+ postgres-bytea: ~3.0.0
+ postgres-date: ~2.0.1
+ postgres-interval: ^3.0.0
+ postgres-range: ^1.1.1
+ checksum: e2126b2775554ae8bacb3b104814487c2af2caff44cc52bee786b3887c65fe4c1fe031237e51e30ffed1cbb13b71776bd60cc1e65ac800c9946df4030849a074
+ languageName: node
+ linkType: hard
+
+"pg@npm:^8.10.0":
+ version: 8.11.0
+ resolution: "pg@npm:8.11.0"
+ dependencies:
+ buffer-writer: 2.0.0
+ packet-reader: 1.0.0
+ pg-cloudflare: ^1.1.0
+ pg-connection-string: ^2.6.0
+ pg-pool: ^3.6.0
+ pg-protocol: ^1.6.0
+ pg-types: ^2.1.0
+ pgpass: 1.x
+ peerDependencies:
+ pg-native: ">=3.0.1"
+ dependenciesMeta:
+ pg-cloudflare:
+ optional: true
+ peerDependenciesMeta:
+ pg-native:
+ optional: true
+ checksum: 81cc13bce32eeafc6365472750503698a4c853c7438ec8f6e3e88cccb39590cbed35f1df22991d9c460a4e11ac237babfa434445e4a92ff89c24ca3066969771
+ languageName: node
+ linkType: hard
+
"pg@npm:^8.3.0, pg@npm:^8.5.1":
version: 8.7.3
resolution: "pg@npm:8.7.3"
@@ -33528,6 +34311,13 @@ __metadata:
languageName: node
linkType: hard
+"postgres-array@npm:~3.0.1":
+ version: 3.0.2
+ resolution: "postgres-array@npm:3.0.2"
+ checksum: 644aa071f67a66a59f641f8e623887d2b915bc102a32643e2aa8b54c11acd343c5ad97831ea444dd37bd4b921ba35add4aa2cb0c6b76700a8252c2324aeba5b4
+ languageName: node
+ linkType: hard
+
"postgres-bytea@npm:~1.0.0":
version: 1.0.0
resolution: "postgres-bytea@npm:1.0.0"
@@ -33535,6 +34325,15 @@ __metadata:
languageName: node
linkType: hard
+"postgres-bytea@npm:~3.0.0":
+ version: 3.0.0
+ resolution: "postgres-bytea@npm:3.0.0"
+ dependencies:
+ obuf: ~1.1.2
+ checksum: 41c79cc48aa730c5ba3eda6ab989a940034f07a1f57b8f2777dce56f1b8cca16c5870582932b5b10cc605048aef9b6157e06253c871b4717cafc6d00f55376aa
+ languageName: node
+ linkType: hard
+
"postgres-date@npm:~1.0.4":
version: 1.0.7
resolution: "postgres-date@npm:1.0.7"
@@ -33542,6 +34341,13 @@ __metadata:
languageName: node
linkType: hard
+"postgres-date@npm:~2.0.1":
+ version: 2.0.1
+ resolution: "postgres-date@npm:2.0.1"
+ checksum: 2d3698958f858b7d1df0a3929fb8750ccb43fa2c8ee9fec7a021e7926291f6c85ddd9d94d87cd6529d70bd2444f3e14fb5bb323af19ceaa733542cc05c5c653a
+ languageName: node
+ linkType: hard
+
"postgres-interval@npm:^1.1.0":
version: 1.2.0
resolution: "postgres-interval@npm:1.2.0"
@@ -33551,6 +34357,20 @@ __metadata:
languageName: node
linkType: hard
+"postgres-interval@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "postgres-interval@npm:3.0.0"
+ checksum: 8b570b30ea37c685e26d136d34460f246f98935a1533defc4b53bb05ee23ae3dc7475b718ec7ea607a57894d8c6b4f1adf67ca9cc83a75bdacffd427d5c68de8
+ languageName: node
+ linkType: hard
+
+"postgres-range@npm:^1.1.1":
+ version: 1.1.3
+ resolution: "postgres-range@npm:1.1.3"
+ checksum: f46bc379a198a9e3282a222c8e432d77494854bd4fa0706dff01641846db0bf4f09a9723e7fbb202da34ec3b2d88fc50e26e4bbeded7df19646e3acd6a7465ce
+ languageName: node
+ linkType: hard
+
"prebuild-install@npm:^7.1.1":
version: 7.1.1
resolution: "prebuild-install@npm:7.1.1"
@@ -33688,6 +34508,15 @@ __metadata:
languageName: node
linkType: hard
+"prettier@npm:^2.8.8":
+ version: 2.8.8
+ resolution: "prettier@npm:2.8.8"
+ bin:
+ prettier: bin-prettier.js
+ checksum: 463ea8f9a0946cd5b828d8cf27bd8b567345cf02f56562d5ecde198b91f47a76b7ac9eae0facd247ace70e927143af6135e8cf411986b8cb8478784a4d6d724a
+ languageName: node
+ linkType: hard
+
"pretty-bytes@npm:^3.0.0":
version: 3.0.1
resolution: "pretty-bytes@npm:3.0.1"
@@ -35913,6 +36742,16 @@ __metadata:
languageName: node
linkType: hard
+"restore-cursor@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "restore-cursor@npm:4.0.0"
+ dependencies:
+ onetime: ^5.1.0
+ signal-exit: ^3.0.2
+ checksum: 6f7da8c5e422ac26aa38354870b1afac09963572cf2879443540449068cb43476e9cbccf6f8de3e0171e0d6f7f533c2bc1a0a008003c9a525bbc098e89041318
+ languageName: node
+ linkType: hard
+
"ret@npm:~0.1.10":
version: 0.1.15
resolution: "ret@npm:0.1.15"
@@ -36205,6 +37044,15 @@ __metadata:
languageName: node
linkType: hard
+"run-applescript@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "run-applescript@npm:5.0.0"
+ dependencies:
+ execa: ^5.0.0
+ checksum: f9977db5770929f3f0db434b8e6aa266498c70dec913c84320c0a06add510cf44e3a048c44da088abee312006f9cbf572fd065cdc8f15d7682afda8755f4114c
+ languageName: node
+ linkType: hard
+
"run-async@npm:^2.4.0":
version: 2.4.1
resolution: "run-async@npm:2.4.1"
@@ -36212,6 +37060,13 @@ __metadata:
languageName: node
linkType: hard
+"run-async@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "run-async@npm:3.0.0"
+ checksum: b18b562ae37c3020083dcaae29642e4cc360c824fbfb6b7d50d809a9d5227bb986152d09310255842c8dce40526e82ca768f02f00806c91ba92a8dfa6159cb85
+ languageName: node
+ linkType: hard
+
"run-parallel@npm:^1.1.9":
version: 1.2.0
resolution: "run-parallel@npm:1.2.0"
@@ -36239,6 +37094,15 @@ __metadata:
languageName: node
linkType: hard
+"rxjs@npm:^7.2.0, rxjs@npm:^7.8.0, rxjs@npm:^7.8.1":
+ version: 7.8.1
+ resolution: "rxjs@npm:7.8.1"
+ dependencies:
+ tslib: ^2.1.0
+ checksum: 3c49c1ecd66170b175c9cacf5cef67f8914dcbc7cd0162855538d365c83fea631167cacb644b3ce533b2ea0e9a4d0b12175186985f89d75abe73dbd8f7f06f68
+ languageName: node
+ linkType: hard
+
"rxjs@npm:^7.5.1, rxjs@npm:^7.5.5":
version: 7.5.6
resolution: "rxjs@npm:7.5.6"
@@ -37020,6 +37884,13 @@ __metadata:
languageName: node
linkType: hard
+"slugify@npm:^1.6.6":
+ version: 1.6.6
+ resolution: "slugify@npm:1.6.6"
+ checksum: e7e63f08f389a371d6228bc19d64ec84360bf0a538333446cc49dbbf3971751a6d180d2f31551188dd007a65ca771e69f574e0283290a7825a818e90b75ef44d
+ languageName: node
+ linkType: hard
+
"slugify@npm:~1.4.7":
version: 1.4.7
resolution: "slugify@npm:1.4.7"
@@ -37543,6 +38414,15 @@ __metadata:
languageName: node
linkType: hard
+"stdin-discarder@npm:^0.1.0":
+ version: 0.1.0
+ resolution: "stdin-discarder@npm:0.1.0"
+ dependencies:
+ bl: ^5.0.0
+ checksum: 3bbf7f8107e49c05b4a46bd739afdd34605cf1f06a038c8b2a33d034bf146344fc0ebc5149df1e6422510dd219971a220f25b1102413ef5128fe267683fbef9d
+ languageName: node
+ linkType: hard
+
"stealthy-require@npm:^1.1.1":
version: 1.1.1
resolution: "stealthy-require@npm:1.1.1"
@@ -37690,7 +38570,7 @@ __metadata:
languageName: node
linkType: hard
-"string-length@npm:^4.0.1, string-length@npm:^4.0.2":
+"string-length@npm:^4.0.1":
version: 4.0.2
resolution: "string-length@npm:4.0.2"
dependencies:
@@ -37742,7 +38622,7 @@ __metadata:
languageName: node
linkType: hard
-"string-width@npm:^5.0.0":
+"string-width@npm:^5.0.0, string-width@npm:^5.0.1, string-width@npm:^5.1.2":
version: 5.1.2
resolution: "string-width@npm:5.1.2"
dependencies:
@@ -37960,6 +38840,13 @@ __metadata:
languageName: node
linkType: hard
+"strip-final-newline@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "strip-final-newline@npm:3.0.0"
+ checksum: a771a17901427bac6293fd416db7577e2bc1c34a19d38351e9d5478c3c415f523f391003b42ed475f27e33a78233035df183525395f731d3bfb8cdcbd4da08ce
+ languageName: node
+ linkType: hard
+
"strip-indent@npm:^1.0.1":
version: 1.0.1
resolution: "strip-indent@npm:1.0.1"
@@ -38507,7 +39394,7 @@ __metadata:
languageName: node
linkType: hard
-"terminal-link@npm:^2.0.0, terminal-link@npm:^2.1.1":
+"terminal-link@npm:^2.0.0":
version: 2.1.1
resolution: "terminal-link@npm:2.1.1"
dependencies:
@@ -38721,13 +39608,6 @@ __metadata:
languageName: node
linkType: hard
-"tiny-spin@npm:^1.0.2":
- version: 1.0.2
- resolution: "tiny-spin@npm:1.0.2"
- checksum: 7881fc673047db453755695d59a864a87a10c807411235f0f79e321e94f9e57a6c8211236afa1ebd50f4668bb1f56f6636b17649809d1ec4a67b441312ceb4f9
- languageName: node
- linkType: hard
-
"tinybench@npm:^2.3.1":
version: 2.3.1
resolution: "tinybench@npm:2.3.1"
@@ -38765,6 +39645,13 @@ __metadata:
languageName: node
linkType: hard
+"titleize@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "titleize@npm:3.0.0"
+ checksum: 5ae6084ba299b5782f95e3fe85ea9f0fa4d74b8ae722b6b3208157e975589fbb27733aeba4e5080fa9314a856044ef52caa61b87caea4b1baade951a55c06336
+ languageName: node
+ linkType: hard
+
"tmp@npm:^0.0.33":
version: 0.0.33
resolution: "tmp@npm:0.0.33"
@@ -39610,6 +40497,13 @@ __metadata:
languageName: node
linkType: hard
+"type-fest@npm:^2.13.0":
+ version: 2.19.0
+ resolution: "type-fest@npm:2.19.0"
+ checksum: a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb
+ languageName: node
+ linkType: hard
+
"type-fest@npm:^3.6.0":
version: 3.6.0
resolution: "type-fest@npm:3.6.0"
@@ -39824,6 +40718,16 @@ __metadata:
languageName: node
linkType: hard
+"typescript@npm:^5.0.4":
+ version: 5.0.4
+ resolution: "typescript@npm:5.0.4"
+ bin:
+ tsc: bin/tsc
+ tsserver: bin/tsserver
+ checksum: 2f5bd1cead194905957cb34e220b1d6ff1662399adef8ec1864f74620922d860ee35b6e50eafb3b636ea6fd437195e454e1146cb630a4236b5095ed7617395c2
+ languageName: node
+ linkType: hard
+
"typescript@patch:typescript@4.9.5#~builtin, typescript@patch:typescript@^4.9.3#~builtin, typescript@patch:typescript@^4.9.5#~builtin":
version: 4.9.5
resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin::version=4.9.5&hash=7ad353"
@@ -39844,6 +40748,16 @@ __metadata:
languageName: node
linkType: hard
+"typescript@patch:typescript@^5.0.4#~builtin":
+ version: 5.0.4
+ resolution: "typescript@patch:typescript@npm%3A5.0.4#~builtin::version=5.0.4&hash=7ad353"
+ bin:
+ tsc: bin/tsc
+ tsserver: bin/tsserver
+ checksum: db16dd188048c172051825c7e6eea3e6bf577020625e5635fb8265d22683897d9ed7579b41a3a3e961fba5728c58e324d52041e9ca21d0dfc4bafa8bcf8e7a4b
+ languageName: node
+ linkType: hard
+
"ua-parser-js@npm:^0.7.30":
version: 0.7.31
resolution: "ua-parser-js@npm:0.7.31"
@@ -40181,6 +41095,13 @@ __metadata:
languageName: node
linkType: hard
+"untildify@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "untildify@npm:4.0.0"
+ checksum: d758e624c707d49f76f7511d75d09a8eda7f2020d231ec52b67ff4896bcf7013be3f9522d8375f57e586e9a2e827f5641c7e06ee46ab9c435fc2b2b2e9de517a
+ languageName: node
+ linkType: hard
+
"upath@npm:^1.1.1":
version: 1.2.0
resolution: "upath@npm:1.2.0"
@@ -40496,15 +41417,6 @@ __metadata:
languageName: node
linkType: hard
-"uuid@npm:3.4.0, uuid@npm:^3.2.1, uuid@npm:^3.3.2":
- version: 3.4.0
- resolution: "uuid@npm:3.4.0"
- bin:
- uuid: ./bin/uuid
- checksum: 1c13950df865c4f506ebfe0a24023571fa80edf2e62364297a537c80af09c618299797bbf2dbac6b1f8ae5ad182ba474b89db61e0e85839683991f7e08795347
- languageName: node
- linkType: hard
-
"uuid@npm:8.0.0":
version: 8.0.0
resolution: "uuid@npm:8.0.0"
@@ -40514,6 +41426,15 @@ __metadata:
languageName: node
linkType: hard
+"uuid@npm:^3.2.1, uuid@npm:^3.3.2":
+ version: 3.4.0
+ resolution: "uuid@npm:3.4.0"
+ bin:
+ uuid: ./bin/uuid
+ checksum: 1c13950df865c4f506ebfe0a24023571fa80edf2e62364297a537c80af09c618299797bbf2dbac6b1f8ae5ad182ba474b89db61e0e85839683991f7e08795347
+ languageName: node
+ linkType: hard
+
"uuid@npm:^8.3.0, uuid@npm:^8.3.1, uuid@npm:^8.3.2":
version: 8.3.2
resolution: "uuid@npm:8.3.2"
@@ -40623,6 +41544,13 @@ __metadata:
languageName: node
linkType: hard
+"validator@npm:^13.9.0":
+ version: 13.9.0
+ resolution: "validator@npm:13.9.0"
+ checksum: 0a0af4b37779671b53ef790aa9d36f71a605c9d41c6daf198d2a1051ce549bcdca3313fa3b52c8fa24577e1a4968ec9404ad8a928d3607d51bccef6d6e33bee7
+ languageName: node
+ linkType: hard
+
"value-or-promise@npm:1.0.11":
version: 1.0.11
resolution: "value-or-promise@npm:1.0.11"
@@ -40916,6 +41844,21 @@ __metadata:
languageName: node
linkType: hard
+"wait-on@npm:^7.0.1":
+ version: 7.0.1
+ resolution: "wait-on@npm:7.0.1"
+ dependencies:
+ axios: ^0.27.2
+ joi: ^17.7.0
+ lodash: ^4.17.21
+ minimist: ^1.2.7
+ rxjs: ^7.8.0
+ bin:
+ wait-on: bin/wait-on
+ checksum: 2a9c56d26dac573e6bfd36e85d99f072021c23dc2c0faab900a411460b58e16982b96b018d9168c366040f56196314fa46f3d79ef19e3dc38f55824d5035f2ec
+ languageName: node
+ linkType: hard
+
"walker@npm:^1.0.7, walker@npm:^1.0.8, walker@npm:~1.0.5":
version: 1.0.8
resolution: "walker@npm:1.0.8"
@@ -41000,6 +41943,13 @@ __metadata:
languageName: node
linkType: hard
+"web-streams-polyfill@npm:^3.0.3":
+ version: 3.2.1
+ resolution: "web-streams-polyfill@npm:3.2.1"
+ checksum: 70ed6b5708e14afa2ab699221ea197d7c68ec0c8274bbe0181aecc5ba636ca27cbd383d2049f0eb9d529e738f5c088825502b317f3df24d18a278e4cc9a10e8b
+ languageName: node
+ linkType: hard
+
"webidl-conversions@npm:^3.0.0":
version: 3.0.1
resolution: "webidl-conversions@npm:3.0.1"
@@ -41387,6 +42337,15 @@ __metadata:
languageName: node
linkType: hard
+"widest-line@npm:^4.0.1":
+ version: 4.0.1
+ resolution: "widest-line@npm:4.0.1"
+ dependencies:
+ string-width: ^5.0.1
+ checksum: 7da9525ba45eaf3e4ed1a20f3dcb9b85bd9443962450694dae950f4bdd752839747bbc14713522b0b93080007de8e8af677a61a8c2114aa553ad52bde72d0f9c
+ languageName: node
+ linkType: hard
+
"wildcard@npm:^2.0.0":
version: 2.0.0
resolution: "wildcard@npm:2.0.0"
@@ -41456,7 +42415,7 @@ __metadata:
languageName: node
linkType: hard
-"wrap-ansi@npm:^6.2.0":
+"wrap-ansi@npm:^6.0.1, wrap-ansi@npm:^6.2.0":
version: 6.2.0
resolution: "wrap-ansi@npm:6.2.0"
dependencies:
@@ -41478,6 +42437,17 @@ __metadata:
languageName: node
linkType: hard
+"wrap-ansi@npm:^8.1.0":
+ version: 8.1.0
+ resolution: "wrap-ansi@npm:8.1.0"
+ dependencies:
+ ansi-styles: ^6.1.0
+ string-width: ^5.0.1
+ strip-ansi: ^7.0.1
+ checksum: 138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60
+ languageName: node
+ linkType: hard
+
"wrappy@npm:1":
version: 1.0.2
resolution: "wrappy@npm:1.0.2"