feat: medusa-react admin hooks (#978)

* add: medusa admin hooks + tests

* fix: remove unneeded props

* fix: deps

* fix: deps

* fix: deps

* fix: failing tests

* fix: failing tests

* fix: query key

* add: yarn workspaces

* fix: linting medusa-react

* fix: add prepare script

* fix: buildOptions

* fix: useAdminShippingOptions query

* fix: use qs instead for query params (#1019)

* fix: formatting

* debug: ci pipeline

* debug: log node_modules structure

* debug: use lerna bootstrap

* debug: update node version

* debug: print pkgs in workspace

* debug: print pkgs in workspace

* debug: print pkgs in workspace

* debug: print pkgs in workspace

* debug: add explicit build step

* fix: jsdoc

* debug: run build step

* debug: fix build errors

* debug: add build step to integration tests

* fix: failing test

* cleanup

Co-authored-by: Sebastian Rindom <seb@medusajs.com>
Co-authored-by: Sebastian Rindom <skrindom@gmail.com>
This commit is contained in:
Zakaria El Asri
2022-02-02 17:10:56 +01:00
committed by GitHub
parent 24175025d1
commit 2e384842d5
209 changed files with 27917 additions and 2727 deletions

View File

@@ -1,52 +0,0 @@
version: 2.1
orbs:
node: circleci/node@3.0.0
executors:
node:
parameters:
image:
type: string
default: "14.18"
docker:
- image: circleci/node:<< parameters.image >>
aliases:
install_node_modules: &install_node_modules
run:
name: Install node modules
command: yarn --frozen-lockfile
attach_to_bootstrap: &attach_to_bootstrap
attach_workspace:
at: ./
jobs:
bootstrap:
executor: node
steps:
- checkout
- run: ./scripts/assert-changed-files.sh "packages/*|(e2e|integration)-tests/*|.circleci/*|yarn.lock"
- <<: *install_node_modules
- run: yarn bootstrap --concurrency=2
# Persist the workspace again with all packages already built
- persist_to_workspace:
root: ./
paths:
- "*"
unit_test:
executor: node
steps:
- checkout
- run: ./scripts/assert-changed-files.sh "packages"
- <<: *attach_to_bootstrap
- run:
command: node --max-old-space-size=2048 ./node_modules/.bin/jest -w 1
workflows:
test_all:
jobs:
- bootstrap
- unit_test:
requires:
- bootstrap

View File

@@ -29,8 +29,11 @@ jobs:
with:
extension: unit-tests
- name: Build Packages
run: yarn build
- name: Run unit tests
run: node --max-old-space-size=2048 ./node_modules/.bin/jest -w 1
run: yarn test
integration-tests:
runs-on: ubuntu-latest
@@ -71,6 +74,9 @@ jobs:
with:
extension: integration-tests
- name: Build Packages
run: lerna run build
- name: Install dev cli
run: sudo npm i -g medusa-dev-cli

View File

@@ -4,19 +4,19 @@
"main": "index.js",
"license": "MIT",
"scripts": {
"test": "jest --maxWorkers=50% --silent=false",
"test": "jest --silent=false",
"build": "babel src -d dist --extensions \".ts,.js\""
},
"dependencies": {
"@medusajs/medusa": "1.1.59-dev-1639132284143",
"medusa-interfaces": "1.1.32-dev-1639132284143",
"@medusajs/medusa": "1.1.60-dev-1641824815181",
"medusa-interfaces": "1.1.32-dev-1641824815181",
"typeorm": "^0.2.31"
},
"devDependencies": {
"@babel/cli": "^7.12.10",
"@babel/core": "^7.12.10",
"@babel/node": "^7.12.10",
"babel-preset-medusa-package": "1.1.19-dev-1639132284143",
"babel-preset-medusa-package": "1.1.19-dev-1641824815181",
"jest": "^26.6.3"
}
}

View File

@@ -1256,10 +1256,10 @@
"@types/yargs" "^15.0.0"
chalk "^4.0.0"
"@medusajs/medusa-cli@1.1.24-dev-1639132284143":
version "1.1.24-dev-1639132284143"
resolved "http://localhost:4873/@medusajs%2fmedusa-cli/-/medusa-cli-1.1.24-dev-1639132284143.tgz#80eeb1f732db447797d8c1c141fc2590a00f89e1"
integrity sha512-IEEq9iJpTHeXAHm8KbGepYVO8xxntlrviCuGfh3OCMBzTAgnQJ/CDvRhAgb4fRGxJZ0uwLJLtQG/7ePCPAotOw==
"@medusajs/medusa-cli@1.1.25-dev-1641824815181":
version "1.1.25-dev-1641824815181"
resolved "http://localhost:4873/@medusajs%2fmedusa-cli/-/medusa-cli-1.1.25-dev-1641824815181.tgz#fc595f422bf3142a65e48df9855ea8644cedaa18"
integrity sha512-xGPb3GJJweG4O3/xESQbL4MyuBHRfTYo09Q/9zaFeD6KSw/MyBiY6odwtD7n1hbLSdUHtfEs8M7h+0WPe2o+/Q==
dependencies:
"@babel/polyfill" "^7.8.7"
"@babel/runtime" "^7.9.6"
@@ -1277,8 +1277,8 @@
is-valid-path "^0.1.1"
joi-objectid "^3.0.1"
meant "^1.0.1"
medusa-core-utils "1.1.31-dev-1639132284143"
medusa-telemetry "0.0.11-dev-1639132284143"
medusa-core-utils "1.1.31-dev-1641824815181"
medusa-telemetry "0.0.11-dev-1641824815181"
netrc-parser "^3.1.6"
open "^8.0.6"
ora "^5.4.1"
@@ -1292,13 +1292,13 @@
winston "^3.3.3"
yargs "^15.3.1"
"@medusajs/medusa@1.1.59-dev-1639132284143":
version "1.1.59-dev-1639132284143"
resolved "http://localhost:4873/@medusajs%2fmedusa/-/medusa-1.1.59-dev-1639132284143.tgz#9cb56910e415e7f8654e94aea0468b960c2ffb12"
integrity sha512-uxKIJLKMwOR/UbuLFW9IvdReODvHace5DVWbTMIK1g031PBX3/ghto0yIbcZVaNdMLETS5SiEwPHkx0QAw2k2A==
"@medusajs/medusa@1.1.60-dev-1641824815181":
version "1.1.60-dev-1641824815181"
resolved "http://localhost:4873/@medusajs%2fmedusa/-/medusa-1.1.60-dev-1641824815181.tgz#cb309b3007fff1e51181f3c65fc563f60503d9ca"
integrity sha512-uVC0L3YhM8oEmczoqrOoYevhln2e2TGcfZDDttXznl0Rjke+gmvI4Isz6KmRNL/6MBeoNMK36qpakAjqJbCPNg==
dependencies:
"@hapi/joi" "^16.1.8"
"@medusajs/medusa-cli" "1.1.24-dev-1639132284143"
"@medusajs/medusa-cli" "1.1.25-dev-1641824815181"
"@types/lodash" "^4.14.168"
awilix "^4.2.3"
body-parser "^1.19.0"
@@ -1322,8 +1322,8 @@
joi "^17.3.0"
joi-objectid "^3.0.1"
jsonwebtoken "^8.5.1"
medusa-core-utils "1.1.31-dev-1639132284143"
medusa-test-utils "1.1.34-dev-1639132284143"
medusa-core-utils "1.1.31-dev-1641824815181"
medusa-test-utils "1.1.35-dev-1641824815181"
morgan "^1.9.1"
multer "^1.4.2"
passport "^0.4.0"
@@ -1947,10 +1947,10 @@ babel-preset-jest@^26.6.2:
babel-plugin-jest-hoist "^26.6.2"
babel-preset-current-node-syntax "^1.0.0"
babel-preset-medusa-package@1.1.19-dev-1639132284143:
version "1.1.19-dev-1639132284143"
resolved "http://localhost:4873/babel-preset-medusa-package/-/babel-preset-medusa-package-1.1.19-dev-1639132284143.tgz#a98da041ddda18db99244ae79bf415c1c674f302"
integrity sha512-o5za+lj+zXs4j7gCA3s3fYvvyiPqHiOOlsahEuXqi7FXwu3CUm1+SInxroG1U1kKeu3GbRaBzS+BFQ+xjg/K4w==
babel-preset-medusa-package@1.1.19-dev-1641824815181:
version "1.1.19-dev-1641824815181"
resolved "http://localhost:4873/babel-preset-medusa-package/-/babel-preset-medusa-package-1.1.19-dev-1641824815181.tgz#7bd1f3c9098304f44ec2375b834699bc7af24281"
integrity sha512-n7IhbnTBB7ZuLalchSTTQJGrQJijwj+exgk4qff3ZPT+HYpbOJOtDjgbzCpLfvKxrkXZB2L0dU49ssvshPdMzg==
dependencies:
"@babel/plugin-proposal-class-properties" "^7.12.1"
"@babel/plugin-proposal-decorators" "^7.12.1"
@@ -5135,25 +5135,25 @@ media-typer@0.3.0:
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
medusa-core-utils@1.1.31-dev-1639132284143:
version "1.1.31-dev-1639132284143"
resolved "http://localhost:4873/medusa-core-utils/-/medusa-core-utils-1.1.31-dev-1639132284143.tgz#c0085cf2ec65ca9cc7500d02b1f61f8e86e95bec"
integrity sha512-l5+3ozll9BMwmPDpQlv4zqdlXnQbiy6iW5XQkykRoNiF6pGeq12ZVCoBop4TE9GKYck6UmRBbVF/kawq6nptoQ==
medusa-core-utils@1.1.31-dev-1641824815181:
version "1.1.31-dev-1641824815181"
resolved "http://localhost:4873/medusa-core-utils/-/medusa-core-utils-1.1.31-dev-1641824815181.tgz#40510df0144690a838b683a68b8e0c07404d1ee2"
integrity sha512-SedEB/rafahrsIDzXu2/Dy8nB+3DYcqbo0hzrcirrT+UouqbuaPYkXfjB1N76YwD1rC1c3p4JmBizK7Mwj84KA==
dependencies:
joi "^17.3.0"
joi-objectid "^3.0.1"
medusa-interfaces@1.1.32-dev-1639132284143:
version "1.1.32-dev-1639132284143"
resolved "http://localhost:4873/medusa-interfaces/-/medusa-interfaces-1.1.32-dev-1639132284143.tgz#a220cba78f2f9a25f711c968893a53c4ad1da0ae"
integrity sha512-/AMaqvbTVaTlAFZ48lSpBREG2s3mjFzPb3B4pr2R3x1fRfEYxMuTNXoUbFX8ubrIlKMwpB61Efon9tXouE5Cog==
medusa-interfaces@1.1.32-dev-1641824815181:
version "1.1.32-dev-1641824815181"
resolved "http://localhost:4873/medusa-interfaces/-/medusa-interfaces-1.1.32-dev-1641824815181.tgz#ec5a22fb653690256371225b08e7e12de914ff27"
integrity sha512-1W5BQLOTKaIWkkOq6g5rpNcm1pAp09SpUvDtLKpy41UignIyJp8zY7FnzCqdraSe1q/CoMptNclso6I4OABQ2w==
dependencies:
medusa-core-utils "1.1.31-dev-1639132284143"
medusa-core-utils "1.1.31-dev-1641824815181"
medusa-telemetry@0.0.11-dev-1639132284143:
version "0.0.11-dev-1639132284143"
resolved "http://localhost:4873/medusa-telemetry/-/medusa-telemetry-0.0.11-dev-1639132284143.tgz#39e32d1ef44aa1ec6a7007c27ed8a52d8786193b"
integrity sha512-6grC1gkKskrvtlHXrWBobZKsKnjJBSB94JzY7U3Sv9pD1FG3rY/100u4qixkIve9ileICzYSFLS6KcTXbDG31A==
medusa-telemetry@0.0.11-dev-1641824815181:
version "0.0.11-dev-1641824815181"
resolved "http://localhost:4873/medusa-telemetry/-/medusa-telemetry-0.0.11-dev-1641824815181.tgz#d49db51f90f16544379b2e6470821592f8b24ee4"
integrity sha512-xEVGR/OKw44xDnc1uHWm48edX+QPCiowmp+aLaHaWKontAT/C0jn9k2tFK85ObScqy0FshJPluQg2RedALjLOg==
dependencies:
axios "^0.21.1"
axios-retry "^3.1.9"
@@ -5165,13 +5165,13 @@ medusa-telemetry@0.0.11-dev-1639132284143:
remove-trailing-slash "^0.1.1"
uuid "^8.3.2"
medusa-test-utils@1.1.34-dev-1639132284143:
version "1.1.34-dev-1639132284143"
resolved "http://localhost:4873/medusa-test-utils/-/medusa-test-utils-1.1.34-dev-1639132284143.tgz#8495b6e3e86ce9cf23074ce46dea06b357b3d1eb"
integrity sha512-pstRNkau48cJodUBRSbXoW/gzbOsUXaFW+grBPNzgnSD0ap7KKSM0jBGfPFgFCnBpnu5m7MBtYZBu3Ajp/8Enw==
medusa-test-utils@1.1.35-dev-1641824815181:
version "1.1.35-dev-1641824815181"
resolved "http://localhost:4873/medusa-test-utils/-/medusa-test-utils-1.1.35-dev-1641824815181.tgz#5cf0e45f534a5532acf11d6094d0291850379875"
integrity sha512-1vTZ4D20qPEuh8LX4+wMdOfZd4pilRCE4wBehhJvyqLX5r7z+xmgVwz/EJC4VGCbk+keNXardVwb+leFYLywug==
dependencies:
"@babel/plugin-transform-classes" "^7.9.5"
medusa-core-utils "1.1.31-dev-1639132284143"
medusa-core-utils "1.1.31-dev-1641824815181"
randomatic "^3.1.1"
merge-descriptors@1.0.1:

View File

@@ -20,11 +20,13 @@ const ignoreDirs = [].concat(
const coverageDirs = pkgs.map((p) => path.join(p, `src/**/*.js`))
const useCoverage = !!process.env.GENERATE_JEST_REPORT
const projects = pkgs.map((pkg) => pkg.concat("/jest.config.js"))
module.exports = {
notify: true,
verbose: true,
roots: pkgs,
roots: ["<rootDir>"],
projects: ["<rootDir>/packages/*/jest.config.js"],
modulePathIgnorePatterns: ignoreDirs,
coveragePathIgnorePatterns: ignoreDirs,
testPathIgnorePatterns: [
@@ -33,9 +35,6 @@ module.exports = {
`<rootDir>/node_modules/`,
`__tests__/fixtures`,
],
transform: {
"^.+\\.[jt]s?$": `<rootDir>/jest-transformer.js`,
},
//moduleNameMapper: {
// "^highlight.js$": `<rootDir>/node_modules/highlight.js/lib/index.js`,
//},
@@ -46,7 +45,5 @@ module.exports = {
// useCoverage ? `jest-junit` : []
// )
// : [`default`].concat(useCoverage ? `jest-junit` : []),
testEnvironment: `node`,
moduleFileExtensions: [`js`, `jsx`, `ts`, `tsx`, `json`],
// setupFiles: [`<rootDir>/.jestSetup.js`],
}

View File

@@ -1,5 +1,6 @@
{
"npmClient": "yarn",
"useWorkspaces": true,
"packages": [
"packages/*"
],

View File

@@ -1,6 +1,15 @@
{
"name": "root",
"private": true,
"workspaces": {
"packages": [
"packages/*"
],
"nohoist": [
"**/tsdx",
"**/tsdx/**"
]
},
"devDependencies": {
"@babel/core": "^7.12.7",
"@babel/eslint-parser": "^7.15.8",
@@ -35,7 +44,7 @@
"pg-god": "^1.0.11",
"prettier": "^2.1.1",
"resolve-cwd": "^3.0.0",
"ts-jest": "^27.1.1",
"ts-jest": "^26.5.6",
"typeorm": "^0.2.31"
},
"lint-staged": {
@@ -47,6 +56,7 @@
"hooks:uninstall": "husky uninstall",
"publish:next": "lerna publish --canary --preid next --dist-tag next",
"bootstrap": "lerna bootstrap",
"build": "lerna run build",
"lint": "eslint --ext .js,.jsx,.ts,.tsx .",
"jest": "jest",
"test": "jest",
@@ -59,5 +69,8 @@
"import-from": "^3.0.0",
"oas-normalize": "^5.0.1",
"swagger-inline": "^3.2.2"
},
"resolutions": {
"**/tsdx/typescript": "^4.5.0"
}
}

View File

@@ -22,14 +22,14 @@ export const createClient = (
options: MedusaPluginOptions,
reporter: Reporter
): any => {
const { storeUrl, authToken } = options
const { storeUrl, authToken } = options as any
/**
*
* @param {string} date used fetch products updated since the specified date
* @param {string} _date used fetch products updated since the specified date
* @return {Promise<any[]>}
*/
async function products(date?: string): Promise<any[]> {
async function products(_date?: string): Promise<any[]> {
let products: any[] = []
let offset = 0
let count = 1
@@ -56,7 +56,7 @@ export const createClient = (
* @param {string} date used fetch regions updated since the specified date
* @return {Promise<any[]>}
*/
async function regions(date?: string): Promise<any[]> {
async function regions(_date?: string): Promise<any[]> {
const regions = await medusaRequest(storeUrl, `/store/regions`)
.then(({ data }) => {
return data.regions
@@ -72,10 +72,10 @@ export const createClient = (
/**
*
* @param {string} date used fetch regions updated since the specified date
* @param {string} _date used fetch regions updated since the specified date
* @return {Promise<any[]>}
*/
async function orders(date?: string): Promise<any[]> {
async function orders(_date?: string): Promise<any[]> {
const orders = await medusaRequest(storeUrl, `/admin/orders`, {
Authorization: `Bearer ${authToken}`,
})
@@ -94,10 +94,10 @@ export const createClient = (
/**
*
* @param {string} date used fetch regions updated since the specified date
* @param {string} _date used fetch regions updated since the specified date
* @return {Promise<any[]>}
*/
async function collections(date?: string): Promise<any[]> {
async function collections(_date?: string): Promise<any[]> {
let collections: any[] = []
let offset = 0
let count = 1

View File

@@ -54,7 +54,7 @@ const medusaNodeTypes = [
"MedusaCollections",
]
async function sourceUpdatedNodes(
export async function sourceUpdatedNodes(
gatsbyApi: SourceNodesArgs,
pluginOptions: MedusaPluginOptions
): Promise<void> {

View File

@@ -4,9 +4,7 @@
"description": "Client for Medusa Commerce Rest API",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"files": [
"dist/**/*"
],
"files": ["dist/**/*"],
"scripts": {
"build": "tsc --build",
"test": "jest --config jestconfig.json",
@@ -18,6 +16,7 @@
"@medusajs/medusa": "^1.1.62",
"axios": "^0.24.0",
"form-data": "^4.0.0",
"qs": "^6.10.3",
"retry-axios": "^2.6.0"
},
"repository": {

View File

@@ -6,6 +6,7 @@ import {
AdminCollectionsListRes,
AdminGetCollectionsParams,
} from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../../typings"
import BaseResource from "../base"
@@ -67,11 +68,8 @@ class AdminCollectionsResource extends BaseResource {
let path = `/admin/collections`
if (query) {
const queryString = Object.entries(query).map(([key, value]) => {
return `${key}=${value}`
})
path = `/admin/collections?${queryString.join("&")}`
const queryString = qs.stringify(query)
path = `/admin/collections?${queryString}`
}
return this.client.request("GET", path)

View File

@@ -5,6 +5,7 @@ import {
AdminPostCustomersReq,
AdminPostCustomersCustomerReq,
} from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../.."
import BaseResource from "../base"
@@ -50,11 +51,8 @@ class AdminCustomersResource extends BaseResource {
let path = `/admin/customers`
if (query) {
const queryString = Object.entries(query).map(([key, value]) => {
return `${key}=${value}`
})
path = `/admin/customers?${queryString.join("&")}`
const queryString = qs.stringify(query)
path = `/admin/customers?${queryString}`
}
return this.client.request("GET", path)

View File

@@ -7,6 +7,7 @@ import {
AdminPostDiscountsDiscountReq,
AdminPostDiscountsReq,
} from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../../typings"
import BaseResource from "../base"
@@ -104,11 +105,8 @@ class AdminDiscountsResource extends BaseResource {
let path = `/admin/discounts`
if (query) {
const queryString = Object.entries(query).map(([key, value]) => {
return `${key}=${value}`
})
path = `/admin/discounts?${queryString.join("&")}`
const queryString = qs.stringify(query)
path = `/admin/discounts?${queryString}`
}
return this.client.request("GET", path)

View File

@@ -8,6 +8,7 @@ import {
AdminPostDraftOrdersDraftOrderRegisterPaymentRes,
AdminPostDraftOrdersDraftOrderReq,
} from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../../typings"
import BaseResource from "../base"
@@ -69,11 +70,8 @@ class AdminDraftOrdersResource extends BaseResource {
let path = `/admin/draft-orders`
if (query) {
const queryString = Object.entries(query).map(([key, value]) => {
return `${key}=${value}`
})
path = `/admin/draft-orders?${queryString.join("&")}`
const queryString = qs.stringify(query)
path = `/admin/draft-orders?${queryString}`
}
return this.client.request("GET", path)

View File

@@ -6,6 +6,7 @@ import {
AdminPostGiftCardsGiftCardReq,
AdminPostGiftCardsReq,
} from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../../typings"
import BaseResource from "../base"
@@ -54,11 +55,8 @@ class AdminGiftCardsResource extends BaseResource {
let path = `/admin/gift-cards/`
if (query) {
const queryString = Object.entries(query).map(([key, value]) => {
return `${key}=${value}`
})
path = `/admin/gift-cards?${queryString.join("&")}`
const queryString = qs.stringify(query)
path = `/admin/gift-cards?${queryString}`
}
return this.client.request("GET", path)

View File

@@ -6,6 +6,7 @@ import {
AdminPostNotesNoteReq,
AdminPostNotesReq,
} from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../../typings"
import BaseResource from "../base"
@@ -37,11 +38,8 @@ class AdminNotesResource extends BaseResource {
let path = `/admin/notes/`
if (query) {
const queryString = Object.entries(query).map(([key, value]) => {
return `${key}=${value}`
})
path = `/admin/notes?${queryString.join("&")}`
const queryString = qs.stringify(query)
path = `/admin/notes?${queryString}`
}
return this.client.request("GET", path)

View File

@@ -4,6 +4,7 @@ import {
AdminNotificationsRes,
AdminPostNotificationsNotificationResendReq,
} from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../.."
import BaseResource from "../base"
@@ -14,11 +15,8 @@ class AdminNotificationsResource extends BaseResource {
let path = `/admin/notifications`
if (query) {
const queryString = Object.entries(query).map(([key, value]) => {
return `${key}=${value}`
})
path = `/admin/notifications?${queryString.join("&")}`
const queryString = qs.stringify(query)
path = `/admin/notifications?${queryString}`
}
return this.client.request("GET", path)

View File

@@ -18,6 +18,7 @@ import {
AdminPostOrdersOrderClaimsClaimShipmentsReq,
AdminPostOrdersOrderClaimsClaimReq,
} from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../../typings"
import BaseResource from "../base"
@@ -44,10 +45,8 @@ class AdminOrdersResource extends BaseResource {
let path = `/admin/orders`
if (query) {
const queryString = Object.entries(query).map(([key, value]) => {
return typeof value !== "undefined" ? `${key}=${value}` : ""
})
path = `/admin/orders?${queryString.join("&")}`
const queryString = qs.stringify(query)
path = `/admin/orders?${queryString}`
}
return this.client.request("GET", path)

View File

@@ -13,8 +13,9 @@ import {
AdminProductsListRes,
AdminProductsListTagsRes,
AdminProductsListTypesRes,
AdminProductsRes
AdminProductsRes,
} from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../../typings"
import BaseResource from "../base"
@@ -46,10 +47,8 @@ class AdminProductsResource extends BaseResource {
let path = `/admin/products`
if (query) {
const queryString = Object.entries(query).map(([key, value]) => {
return typeof value !== "undefined" ? `${key}=${value}` : ""
})
path = `/admin/products?${queryString.join("&")}`
const queryString = qs.stringify(query)
path = `/admin/products?${queryString}`
}
return this.client.request("GET", path)

View File

@@ -11,6 +11,7 @@ import {
AdminPostRegionsRegionMetadata,
AdminGetRegionsRegionFulfillmentOptionsRes,
} from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../../typings"
import BaseResource from "../base"
@@ -68,10 +69,8 @@ class AdminRegionsResource extends BaseResource {
let path = `/admin/regions`
if (query) {
const queryString = Object.entries(query).map(([key, value]) => {
return typeof value !== "undefined" ? `${key}=${value}` : ""
})
path = `/admin/regions?${queryString.join("&")}`
const queryString = qs.stringify(query)
path = `/admin/regions?${queryString}`
}
return this.client.request("GET", path)

View File

@@ -4,6 +4,7 @@ import {
AdminReturnsListRes,
AdminReturnsRes,
} from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../../typings"
import BaseResource from "../base"
@@ -37,10 +38,8 @@ class AdminReturnsResource extends BaseResource {
let path = `/admin/returns/`
if (query) {
const queryString = Object.entries(query).map(([key, value]) => {
return typeof value !== "undefined" ? `${key}=${value}` : ""
})
path = `/admin/returns?${queryString.join("&")}`
const queryString = qs.stringify(query)
path = `/admin/returns?${queryString}`
}
return this.client.request("GET", path)

View File

@@ -6,6 +6,7 @@ import {
AdminShippingOptionsListRes,
AdminGetShippingOptionsParams,
} from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../../typings"
import BaseResource from "../base"
@@ -67,10 +68,8 @@ class AdminShippingOptionsResource extends BaseResource {
let path = `/admin/shipping-options`
if (query) {
const queryString = Object.entries(query).map(([key, value]) => {
return typeof value !== "undefined" ? `${key}=${value}` : ""
})
path = `/admin/shipping-options?${queryString.join("&")}`
const queryString = qs.stringify(query)
path = `/admin/shipping-options?${queryString}`
}
return this.client.request("GET", path)

View File

@@ -3,6 +3,7 @@ import {
AdminSwapsListRes,
AdminGetSwapsParams,
} from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../../typings"
import BaseResource from "../base"
@@ -16,11 +17,8 @@ class AdminSwapsResource extends BaseResource {
let path = `/admin/swaps/`
if (query) {
const queryString = Object.entries(query).map(([key, value]) => {
return `${key}=${value}`
})
path = `/admin/swaps?${queryString.join("&")}`
const queryString = qs.stringify(query)
path = `/admin/swaps?${queryString}`
}
return this.client.request("GET", path)

View File

@@ -1,4 +1,5 @@
import { AdminVariantsListRes, AdminGetVariantsParams } from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../.."
import BaseResource from "../base"
@@ -7,11 +8,8 @@ class AdminVariantsResource extends BaseResource {
let path = `/admin/variants`
if (query) {
const queryString = Object.entries(query).map(([key, value]) => {
return `${key}=${value}`
})
path = `/admin/variants?${queryString.join("&")}`
const queryString = qs.stringify(query)
path = `/admin/variants?${queryString}`
}
return this.client.request("GET", path)

View File

@@ -3,6 +3,7 @@ import {
StoreCollectionsListRes,
StoreGetCollectionsParams,
} from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../typings"
import BaseResource from "./base"
@@ -28,11 +29,8 @@ class CollectionsResource extends BaseResource {
let path = `/store/collections`
if (query) {
const queryString = Object.entries(query).map(([key, value]) => {
return `${key}=${value}`
})
path = `/store/collections?${queryString.join("&")}`
const queryString = qs.stringify(query)
path = `/store/collections?${queryString}`
}
return this.client.request("GET", path)

View File

@@ -6,6 +6,7 @@ import {
StorePostCustomersCustomerReq,
StorePostCustomersReq,
} from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../typings"
import AddressesResource from "./addresses"
import BaseResource from "./base"
@@ -56,18 +57,9 @@ class CustomerResource extends BaseResource {
): ResponsePromise<StoreCustomersListOrdersRes> {
let path = `/store/customers/me/orders`
if (params) {
let query: string | undefined
for (const key of Object.keys(params)) {
const query = qs.stringify(params)
if (query) {
query += `&${key}=${params[key]}`
} else {
query = `?${key}=${params[key]}`
}
}
if (query) {
path += query
path += `?${query}`
}
}
return this.client.request("GET", path)

View File

@@ -1,4 +1,5 @@
import { StoreGetOrdersParams, StoreOrdersRes } from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../typings"
import BaseResource from "./base"
@@ -31,15 +32,8 @@ class OrdersResource extends BaseResource {
lookupOrder(payload: StoreGetOrdersParams): ResponsePromise<StoreOrdersRes> {
let path = `/store/orders?`
const queryString = Object.entries(payload).map(([key, value]) => {
let val = value as string
if (Array.isArray(value)) {
val = value.join(",")
}
return `${key}=${encodeURIComponent(val)}`
})
path = `/store/orders?${queryString.join("&")}`
const queryString = qs.stringify(payload)
path = `/store/orders?${queryString}`
return this.client.request("GET", path, payload)
}

View File

@@ -3,6 +3,7 @@ import {
StoreVariantsListRes,
StoreVariantsRes,
} from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../typings"
import BaseResource from "./base"
@@ -23,20 +24,13 @@ class ProductVariantsResource extends BaseResource {
* @return {ResponsePromise<StoreVariantsListRes>}
*/
list(query?: StoreGetVariantsParams): ResponsePromise<StoreVariantsListRes> {
const path = `/store/variants`
const search = Object.entries(query || {}).map(([key, value]) => {
if (Array.isArray(value)) {
return `${key}=${value.join(",")}`
let path = `/store/variants`
if (query) {
const queryString = qs.stringify(query)
path += `?${queryString}`
}
return `${key}=${value}`
})
return this.client.request(
"GET",
`${path}${search.length > 0 && `?${search.join("&")}`}`
)
return this.client.request("GET", path)
}
}

View File

@@ -5,6 +5,7 @@ import {
StoreProductsListRes,
StoreProductsRes,
} from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../typings"
import BaseResource from "./base"
import ProductVariantsResource from "./product-variants"
@@ -43,11 +44,8 @@ class ProductsResource extends BaseResource {
let path = `/store/products`
if (query) {
const queryString = Object.entries(query).map(([key, value]) => {
return `${key}=${value}`
})
path = `/store/products?${queryString.join("&")}`
const queryString = qs.stringify(query)
path = `/store/products?${queryString}`
}
return this.client.request("GET", path)

View File

@@ -2,6 +2,7 @@ import {
StoreGetShippingOptionsParams,
StoreShippingOptionsListRes,
} from "@medusajs/medusa"
import qs from "qs"
import { ResponsePromise } from "../typings"
import BaseResource from "./base"
@@ -11,7 +12,9 @@ class ShippingOptionsResource extends BaseResource {
* @param {string} cart_id
* @return {ResponsePromise<StoreShippingOptionsListRes>}
*/
listCartOptions(cart_id: string): ResponsePromise<StoreShippingOptionsListRes> {
listCartOptions(
cart_id: string
): ResponsePromise<StoreShippingOptionsListRes> {
const path = `/store/shipping-options/${cart_id}`
return this.client.request("GET", path)
}
@@ -26,17 +29,11 @@ class ShippingOptionsResource extends BaseResource {
): ResponsePromise<StoreShippingOptionsListRes> {
let path = `/store/shipping-options`
const queryString = Object.entries(query || {}).map(([key, value]) => {
let val = value
if (Array.isArray(value)) {
val = value.join(",")
if (query) {
const queryString = qs.stringify(query)
path = `/store/shipping-options?${queryString}`
}
return `${key}=${val}`
})
path = `/store/shipping-options?${queryString.join("&")}`
return this.client.request("GET", path)
}
}

View File

@@ -2,32 +2,32 @@
# yarn lockfile v1
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431"
integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789"
integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==
dependencies:
"@babel/highlight" "^7.16.0"
"@babel/highlight" "^7.16.7"
"@babel/compat-data@^7.16.0":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.0.tgz#ea269d7f78deb3a7826c39a4048eecda541ebdaa"
integrity sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==
"@babel/compat-data@^7.16.4":
version "7.16.4"
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.4.tgz#081d6bbc336ec5c2435c6346b2ae1fb98b5ac68e"
integrity sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==
"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.5":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.0.tgz#c4ff44046f5fe310525cc9eb4ef5147f0c5374d4"
integrity sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.7.tgz#db990f931f6d40cb9b87a0dc7d2adc749f1dcbcf"
integrity sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==
dependencies:
"@babel/code-frame" "^7.16.0"
"@babel/generator" "^7.16.0"
"@babel/helper-compilation-targets" "^7.16.0"
"@babel/helper-module-transforms" "^7.16.0"
"@babel/helpers" "^7.16.0"
"@babel/parser" "^7.16.0"
"@babel/template" "^7.16.0"
"@babel/traverse" "^7.16.0"
"@babel/types" "^7.16.0"
"@babel/code-frame" "^7.16.7"
"@babel/generator" "^7.16.7"
"@babel/helper-compilation-targets" "^7.16.7"
"@babel/helper-module-transforms" "^7.16.7"
"@babel/helpers" "^7.16.7"
"@babel/parser" "^7.16.7"
"@babel/template" "^7.16.7"
"@babel/traverse" "^7.16.7"
"@babel/types" "^7.16.7"
convert-source-map "^1.7.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
@@ -35,144 +35,127 @@
semver "^6.3.0"
source-map "^0.5.0"
"@babel/generator@^7.16.0":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.0.tgz#d40f3d1d5075e62d3500bccb67f3daa8a95265b2"
integrity sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==
"@babel/generator@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.7.tgz#b42bf46a3079fa65e1544135f32e7958f048adbb"
integrity sha512-/ST3Sg8MLGY5HVYmrjOgL60ENux/HfO/CsUh7y4MalThufhE/Ff/6EibFDHi4jiDCaWfJKoqbE6oTh21c5hrRg==
dependencies:
"@babel/types" "^7.16.0"
"@babel/types" "^7.16.7"
jsesc "^2.5.1"
source-map "^0.5.0"
"@babel/helper-compilation-targets@^7.16.0":
version "7.16.3"
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz#5b480cd13f68363df6ec4dc8ac8e2da11363cbf0"
integrity sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==
"@babel/helper-compilation-targets@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b"
integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==
dependencies:
"@babel/compat-data" "^7.16.0"
"@babel/helper-validator-option" "^7.14.5"
"@babel/compat-data" "^7.16.4"
"@babel/helper-validator-option" "^7.16.7"
browserslist "^4.17.5"
semver "^6.3.0"
"@babel/helper-function-name@^7.16.0":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481"
integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==
"@babel/helper-environment-visitor@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7"
integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==
dependencies:
"@babel/helper-get-function-arity" "^7.16.0"
"@babel/template" "^7.16.0"
"@babel/types" "^7.16.0"
"@babel/types" "^7.16.7"
"@babel/helper-get-function-arity@^7.16.0":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa"
integrity sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==
"@babel/helper-function-name@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f"
integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==
dependencies:
"@babel/types" "^7.16.0"
"@babel/helper-get-function-arity" "^7.16.7"
"@babel/template" "^7.16.7"
"@babel/types" "^7.16.7"
"@babel/helper-hoist-variables@^7.16.0":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz#4c9023c2f1def7e28ff46fc1dbcd36a39beaa81a"
integrity sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==
"@babel/helper-get-function-arity@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419"
integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==
dependencies:
"@babel/types" "^7.16.0"
"@babel/types" "^7.16.7"
"@babel/helper-member-expression-to-functions@^7.16.0":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz#29287040efd197c77636ef75188e81da8bccd5a4"
integrity sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==
"@babel/helper-hoist-variables@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246"
integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==
dependencies:
"@babel/types" "^7.16.0"
"@babel/types" "^7.16.7"
"@babel/helper-module-imports@^7.16.0":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3"
integrity sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==
"@babel/helper-module-imports@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437"
integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==
dependencies:
"@babel/types" "^7.16.0"
"@babel/types" "^7.16.7"
"@babel/helper-module-transforms@^7.16.0":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz#1c82a8dd4cb34577502ebd2909699b194c3e9bb5"
integrity sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==
"@babel/helper-module-transforms@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41"
integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==
dependencies:
"@babel/helper-module-imports" "^7.16.0"
"@babel/helper-replace-supers" "^7.16.0"
"@babel/helper-simple-access" "^7.16.0"
"@babel/helper-split-export-declaration" "^7.16.0"
"@babel/helper-validator-identifier" "^7.15.7"
"@babel/template" "^7.16.0"
"@babel/traverse" "^7.16.0"
"@babel/types" "^7.16.0"
"@babel/helper-optimise-call-expression@^7.16.0":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz#cecdb145d70c54096b1564f8e9f10cd7d193b338"
integrity sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==
dependencies:
"@babel/types" "^7.16.0"
"@babel/helper-environment-visitor" "^7.16.7"
"@babel/helper-module-imports" "^7.16.7"
"@babel/helper-simple-access" "^7.16.7"
"@babel/helper-split-export-declaration" "^7.16.7"
"@babel/helper-validator-identifier" "^7.16.7"
"@babel/template" "^7.16.7"
"@babel/traverse" "^7.16.7"
"@babel/types" "^7.16.7"
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9"
integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5"
integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==
"@babel/helper-replace-supers@^7.16.0":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz#73055e8d3cf9bcba8ddb55cad93fedc860f68f17"
integrity sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==
"@babel/helper-simple-access@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7"
integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==
dependencies:
"@babel/helper-member-expression-to-functions" "^7.16.0"
"@babel/helper-optimise-call-expression" "^7.16.0"
"@babel/traverse" "^7.16.0"
"@babel/types" "^7.16.0"
"@babel/types" "^7.16.7"
"@babel/helper-simple-access@^7.16.0":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz#21d6a27620e383e37534cf6c10bba019a6f90517"
integrity sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==
"@babel/helper-split-export-declaration@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b"
integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==
dependencies:
"@babel/types" "^7.16.0"
"@babel/types" "^7.16.7"
"@babel/helper-split-export-declaration@^7.16.0":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz#29672f43663e936df370aaeb22beddb3baec7438"
integrity sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==
"@babel/helper-validator-identifier@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad"
integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==
"@babel/helper-validator-option@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23"
integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==
"@babel/helpers@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc"
integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==
dependencies:
"@babel/types" "^7.16.0"
"@babel/template" "^7.16.7"
"@babel/traverse" "^7.16.7"
"@babel/types" "^7.16.7"
"@babel/helper-validator-identifier@^7.15.7":
version "7.15.7"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389"
integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==
"@babel/helper-validator-option@^7.14.5":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3"
integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==
"@babel/helpers@^7.16.0":
version "7.16.3"
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.3.tgz#27fc64f40b996e7074dc73128c3e5c3e7f55c43c"
integrity sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==
"@babel/highlight@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.7.tgz#81a01d7d675046f0d96f82450d9d9578bdfd6b0b"
integrity sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==
dependencies:
"@babel/template" "^7.16.0"
"@babel/traverse" "^7.16.3"
"@babel/types" "^7.16.0"
"@babel/highlight@^7.16.0":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a"
integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==
dependencies:
"@babel/helper-validator-identifier" "^7.15.7"
"@babel/helper-validator-identifier" "^7.16.7"
chalk "^2.0.0"
js-tokens "^4.0.0"
"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.0", "@babel/parser@^7.16.3":
version "7.16.3"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.3.tgz#271bafcb811080905a119222edbc17909c82261d"
integrity sha512-dcNwU1O4sx57ClvLBVFbEgx0UZWfd0JQX5X6fxFRCLHelFBGXFfSz6Y0FAq2PEwUqlqLkdVjVr4VASEOuUnLJw==
"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.7.tgz#d372dda9c89fcec340a82630a9f533f2fe15877e"
integrity sha512-sR4eaSrnM7BV7QPzGfEX5paG/6wrZM3I0HDzfIAK06ESvo9oy3xBuVBxE3MbQaKNhvg8g/ixjMWo2CGpzpHsDA==
"@babel/plugin-syntax-async-generators@^7.8.4":
version "7.8.4"
@@ -258,36 +241,37 @@
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
"@babel/template@^7.16.0", "@babel/template@^7.3.3":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6"
integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==
"@babel/template@^7.16.7", "@babel/template@^7.3.3":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155"
integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==
dependencies:
"@babel/code-frame" "^7.16.0"
"@babel/parser" "^7.16.0"
"@babel/types" "^7.16.0"
"@babel/code-frame" "^7.16.7"
"@babel/parser" "^7.16.7"
"@babel/types" "^7.16.7"
"@babel/traverse@^7.1.0", "@babel/traverse@^7.16.0", "@babel/traverse@^7.16.3":
version "7.16.3"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.3.tgz#f63e8a938cc1b780f66d9ed3c54f532ca2d14787"
integrity sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==
"@babel/traverse@^7.1.0", "@babel/traverse@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.7.tgz#dac01236a72c2560073658dd1a285fe4e0865d76"
integrity sha512-8KWJPIb8c2VvY8AJrydh6+fVRo2ODx1wYBU2398xJVq0JomuLBZmVQzLPBblJgHIGYG4znCpUZUZ0Pt2vdmVYQ==
dependencies:
"@babel/code-frame" "^7.16.0"
"@babel/generator" "^7.16.0"
"@babel/helper-function-name" "^7.16.0"
"@babel/helper-hoist-variables" "^7.16.0"
"@babel/helper-split-export-declaration" "^7.16.0"
"@babel/parser" "^7.16.3"
"@babel/types" "^7.16.0"
"@babel/code-frame" "^7.16.7"
"@babel/generator" "^7.16.7"
"@babel/helper-environment-visitor" "^7.16.7"
"@babel/helper-function-name" "^7.16.7"
"@babel/helper-hoist-variables" "^7.16.7"
"@babel/helper-split-export-declaration" "^7.16.7"
"@babel/parser" "^7.16.7"
"@babel/types" "^7.16.7"
debug "^4.1.0"
globals "^11.1.0"
"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba"
integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==
"@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.7.tgz#4ed19d51f840ed4bd5645be6ce40775fecf03159"
integrity sha512-E8HuV7FO9qLpx6OtoGfUQ2cjIYnbFwvZWYBS+87EwtdMvmUPJSwykpovFB+8insbpF0uJcpr8KMUi64XZntZcg==
dependencies:
"@babel/helper-validator-identifier" "^7.15.7"
"@babel/helper-validator-identifier" "^7.16.7"
to-fast-properties "^2.0.0"
"@bcoe/v8-coverage@^0.2.3":
@@ -303,14 +287,14 @@
exec-sh "^0.3.2"
minimist "^1.2.0"
"@eslint/eslintrc@^1.0.4":
version "1.0.4"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.0.4.tgz#dfe0ff7ba270848d10c5add0715e04964c034b31"
integrity sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==
"@eslint/eslintrc@^1.0.5":
version "1.0.5"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.0.5.tgz#33f1b838dbf1f923bfa517e008362b78ddbbf318"
integrity sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==
dependencies:
ajv "^6.12.4"
debug "^4.3.2"
espree "^9.0.0"
espree "^9.2.0"
globals "^13.9.0"
ignore "^4.0.6"
import-fresh "^3.2.1"
@@ -318,16 +302,16 @@
minimatch "^3.0.4"
strip-json-comments "^3.1.1"
"@humanwhocodes/config-array@^0.6.0":
version "0.6.0"
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.6.0.tgz#b5621fdb3b32309d2d16575456cbc277fa8f021a"
integrity sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==
"@humanwhocodes/config-array@^0.9.2":
version "0.9.2"
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.2.tgz#68be55c737023009dfc5fe245d51181bb6476914"
integrity sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==
dependencies:
"@humanwhocodes/object-schema" "^1.2.0"
"@humanwhocodes/object-schema" "^1.2.1"
debug "^4.1.1"
minimatch "^3.0.4"
"@humanwhocodes/object-schema@^1.2.0":
"@humanwhocodes/object-schema@^1.2.1":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
@@ -539,9 +523,9 @@
integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7":
version "7.1.16"
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.16.tgz#bc12c74b7d65e82d29876b5d0baf5c625ac58702"
integrity sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==
version "7.1.18"
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8"
integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==
dependencies:
"@babel/parser" "^7.1.0"
"@babel/types" "^7.0.0"
@@ -550,9 +534,9 @@
"@types/babel__traverse" "*"
"@types/babel__generator@*":
version "7.6.3"
resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.3.tgz#f456b4b2ce79137f768aa130d2423d2f0ccfaba5"
integrity sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==
version "7.6.4"
resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7"
integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==
dependencies:
"@babel/types" "^7.0.0"
@@ -579,9 +563,9 @@
"@types/node" "*"
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
version "2.0.3"
resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762"
integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==
version "2.0.4"
resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44"
integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==
"@types/istanbul-lib-report@*":
version "3.0.0"
@@ -606,9 +590,9 @@
pretty-format "^26.0.0"
"@types/node@*":
version "16.11.7"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.7.tgz#36820945061326978c42a01e56b61cd223dfdc42"
integrity sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==
version "17.0.8"
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.8.tgz#50d680c8a8a78fe30abe6906453b21ad8ab0ad7b"
integrity sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==
"@types/normalize-package-data@^2.4.0":
version "2.4.1"
@@ -616,9 +600,9 @@
integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==
"@types/prettier@^2.0.0":
version "2.4.1"
resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.1.tgz#e1303048d5389563e130f5bdd89d37a99acb75eb"
integrity sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==
version "2.4.2"
resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.2.tgz#4c62fae93eb479660c3bd93f9d24d561597a8281"
integrity sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==
"@types/stack-utils@^2.0.0":
version "2.0.1"
@@ -665,10 +649,10 @@ acorn@^7.1.1:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
acorn@^8.2.4, acorn@^8.5.0:
version "8.5.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2"
integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==
acorn@^8.2.4, acorn@^8.7.0:
version "8.7.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==
agent-base@6:
version "6.0.2"
@@ -904,12 +888,12 @@ browser-process-hrtime@^1.0.0:
integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
browserslist@^4.17.5:
version "4.17.6"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.6.tgz#c76be33e7786b497f66cad25a73756c8b938985d"
integrity sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==
version "4.19.1"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3"
integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==
dependencies:
caniuse-lite "^1.0.30001274"
electron-to-chromium "^1.3.886"
caniuse-lite "^1.0.30001286"
electron-to-chromium "^1.4.17"
escalade "^3.1.1"
node-releases "^2.0.1"
picocolors "^1.0.0"
@@ -952,14 +936,14 @@ camelcase@^5.0.0, camelcase@^5.3.1:
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
camelcase@^6.0.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
version "6.3.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
caniuse-lite@^1.0.30001274:
version "1.0.30001280"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001280.tgz#066a506046ba4be34cde5f74a08db7a396718fb7"
integrity sha512-kFXwYvHe5rix25uwueBxC569o53J6TpnGu0BEEn+6Lhl2vsnAumRFWEBhDft1fwyo6m1r4i+RqA4+163FpeFcA==
caniuse-lite@^1.0.30001286:
version "1.0.30001298"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001298.tgz#0e690039f62e91c3ea581673d716890512e7ec52"
integrity sha512-AcKqikjMLlvghZL/vfTHorlQsLDhGRalYf1+GmWCf5SCMziSGjRYQW/JEksj14NaYHIR6KIhrFAy0HV5C25UzQ==
capture-exit@^2.0.0:
version "2.0.0"
@@ -1144,9 +1128,9 @@ data-urls@^2.0.0:
whatwg-url "^8.0.0"
debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2:
version "4.3.2"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
version "4.3.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
dependencies:
ms "2.1.2"
@@ -1233,10 +1217,10 @@ domexception@^2.0.1:
dependencies:
webidl-conversions "^5.0.0"
electron-to-chromium@^1.3.886:
version "1.3.895"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.895.tgz#9b0f8f2e32d8283bbb200156fd5d8dfd775f31ed"
integrity sha512-9Ww3fB8CWctjqHwkOt7DQbMZMpal2x2reod+/lU4b9axO1XJEDUpPMBxs7YnjLhhqpKXIIB5SRYN/B4K0QpvyQ==
electron-to-chromium@^1.4.17:
version "1.4.38"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.38.tgz#10ea58d73d36b13e78d5024f3b74a352d3958d01"
integrity sha512-WhHt3sZazKj0KK/UpgsbGQnUUoFeAHVishzHFExMxagpZgjiGYSC9S0ZlbhCfSH2L2i+2A1yyqOIliTctMx7KQ==
emittery@^0.7.1:
version "0.7.2"
@@ -1301,10 +1285,10 @@ escodegen@^2.0.0:
optionalDependencies:
source-map "~0.6.1"
eslint-scope@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-6.0.0.tgz#9cf45b13c5ac8f3d4c50f46a5121f61b3e318978"
integrity sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==
eslint-scope@^7.1.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.0.tgz#c1f6ea30ac583031f203d65c73e723b01298f153"
integrity sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==
dependencies:
esrecurse "^4.3.0"
estraverse "^5.2.0"
@@ -1321,18 +1305,18 @@ eslint-visitor-keys@^2.0.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
eslint-visitor-keys@^3.0.0:
eslint-visitor-keys@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz#eee4acea891814cda67a7d8812d9647dd0179af2"
integrity sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==
eslint@^8.2.0:
version "8.2.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.2.0.tgz#44d3fb506d0f866a506d97a0fc0e90ee6d06a815"
integrity sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw==
version "8.6.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.6.0.tgz#4318c6a31c5584838c1a2e940c478190f58d558e"
integrity sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==
dependencies:
"@eslint/eslintrc" "^1.0.4"
"@humanwhocodes/config-array" "^0.6.0"
"@eslint/eslintrc" "^1.0.5"
"@humanwhocodes/config-array" "^0.9.2"
ajv "^6.10.0"
chalk "^4.0.0"
cross-spawn "^7.0.2"
@@ -1340,10 +1324,10 @@ eslint@^8.2.0:
doctrine "^3.0.0"
enquirer "^2.3.5"
escape-string-regexp "^4.0.0"
eslint-scope "^6.0.0"
eslint-scope "^7.1.0"
eslint-utils "^3.0.0"
eslint-visitor-keys "^3.0.0"
espree "^9.0.0"
eslint-visitor-keys "^3.1.0"
espree "^9.3.0"
esquery "^1.4.0"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
@@ -1370,14 +1354,14 @@ eslint@^8.2.0:
text-table "^0.2.0"
v8-compile-cache "^2.0.3"
espree@^9.0.0:
version "9.0.0"
resolved "https://registry.yarnpkg.com/espree/-/espree-9.0.0.tgz#e90a2965698228502e771c7a58489b1a9d107090"
integrity sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==
espree@^9.2.0, espree@^9.3.0:
version "9.3.0"
resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.0.tgz#c1240d79183b72aaee6ccfa5a90bc9111df085a8"
integrity sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==
dependencies:
acorn "^8.5.0"
acorn "^8.7.0"
acorn-jsx "^5.3.1"
eslint-visitor-keys "^3.0.0"
eslint-visitor-keys "^3.1.0"
esprima@^4.0.0, esprima@^4.0.1:
version "4.0.1"
@@ -1586,6 +1570,15 @@ form-data@^3.0.0:
combined-stream "^1.0.8"
mime-types "^2.1.12"
form-data@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.8"
mime-types "^2.1.12"
fragment-cache@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
@@ -1679,9 +1672,9 @@ globals@^13.6.0, globals@^13.9.0:
type-fest "^0.20.2"
graceful-fs@^4.2.4:
version "4.2.8"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
version "4.2.9"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
growly@^1.3.0:
version "1.3.0"
@@ -1796,9 +1789,9 @@ import-fresh@^3.0.0, import-fresh@^3.2.1:
resolve-from "^4.0.0"
import-local@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.3.tgz#4d51c2c495ca9393da259ec66b62e022920211e0"
integrity sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==
version "3.1.0"
resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4"
integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==
dependencies:
pkg-dir "^4.2.0"
resolve-cwd "^3.0.0"
@@ -1852,10 +1845,10 @@ is-ci@^2.0.0:
dependencies:
ci-info "^2.0.0"
is-core-module@^2.2.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548"
integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==
is-core-module@^2.8.0:
version "2.8.1"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211"
integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==
dependencies:
has "^1.0.3"
@@ -2048,9 +2041,9 @@ istanbul-lib-source-maps@^4.0.0:
source-map "^0.6.1"
istanbul-reports@^3.0.2:
version "3.0.5"
resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.5.tgz#a2580107e71279ea6d661ddede929ffc6d693384"
integrity sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==
version "3.1.3"
resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.3.tgz#4bcae3103b94518117930d51283690960b50d3c2"
integrity sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg==
dependencies:
html-escaper "^2.0.0"
istanbul-lib-report "^3.0.0"
@@ -2559,9 +2552,9 @@ levn@~0.3.0:
type-check "~0.3.2"
lines-and-columns@^1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
version "1.2.4"
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
locate-path@^5.0.0:
version "5.0.0"
@@ -2724,11 +2717,6 @@ node-int64@^0.4.0:
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=
node-modules-regexp@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
node-notifier@^8.0.0:
version "8.0.2"
resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5"
@@ -2924,7 +2912,7 @@ path-key@^3.0.0, path-key@^3.1.0:
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
path-parse@^1.0.6:
path-parse@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
@@ -2935,16 +2923,14 @@ picocolors@^1.0.0:
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
picomatch@^2.0.4, picomatch@^2.2.3:
version "2.3.0"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
pirates@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87"
integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==
dependencies:
node-modules-regexp "^1.0.0"
version "4.0.4"
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.4.tgz#07df81e61028e402735cdd49db701e4885b4e6e6"
integrity sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==
pkg-dir@^4.2.0:
version "4.2.0"
@@ -2969,9 +2955,9 @@ prelude-ls@~1.1.2:
integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
prettier@^2.2.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c"
integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==
version "2.5.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a"
integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==
pretty-format@^26.0.0, pretty-format@^26.6.2:
version "26.6.2"
@@ -3099,12 +3085,13 @@ resolve-url@^0.2.1:
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
resolve@^1.10.0, resolve@^1.18.1:
version "1.20.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
version "1.21.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f"
integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==
dependencies:
is-core-module "^2.2.0"
path-parse "^1.0.6"
is-core-module "^2.8.0"
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
ret@~0.1.10:
version "0.1.15"
@@ -3229,9 +3216,9 @@ shellwords@^0.1.1:
integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
signal-exit@^3.0.0, signal-exit@^3.0.2:
version "3.0.5"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.5.tgz#9e3e8cc0c75a99472b44321033a7702e7738252f"
integrity sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==
version "3.0.6"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af"
integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==
sisteransi@^1.0.5:
version "1.0.5"
@@ -3285,9 +3272,9 @@ source-map-resolve@^0.5.0:
urix "^0.1.0"
source-map-support@^0.5.6:
version "0.5.20"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9"
integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==
version "0.5.21"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
dependencies:
buffer-from "^1.0.0"
source-map "^0.6.0"
@@ -3334,9 +3321,9 @@ spdx-expression-parse@^3.0.0:
spdx-license-ids "^3.0.0"
spdx-license-ids@^3.0.0:
version "3.0.10"
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz#0d9becccde7003d6c658d487dd48a32f0bf3014b"
integrity sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==
version "3.0.11"
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95"
integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==
split-string@^3.0.1, split-string@^3.0.2:
version "3.1.0"
@@ -3431,6 +3418,11 @@ supports-hyperlinks@^2.0.0:
has-flag "^4.0.0"
supports-color "^7.0.0"
supports-preserve-symlinks-flag@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
symbol-tree@^3.2.4:
version "3.2.4"
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
@@ -3568,9 +3560,9 @@ typedarray-to-buffer@^3.1.5:
is-typedarray "^1.0.0"
typescript@^4.1.3:
version "4.4.4"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c"
integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==
version "4.5.4"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.4.tgz#a17d3a0263bf5c8723b9c52f43c5084edf13c2e8"
integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==
union-value@^1.0.0:
version "1.0.1"
@@ -3740,9 +3732,9 @@ write-file-atomic@^3.0.0:
typedarray-to-buffer "^3.1.5"
ws@^7.4.6:
version "7.5.5"
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881"
integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==
version "7.5.6"
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b"
integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==
xml-name-validator@^3.0.0:
version "3.0.0"

View File

@@ -1,3 +1,6 @@
module.exports = {
testEnvironment: "node",
transform: {
"^.+\\.[jt]s?$": `../../jest-transformer.js`,
},
}

View File

@@ -1,3 +1,6 @@
module.exports = {
testEnvironment: "node",
transform: {
"^.+\\.[jt]s?$": `../../jest-transformer.js`,
},
}

View File

@@ -1,3 +1,6 @@
module.exports = {
testEnvironment: "node",
transform: {
"^.+\\.[jt]s?$": `../../jest-transformer.js`,
},
}

View File

@@ -1,3 +1,6 @@
module.exports = {
testEnvironment: "node",
transform: {
"^.+\\.[jt]s?$": `../../jest-transformer.js`,
},
}

View File

@@ -0,0 +1 @@
src/types.ts

View File

@@ -1,12 +1,12 @@
module.exports = {
"extends": [
extends: [
"react-app",
"prettier/@typescript-eslint",
"plugin:prettier/recommended"
"plugin:prettier/recommended",
],
"settings": {
"react": {
"version": "detect"
}
}
settings: {
react: {
version: "detect",
},
},
}

View File

@@ -0,0 +1,8 @@
{
"endOfLine": "auto",
"semi": false,
"singleQuote": false,
"tabWidth": 2,
"trailingComma": "es5",
"arrowParens": "always"
}

View File

@@ -6,5 +6,8 @@ module.exports = {
isolatedModules: true,
},
},
transform: {
".(ts|tsx)$": require.resolve("ts-jest/dist/"),
},
setupFilesAfterEnv: ["./jest.setup.js"],
}

View File

@@ -556,6 +556,7 @@
"user": {
"id": "admin_user",
"email": "admin@medusa.js",
"role": "admin",
"first_name": null,
"last_name": null,
"api_token": "test_token",
@@ -1050,6 +1051,175 @@
"updated_at": "2021-03-17 12:09:59.156058+01",
"metadata": null,
"parent_return_reason_id": null
},
"product_type": {
"id": "ptype_ZXDBABWJVW6115VEMZXDBAB",
"value": "clothing",
"created_at": "2021-03-16T21:24:35.828Z",
"updated_at": "2021-03-16T21:24:35.828Z",
"deleted_at": null,
"metadata": null
},
"product_tag": {
"id": "ptag_ZXDBABWJVW6115VEMZXDBAB",
"value": "pants",
"created_at": "2021-03-16T21:24:35.828Z",
"updated_at": "2021-03-16T21:24:35.828Z",
"deleted_at": null,
"metadata": null
},
"note": {
"id": "note_01F0ZXDBAB9KVZWJVW6115VEM7",
"value": "customer contacted",
"resource_type": "swap",
"resource_id": "swap_01F0YET86Y9G92D3YDR9Y6V676",
"author_id": "admin_user",
"created_at": "2021-03-17 11:58:56.975971+01",
"updated_at": "2021-03-17 12:09:59.156058+01",
"metadata": null
},
"invite": {
"id": "invite_320ZXDBAB4WJVW6115VEM7",
"user_email": "lebron@james.com",
"role": "admin",
"accepted": true,
"token": "secret_token",
"expires_at": "2021-03-18 11:58:56.975971+01",
"created_at": "2021-03-17 11:58:56.975971+01",
"updated_at": "2021-03-17 12:09:59.156058+01",
"metadata": null
},
"draft_order": {
"id": "dorder_01FGKMYKMJ4E8HP3RGEW28E7CZ",
"status": "open",
"display_id": 1,
"cart_id": "cart_01FGKMYKM9V8FVEJE23Q26FG5B",
"cart": {
"id": "cart_01FGKMYKM9V8FVEJE23Q26FG5B",
"email": "jane@medusa.test",
"billing_address_id": null,
"billing_address": null,
"shipping_address_id": "addr_01FGKMYKKQ3S1Q4ZC9HV4REXC6",
"shipping_address": {
"id": "addr_01FGKMYKKQ3S1Q4ZC9HV4REXC6",
"customer_id": null,
"company": null,
"first_name": "Jane",
"last_name": "Medusan",
"address_1": null,
"address_2": null,
"city": null,
"country_code": "dk",
"province": null,
"postal_code": null,
"phone": null,
"created_at": "2021-09-27T12:51:21.335Z",
"updated_at": "2021-09-27T12:51:21.335Z",
"deleted_at": null,
"metadata": null
},
"items": [
{
"id": "item_01FGKMYKM9AKV5D146N28QFPX7",
"cart_id": "cart_01FGKMYKM9V8FVEJE23Q26FG5B",
"order_id": null,
"swap_id": null,
"claim_order_id": null,
"title": "Basic Tee - One Size",
"description": "Soft and sweet",
"thumbnail": "https://test.js/1234",
"is_giftcard": false,
"should_merge": true,
"allow_discounts": true,
"has_shipping": null,
"unit_price": 8000,
"variant_id": "variant_01FGKMYKJVY3DYDZWCRB2GZS0G",
"variant": {
"id": "variant_01FGKMYKJVY3DYDZWCRB2GZS0G",
"title": "One Size",
"product_id": "prod_01FGKMYKJJMZ6XFN37JBGTZ46G",
"sku": null,
"barcode": null,
"ean": null,
"upc": null,
"inventory_quantity": 1,
"allow_backorder": false,
"manage_inventory": true,
"hs_code": null,
"origin_country": null,
"mid_code": null,
"material": null,
"weight": null,
"length": null,
"height": null,
"width": null,
"created_at": "2021-09-27T12:51:21.307Z",
"updated_at": "2021-09-27T12:51:21.307Z",
"deleted_at": null,
"metadata": null
},
"quantity": 1,
"fulfilled_quantity": 1,
"returned_quantity": null,
"shipped_quantity": null,
"created_at": "2021-09-27T12:51:21.352Z",
"updated_at": "2021-09-27T12:51:21.352Z",
"metadata": null
}
],
"region_id": "reg_01FGKMYKKG6ACZANRNHR3XVRN3",
"region": {
"id": "reg_01FGKMYKKG6ACZANRNHR3XVRN3",
"name": "United States",
"currency_code": "usd",
"tax_rate": "0",
"tax_code": null,
"payment_providers": [
{
"id": "test-pay",
"is_installed": true
}
],
"fulfillment_providers": [],
"created_at": "2021-09-27T12:51:21.328Z",
"updated_at": "2021-09-27T12:51:21.328Z",
"deleted_at": null,
"metadata": null
},
"discounts": [],
"gift_cards": [],
"customer_id": "cus_01FGKMYKM2TAKTGZ1XMEW45RJZ",
"payment_sessions": [],
"payment_id": null,
"payment": null,
"shipping_methods": [],
"type": "draft_order",
"completed_at": null,
"payment_authorized_at": null,
"created_at": "2021-09-27T12:51:21.352Z",
"updated_at": "2021-09-27T12:51:21.352Z",
"deleted_at": null,
"metadata": null,
"idempotency_key": null,
"context": null,
"shipping_total": 0,
"discount_total": 0,
"tax_total": 0,
"gift_card_total": 0,
"subtotal": 8000,
"total": 8000
},
"order_id": null,
"order": null,
"canceled_at": null,
"created_at": "2021-09-27T12:51:21.360Z",
"updated_at": "2021-09-27T12:51:21.360Z",
"no_notification_order": null,
"metadata": null
},
"fulfillment_option": {
"provider_id": "test-ful",
"options": []
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
export * from "./store"
export * from "./admin"

View File

@@ -1,7 +1,7 @@
import { fixtures } from "./data/"
import { fixtures } from "../data"
import { rest } from "msw"
export const handlers = [
export const storeHandlers = [
rest.get("/store/products", (req, res, ctx) => {
const limit = parseInt(req.url.searchParams.get("limit") || "2")
const offset = parseInt(req.url.searchParams.get("offset") || "0")

View File

@@ -1,4 +1,4 @@
import { setupServer } from "msw/node"
import { handlers } from "./handlers"
import { storeHandlers, adminHandlers } from "./handlers"
export const server = setupServer(...handlers)
export const server = setupServer(...[...storeHandlers, ...adminHandlers])

View File

@@ -13,9 +13,9 @@
"scripts": {
"start": "tsdx watch",
"build": "tsdx build",
"prepare": "tsdx build",
"test": "tsdx test --passWithNoTests",
"lint": "tsdx lint",
"prepare": "tsdx build",
"size": "size-limit",
"analyze": "size-limit --why",
"storybook": "start-storybook -p 6006 -s public",
@@ -61,15 +61,12 @@
"@storybook/react": "^6.3.12",
"@testing-library/react": "^12.1.2",
"@testing-library/react-hooks": "^7.0.2",
"@types/jest": "^27.0.3",
"@types/lodash": "^4.14.177",
"@types/react": "^17.0.33",
"@types/react-dom": "^17.0.10",
"@typescript-eslint/eslint-plugin": "^5.4.0",
"@typescript-eslint/parser": "^5.4.0",
"axios": "^0.24.0",
"babel-loader": "^8.2.3",
"eslint-config-react-app": "^6.0.0",
"eslint-plugin-prettier": "3.4.1",
"husky": "^7.0.4",
"msw": "^0.35.0",
"msw-storybook-addon": "^1.5.0",
@@ -90,10 +87,6 @@
"react-query": "^3.31.0"
},
"resolutions": {
"**/@typescript-eslint/eslint-plugin": "^4.11.1",
"**/@typescript-eslint/parser": "^4.11.1",
"**/jest": "^26.6.3",
"**/ts-jest": "^26.4.4",
"**/typescript": "^4.1.3"
},
"msw": {

View File

@@ -6,7 +6,7 @@ import {
useSetPaymentSession,
useUpdateCart,
useCreatePaymentSession,
} from "../hooks/carts"
} from "../hooks/store/"
import { Cart } from "../types"
interface CartState {
@@ -75,7 +75,7 @@ export const CartProvider = ({
const completeCheckout = useCompleteCart(cart?.id)
const totalItems = cart?.items
.map((i) => i.quantity)
.map(i => i.quantity)
.reduce((acc, curr) => acc + curr, 0)
return (

View File

@@ -20,17 +20,23 @@ interface MedusaProviderProps {
baseUrl: string
queryClientProviderProps: QueryClientProviderProps
children: React.ReactNode
apiKey?: string
}
export const MedusaProvider = ({
queryClientProviderProps,
baseUrl,
apiKey,
children,
}: MedusaProviderProps) => {
const medusaClient = new Medusa({ baseUrl, maxRetries: 0 })
const medusaClient = new Medusa({ baseUrl, maxRetries: 0, apiKey })
return (
<QueryClientProvider {...queryClientProviderProps}>
<MedusaContext.Provider value={{ client: medusaClient }}>
<MedusaContext.Provider
value={{
client: medusaClient,
}}
>
{children}
</MedusaContext.Provider>
</QueryClientProvider>

View File

@@ -1,7 +1,7 @@
import React, { useContext, useEffect } from "react"
import { useLocalStorage } from "../hooks/utils"
import { RegionInfo, ProductVariant } from "../types"
import { getVariantPrice } from "../utils"
import { getVariantPrice } from "../helpers"
import { isArray, isEmpty, isObject } from "lodash"
interface Item {
@@ -72,7 +72,7 @@ const reducer = (state: SessionCartState, action: Action) => {
}
case ACTION_TYPES.ADD_ITEM: {
const duplicateVariantIndex = state.items.findIndex(
(item) => item.variant.id === action.payload?.variant?.id
item => item.variant.id === action.payload?.variant?.id
)
if (duplicateVariantIndex !== -1) {
state.items.splice(duplicateVariantIndex, 1)
@@ -81,7 +81,7 @@ const reducer = (state: SessionCartState, action: Action) => {
return generateCartState(state, items)
}
case ACTION_TYPES.UPDATE_ITEM: {
const items = state.items.map((item) =>
const items = state.items.map(item =>
item.variant.id === action.payload.id
? { ...item, ...action.payload.item }
: item
@@ -91,7 +91,7 @@ const reducer = (state: SessionCartState, action: Action) => {
}
case ACTION_TYPES.REMOVE_ITEM: {
const items = state.items.filter(
(item) => item.variant.id !== action.payload.id
item => item.variant.id !== action.payload.id
)
return generateCartState(state, items)
}
@@ -122,7 +122,7 @@ export const generateCartState = (state: SessionCartState, items: Item[]) => {
}
const generateItems = (region: RegionInfo, items: Item[]) => {
return items.map((item) => ({
return items.map(item => ({
...item,
total: getVariantPrice(item.variant, region),
}))
@@ -171,7 +171,7 @@ export const SessionCartProvider = ({
}
const getItem = (id: string) => {
return state.items.find((item) => item.variant.id === id)
return state.items.find(item => item.variant.id === id)
}
const setItems = (items: Item[]) => {

View File

@@ -65,8 +65,7 @@ export const getVariantPrice = (
region: RegionInfo
) => {
let price = variant?.prices?.find(
(p) =>
p.currency_code.toLowerCase() === region?.currency_code?.toLowerCase()
p => p.currency_code.toLowerCase() === region?.currency_code?.toLowerCase()
)
return price?.amount || 0

View File

@@ -0,0 +1,30 @@
import { AdminAuthRes, AdminPostAuthReq } from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
import { adminAuthKeys } from "."
import { useMedusa } from "../../../contexts/medusa"
import { buildOptions } from "../../utils/buildOptions"
export const useAdminLogin = (
options?: UseMutationOptions<Response<AdminAuthRes>, Error, AdminPostAuthReq>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostAuthReq) => client.admin.auth.createSession(payload),
buildOptions(queryClient, adminAuthKeys.details(), options)
)
}
export const useAdminDeleteSession = (
options?: UseMutationOptions<Response<void>, Error, void>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.auth.deleteSession(),
buildOptions(queryClient, adminAuthKeys.details(), options)
)
}

View File

@@ -0,0 +1,28 @@
import { AdminAuthRes } from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useQuery } from "react-query"
import { useMedusa } from "../../../contexts"
import { UseQueryOptionsWrapper } from "../../../types"
import { queryKeysFactory } from "../../utils/index"
const ADMIN_AUTH_QUERY_KEY = `admin_auth` as const
export const adminAuthKeys = queryKeysFactory(ADMIN_AUTH_QUERY_KEY)
type AuthQueryKey = typeof adminAuthKeys
export const useAdminGetSession = (
options?: UseQueryOptionsWrapper<
Response<AdminAuthRes>,
Error,
ReturnType<AuthQueryKey["details"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminAuthKeys.details(),
() => client.admin.auth.getSession(),
options
)
return { ...data, ...rest } as const
}

View File

@@ -0,0 +1,134 @@
import { adminOrderKeys } from "./../orders/queries"
import {
AdminOrdersRes,
AdminPostOrdersOrderClaimsClaimFulfillmentsReq,
AdminPostOrdersOrderClaimsClaimReq,
AdminPostOrdersOrderClaimsClaimShipmentsReq,
AdminPostOrdersOrderClaimsReq,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
import { useMedusa } from "../../../contexts/medusa"
import { buildOptions } from "../../utils/buildOptions"
export const useAdminCreateClaim = (
orderId: string,
options?: UseMutationOptions<
Response<AdminOrdersRes>,
Error,
AdminPostOrdersOrderClaimsReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostOrdersOrderClaimsReq) =>
client.admin.orders.createClaim(orderId, payload),
buildOptions(queryClient, adminOrderKeys.detail(orderId), options)
)
}
export const useAdminUpdateClaim = (
orderId: string,
options?: UseMutationOptions<
Response<AdminOrdersRes>,
Error,
AdminPostOrdersOrderClaimsClaimReq & { claim_id: string }
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
({
claim_id,
...payload
}: AdminPostOrdersOrderClaimsClaimReq & { claim_id: string }) =>
client.admin.orders.updateClaim(orderId, claim_id, payload),
buildOptions(queryClient, adminOrderKeys.detail(orderId), options)
)
}
export const useAdminCancelClaim = (
orderId: string,
options?: UseMutationOptions<Response<AdminOrdersRes>, Error, string>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(claimId: string) => client.admin.orders.cancelClaim(orderId, claimId),
buildOptions(queryClient, adminOrderKeys.detail(orderId), options)
)
}
export const useAdminFulfillClaim = (
orderId: string,
options?: UseMutationOptions<
Response<AdminOrdersRes>,
Error,
AdminPostOrdersOrderClaimsClaimFulfillmentsReq & { claim_id: string }
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
({
claim_id,
...payload
}: AdminPostOrdersOrderClaimsClaimFulfillmentsReq & { claim_id: string }) =>
client.admin.orders.fulfillClaim(orderId, claim_id, payload),
buildOptions(queryClient, adminOrderKeys.detail(orderId), options)
)
}
export const useAdminCancelClaimFulfillment = (
orderId: string,
options?: UseMutationOptions<
Response<AdminOrdersRes>,
Error,
{ claim_id: string; fulfillment_id: string }
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
({
claim_id,
fulfillment_id,
}: {
claim_id: string
fulfillment_id: string
}) =>
client.admin.orders.cancelClaimFulfillment(
orderId,
claim_id,
fulfillment_id
),
buildOptions(queryClient, adminOrderKeys.detail(orderId), options)
)
}
export const useAdminCreateClaimShipment = (
orderId: string,
options?: UseMutationOptions<
Response<AdminOrdersRes>,
Error,
AdminPostOrdersOrderClaimsClaimShipmentsReq & { claim_id: string }
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
({
claim_id,
...payload
}: AdminPostOrdersOrderClaimsClaimShipmentsReq & { claim_id: string }) =>
client.admin.orders.createClaimShipment(orderId, claim_id, payload),
buildOptions(queryClient, adminOrderKeys.detail(orderId), options)
)
}

View File

@@ -0,0 +1,64 @@
import {
AdminCollectionsDeleteRes,
AdminCollectionsRes,
AdminPostCollectionsCollectionReq,
AdminPostCollectionsReq,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
import { adminCollectionKeys } from "."
import { useMedusa } from "../../../contexts/medusa"
import { buildOptions } from "../../utils/buildOptions"
export const useAdminCreateCollection = (
options?: UseMutationOptions<
Response<AdminCollectionsRes>,
Error,
AdminPostCollectionsReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostCollectionsReq) =>
client.admin.collections.create(payload),
buildOptions(queryClient, adminCollectionKeys.lists(), options)
)
}
export const useAdminUpdateCollection = (
id: string,
options?: UseMutationOptions<
Response<AdminCollectionsRes>,
Error,
AdminPostCollectionsCollectionReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostCollectionsCollectionReq) =>
client.admin.collections.update(id, payload),
buildOptions(
queryClient,
[adminCollectionKeys.lists(), adminCollectionKeys.detail(id)],
options
)
)
}
export const useAdminDeleteCollection = (
id: string,
options?: UseMutationOptions<Response<AdminCollectionsDeleteRes>, Error, void>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.collections.delete(id),
buildOptions(
queryClient,
[adminCollectionKeys.lists(), adminCollectionKeys.detail(id)],
options
)
)
}

View File

@@ -0,0 +1,50 @@
import {
AdminCollectionsListRes,
AdminCollectionsRes,
AdminGetCollectionsParams,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useQuery } from "react-query"
import { useMedusa } from "../../../contexts"
import { UseQueryOptionsWrapper } from "../../../types"
import { queryKeysFactory } from "../../utils/index"
const ADMIN_COLLECTIONS_QUERY_KEY = `admin_collections` as const
export const adminCollectionKeys = queryKeysFactory(ADMIN_COLLECTIONS_QUERY_KEY)
type CollectionsQueryKey = typeof adminCollectionKeys
export const useAdminCollections = (
query?: AdminGetCollectionsParams,
options?: UseQueryOptionsWrapper<
Response<AdminCollectionsListRes>,
Error,
ReturnType<CollectionsQueryKey["list"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminCollectionKeys.list(query),
() => client.admin.collections.list(query),
options
)
return { ...data, ...rest } as const
}
export const useAdminCollection = (
id: string,
options?: UseQueryOptionsWrapper<
Response<AdminCollectionsRes>,
Error,
ReturnType<CollectionsQueryKey["detail"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminCollectionKeys.detail(id),
() => client.admin.collections.retrieve(id),
options
)
return { ...data, ...rest } as const
}

View File

@@ -0,0 +1,43 @@
import { adminCustomerKeys } from "./queries"
import { AdminCustomersRes, AdminPostCustomersReq } from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
import { useMedusa } from "../../../contexts/medusa"
import { buildOptions } from "../../utils/buildOptions"
export const useAdminCreateCustomer = (
options?: UseMutationOptions<
Response<AdminCustomersRes>,
Error,
AdminPostCustomersReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostCustomersReq) => client.admin.customers.create(payload),
buildOptions(queryClient, adminCustomerKeys.lists(), options)
)
}
export const useAdminUpdateCustomer = (
id: string,
options?: UseMutationOptions<
Response<AdminCustomersRes>,
Error,
AdminPostCustomersReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostCustomersReq) =>
client.admin.customers.update(id, payload),
buildOptions(
queryClient,
[adminCustomerKeys.lists(), adminCustomerKeys.detail(id)],
options
)
)
}

View File

@@ -0,0 +1,50 @@
import {
AdminCustomersListRes,
AdminCustomersRes,
AdminGetCustomersParams,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useQuery } from "react-query"
import { useMedusa } from "../../../contexts"
import { UseQueryOptionsWrapper } from "../../../types"
import { queryKeysFactory } from "../../utils/index"
const ADMIN_CUSTOMERS_QUERY_KEY = `admin_customers` as const
export const adminCustomerKeys = queryKeysFactory(ADMIN_CUSTOMERS_QUERY_KEY)
type CustomerQueryKeys = typeof adminCustomerKeys
export const useAdminCustomers = (
query?: AdminGetCustomersParams,
options?: UseQueryOptionsWrapper<
Response<AdminCustomersListRes>,
Error,
ReturnType<CustomerQueryKeys["list"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminCustomerKeys.list(query),
() => client.admin.customers.list(query),
options
)
return { ...data, ...rest } as const
}
export const useAdminCustomer = (
id: string,
options?: UseQueryOptionsWrapper<
Response<AdminCustomersRes>,
Error,
ReturnType<CustomerQueryKeys["detail"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminCustomerKeys.detail(id),
() => client.admin.customers.retrieve(id),
options
)
return { ...data, ...rest } as const
}

View File

@@ -0,0 +1,2 @@
export * from "./queries"
export * from "./mutations"

View File

@@ -0,0 +1,143 @@
import { adminDiscountKeys } from "./queries"
import { buildOptions } from "../../utils/buildOptions"
import {
AdminDiscountsDeleteRes,
AdminDiscountsRes,
AdminPostDiscountsDiscountDynamicCodesReq,
AdminPostDiscountsDiscountReq,
AdminPostDiscountsReq,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
import { useMedusa } from "../../../contexts/medusa"
export const useAdminCreateDiscount = (
options?: UseMutationOptions<
Response<AdminDiscountsRes>,
Error,
AdminPostDiscountsReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostDiscountsReq) => client.admin.discounts.create(payload),
buildOptions(queryClient, adminDiscountKeys.lists(), options)
)
}
export const useAdminUpdateDiscount = (
id: string,
options?: UseMutationOptions<
Response<AdminDiscountsRes>,
Error,
AdminPostDiscountsDiscountReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostDiscountsDiscountReq) =>
client.admin.discounts.update(id, payload),
buildOptions(queryClient, adminDiscountKeys.detail(id), options)
)
}
export const useAdminDeleteDiscount = (
id: string,
options?: UseMutationOptions<Response<AdminDiscountsDeleteRes>, Error, void>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.discounts.delete(id),
buildOptions(queryClient, adminDiscountKeys.lists(), options)
)
}
export const useAdminDiscountAddRegion = (
id: string,
options?: UseMutationOptions<Response<AdminDiscountsRes>, Error, string>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(regionId: string) => client.admin.discounts.addRegion(id, regionId),
buildOptions(queryClient, adminDiscountKeys.detail(id), options)
)
}
export const useAdminDiscountRemoveRegion = (
id: string,
options?: UseMutationOptions<Response<AdminDiscountsRes>, Error, string>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(regionId: string) => client.admin.discounts.removeRegion(id, regionId),
buildOptions(queryClient, adminDiscountKeys.detail(id), options)
)
}
export const useAdminDiscountAddValidProduct = (
id: string,
options?: UseMutationOptions<Response<AdminDiscountsRes>, Error, string>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(productId: string) =>
client.admin.discounts.addValidProduct(id, productId),
buildOptions(queryClient, adminDiscountKeys.detail(id), options)
)
}
export const useAdminDiscountRemoveValidProduct = (
id: string,
options?: UseMutationOptions<Response<AdminDiscountsRes>, Error, string>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(productId: string) =>
client.admin.discounts.removeValidProduct(id, productId),
buildOptions(queryClient, adminDiscountKeys.detail(id), options)
)
}
export const useAdminCreateDynamicDiscountCode = (
id: string,
options?: UseMutationOptions<
Response<AdminDiscountsRes>,
Error,
AdminPostDiscountsDiscountDynamicCodesReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostDiscountsDiscountDynamicCodesReq) =>
client.admin.discounts.createDynamicCode(id, payload),
buildOptions(
queryClient,
[adminDiscountKeys.lists(), adminDiscountKeys.detail(id)],
options
)
)
}
export const useAdminDeleteDynamicDiscountCode = (
id: string,
options?: UseMutationOptions<Response<AdminDiscountsRes>, Error, string>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(code: string) => client.admin.discounts.deleteDynamicCode(id, code),
buildOptions(
queryClient,
[adminDiscountKeys.lists(), adminDiscountKeys.detail(id)],
options
)
)
}

View File

@@ -0,0 +1,67 @@
import {
AdminDiscountsListRes,
AdminDiscountsRes,
AdminGetDiscountsParams,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useQuery } from "react-query"
import { useMedusa } from "../../../contexts"
import { UseQueryOptionsWrapper } from "../../../types"
import { queryKeysFactory } from "../../utils/index"
const ADMIN_DISCOUNTS_QUERY_KEY = `admin_discounts` as const
export const adminDiscountKeys = queryKeysFactory(ADMIN_DISCOUNTS_QUERY_KEY)
type DiscountQueryKeys = typeof adminDiscountKeys
export const useAdminDiscounts = (
query?: AdminGetDiscountsParams,
options?: UseQueryOptionsWrapper<
Response<AdminDiscountsListRes>,
Error,
ReturnType<DiscountQueryKeys["list"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminDiscountKeys.list(query),
() => client.admin.discounts.list(query),
options
)
return { ...data, ...rest } as const
}
export const useAdminDiscount = (
id: string,
options?: UseQueryOptionsWrapper<
Response<AdminDiscountsRes>,
Error,
ReturnType<DiscountQueryKeys["detail"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminDiscountKeys.detail(id),
() => client.admin.discounts.retrieve(id),
options
)
return { ...data, ...rest } as const
}
export const useAdminGetDiscountByCode = (
code: string,
options?: UseQueryOptionsWrapper<
Response<AdminDiscountsRes>,
Error,
ReturnType<DiscountQueryKeys["detail"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminDiscountKeys.detail(code),
() => client.admin.discounts.retrieveByCode(code),
options
)
return { ...data, ...rest } as const
}

View File

@@ -0,0 +1,2 @@
export * from "./queries"
export * from "./mutations"

View File

@@ -0,0 +1,131 @@
import { adminDraftOrderKeys } from "./queries"
import {
AdminDraftOrdersDeleteRes,
AdminDraftOrdersRes,
AdminPostDraftOrdersDraftOrderLineItemsItemReq,
AdminPostDraftOrdersDraftOrderLineItemsReq,
AdminPostDraftOrdersDraftOrderRegisterPaymentRes,
AdminPostDraftOrdersDraftOrderReq,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
import { useMedusa } from "../../../contexts/medusa"
import { buildOptions } from "../../utils/buildOptions"
export const useAdminCreateDraftOrder = (
options?: UseMutationOptions<
Response<AdminDraftOrdersRes>,
Error,
AdminPostDraftOrdersDraftOrderReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostDraftOrdersDraftOrderReq) =>
client.admin.draftOrders.create(payload),
buildOptions(queryClient, adminDraftOrderKeys.lists(), options)
)
}
export const useAdminUpdateDraftOrder = (
id: string,
options?: UseMutationOptions<
Response<AdminDraftOrdersRes>,
Error,
AdminPostDraftOrdersDraftOrderReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostDraftOrdersDraftOrderReq) =>
client.admin.draftOrders.update(id, payload),
buildOptions(
queryClient,
[adminDraftOrderKeys.detail(id), adminDraftOrderKeys.lists()],
options
)
)
}
export const useAdminDeleteDraftOrder = (
id: string,
options?: UseMutationOptions<Response<AdminDraftOrdersDeleteRes>, Error, void>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.draftOrders.delete(id),
buildOptions(
queryClient,
[adminDraftOrderKeys.detail(id), adminDraftOrderKeys.lists()],
options
)
)
}
export const useAdminDraftOrderRegisterPayment = (
id: string,
options?: UseMutationOptions<
Response<AdminPostDraftOrdersDraftOrderRegisterPaymentRes>,
Error,
void
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.draftOrders.markPaid(id),
buildOptions(queryClient, adminDraftOrderKeys.detail(id), options)
)
}
export const useAdminDraftOrderAddLineItem = (
id: string,
options?: UseMutationOptions<
Response<AdminDraftOrdersRes>,
Error,
AdminPostDraftOrdersDraftOrderLineItemsReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostDraftOrdersDraftOrderLineItemsReq) =>
client.admin.draftOrders.addLineItem(id, payload),
buildOptions(queryClient, adminDraftOrderKeys.detail(id), options)
)
}
export const useAdminDraftOrderRemoveLineItem = (
id: string,
options?: UseMutationOptions<Response<AdminDraftOrdersRes>, Error, string>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(itemId: string) => client.admin.draftOrders.removeLineItem(id, itemId),
buildOptions(queryClient, adminDraftOrderKeys.detail(id), options)
)
}
export const useAdminDraftOrderUpdateLineItem = (
id: string,
options?: UseMutationOptions<
Response<AdminDraftOrdersRes>,
Error,
AdminPostDraftOrdersDraftOrderLineItemsItemReq & { item_id: string }
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
({
item_id,
...payload
}: AdminPostDraftOrdersDraftOrderLineItemsItemReq & { item_id: string }) =>
client.admin.draftOrders.updateLineItem(id, item_id, payload),
buildOptions(queryClient, adminDraftOrderKeys.detail(id), options)
)
}

View File

@@ -0,0 +1,52 @@
import {
AdminDraftOrdersListRes,
AdminDraftOrdersRes,
AdminGetDraftOrdersParams,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useQuery } from "react-query"
import { useMedusa } from "../../../contexts"
import { UseQueryOptionsWrapper } from "../../../types"
import { queryKeysFactory } from "../../utils/index"
const ADMIN_DRAFT_ORDERS_QUERY_KEY = `admin_draft_orders` as const
export const adminDraftOrderKeys = queryKeysFactory(
ADMIN_DRAFT_ORDERS_QUERY_KEY
)
type DraftOrderQueryKeys = typeof adminDraftOrderKeys
export const useAdminDraftOrders = (
query?: AdminGetDraftOrdersParams,
options?: UseQueryOptionsWrapper<
Response<AdminDraftOrdersListRes>,
Error,
ReturnType<DraftOrderQueryKeys["list"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminDraftOrderKeys.list(query),
() => client.admin.draftOrders.list(query),
options
)
return { ...data, ...rest } as const
}
export const useAdminDraftOrder = (
id: string,
options?: UseQueryOptionsWrapper<
Response<AdminDraftOrdersRes>,
Error,
ReturnType<DraftOrderQueryKeys["detail"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminDraftOrderKeys.detail(id),
() => client.admin.draftOrders.retrieve(id),
options
)
return { ...data, ...rest } as const
}

View File

@@ -0,0 +1,2 @@
export * from "./queries"
export * from "./mutations"

View File

@@ -0,0 +1,63 @@
import {
AdminGiftCardsDeleteRes,
AdminGiftCardsRes,
AdminPostGiftCardsReq,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
import { adminGiftCardKeys } from "."
import { useMedusa } from "../../../contexts/medusa"
import { buildOptions } from "../../utils/buildOptions"
export const useAdminCreateGiftCard = (
options?: UseMutationOptions<
Response<AdminGiftCardsRes>,
Error,
AdminPostGiftCardsReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostGiftCardsReq) => client.admin.giftCards.create(payload),
buildOptions(queryClient, adminGiftCardKeys.lists(), options)
)
}
export const useAdminUpdateGiftCard = (
id: string,
options?: UseMutationOptions<
Response<AdminGiftCardsRes>,
Error,
AdminPostGiftCardsReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostGiftCardsReq) =>
client.admin.giftCards.update(id, payload),
buildOptions(
queryClient,
[adminGiftCardKeys.lists(), adminGiftCardKeys.detail(id)],
options
)
)
}
export const useAdminDeleteGiftCard = (
id: string,
options?: UseMutationOptions<Response<AdminGiftCardsDeleteRes>, Error, void>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.giftCards.delete(id),
buildOptions(
queryClient,
[adminGiftCardKeys.lists(), adminGiftCardKeys.detail(id)],
options
)
)
}

View File

@@ -0,0 +1,50 @@
import {
AdminGiftCardsListRes,
AdminGiftCardsRes,
AdminGetGiftCardsParams,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useQuery } from "react-query"
import { useMedusa } from "../../../contexts"
import { UseQueryOptionsWrapper } from "../../../types"
import { queryKeysFactory } from "../../utils/index"
const ADMIN_GIFT_CARDS_QUERY_KEY = `admin_gift_cards` as const
export const adminGiftCardKeys = queryKeysFactory(ADMIN_GIFT_CARDS_QUERY_KEY)
type GiftCardQueryKeys = typeof adminGiftCardKeys
export const useAdminGiftCards = (
query?: AdminGetGiftCardsParams,
options?: UseQueryOptionsWrapper<
Response<AdminGiftCardsListRes>,
Error,
ReturnType<GiftCardQueryKeys["list"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminGiftCardKeys.list(query),
() => client.admin.giftCards.list(query),
options
)
return { ...data, ...rest } as const
}
export const useAdminGiftCard = (
id: string,
options?: UseQueryOptionsWrapper<
Response<AdminGiftCardsRes>,
Error,
ReturnType<GiftCardQueryKeys["detail"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminGiftCardKeys.detail(id),
() => client.admin.giftCards.retrieve(id),
options
)
return { ...data, ...rest } as const
}

View File

@@ -0,0 +1,21 @@
export * from "./auth"
export * from "./collections"
export * from "./claims"
export * from "./customers"
export * from "./discounts"
export * from "./draft-orders"
export * from "./gift-cards"
export * from "./orders"
export * from "./products"
export * from "./return-reasons"
export * from "./regions"
export * from "./shipping-options"
export * from "./shipping-profiles"
export * from "./notes"
export * from "./invites"
export * from "./notifications"
export * from "./returns"
export * from "./store"
export * from "./swaps"
export * from "./users"
export * from "./variants"

View File

@@ -0,0 +1,2 @@
export * from "./queries"
export * from "./mutations"

View File

@@ -0,0 +1,63 @@
import { buildOptions } from "../../utils/buildOptions"
import {
AdminInviteDeleteRes,
AdminPostInvitesInviteAcceptReq,
} from "@medusajs/medusa"
import { Response, AdminPostInvitesPayload } from "@medusajs/medusa-js"
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
import { useMedusa } from "../../../contexts/medusa"
import { adminInviteKeys } from "./queries"
export const useAdminAcceptInvite = (
options?: UseMutationOptions<
Response<void>,
Error,
AdminPostInvitesInviteAcceptReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostInvitesInviteAcceptReq) =>
client.admin.invites.accept(payload),
buildOptions(queryClient, adminInviteKeys.lists(), options)
)
}
export const useAdminResendInvite = (
id: string,
options?: UseMutationOptions
) => {
const { client } = useMedusa()
return useMutation(() => client.admin.invites.resend(id), options)
}
export const useAdminCreateInvite = (
options?: UseMutationOptions<Response<void>, Error, AdminPostInvitesPayload>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostInvitesPayload) => client.admin.invites.create(payload),
buildOptions(queryClient, adminInviteKeys.lists(), options)
)
}
export const useAdminDeleteInvite = (
id: string,
options?: UseMutationOptions<Response<AdminInviteDeleteRes>, Error, void>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.invites.delete(id),
buildOptions(
queryClient,
[adminInviteKeys.lists(), adminInviteKeys.detail(id)],
options
)
)
}

View File

@@ -0,0 +1,28 @@
import { AdminListInvitesRes } from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useQuery } from "react-query"
import { useMedusa } from "../../../contexts"
import { UseQueryOptionsWrapper } from "../../../types"
import { queryKeysFactory } from "../../utils/index"
const ADMIN_INVITES_QUERY_KEY = `admin_invites` as const
export const adminInviteKeys = queryKeysFactory(ADMIN_INVITES_QUERY_KEY)
type InviteQueryKeys = typeof adminInviteKeys
export const useAdminInvites = (
options?: UseQueryOptionsWrapper<
Response<AdminListInvitesRes>,
Error,
ReturnType<InviteQueryKeys["lists"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminInviteKeys.lists(),
() => client.admin.invites.list(),
options
)
return { ...data, ...rest } as const
}

View File

@@ -0,0 +1,2 @@
export * from "./queries"
export * from "./mutations"

View File

@@ -0,0 +1,64 @@
import {
AdminNotesDeleteRes,
AdminNotesRes,
AdminPostNotesNoteReq,
AdminPostNotesReq,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
import { adminNoteKeys } from "."
import { useMedusa } from "../../../contexts/medusa"
import { buildOptions } from "../../utils/buildOptions"
export const useAdminCreateNote = (
options?: UseMutationOptions<
Response<AdminNotesRes>,
Error,
AdminPostNotesReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostNotesReq) => client.admin.notes.create(payload),
buildOptions(queryClient, adminNoteKeys.lists(), options)
)
}
export const useAdminUpdateNote = (
id: string,
options?: UseMutationOptions<
Response<AdminNotesRes>,
Error,
AdminPostNotesNoteReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostNotesNoteReq) => client.admin.notes.update(id, payload),
buildOptions(
queryClient,
[adminNoteKeys.detail(id), adminNoteKeys.lists()],
options
)
)
}
export const useAdminDeleteNote = (
id: string,
options?: UseMutationOptions<Response<AdminNotesDeleteRes>, Error, void>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.notes.delete(id),
buildOptions(
queryClient,
[adminNoteKeys.detail(id), adminNoteKeys.lists()],
options
)
)
}

View File

@@ -0,0 +1,50 @@
import {
AdminNotesListRes,
AdminNotesRes,
AdminGetNotesParams,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useQuery } from "react-query"
import { useMedusa } from "../../../contexts"
import { UseQueryOptionsWrapper } from "../../../types"
import { queryKeysFactory } from "../../utils/index"
const ADMIN_NOTE_QUERY_KEY = `admin_notes` as const
export const adminNoteKeys = queryKeysFactory(ADMIN_NOTE_QUERY_KEY)
type NoteQueryKeys = typeof adminNoteKeys
export const useAdminNotes = (
query?: AdminGetNotesParams,
options?: UseQueryOptionsWrapper<
Response<AdminNotesListRes>,
Error,
ReturnType<NoteQueryKeys["list"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminNoteKeys.list(query),
() => client.admin.notes.list(query),
options
)
return { ...data, ...rest } as const
}
export const useAdminNote = (
id: string,
options?: UseQueryOptionsWrapper<
Response<AdminNotesRes>,
Error,
ReturnType<NoteQueryKeys["detail"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminNoteKeys.detail(id),
() => client.admin.notes.retrieve(id),
options
)
return { ...data, ...rest } as const
}

View File

@@ -0,0 +1,2 @@
export * from "./queries"
export * from "./mutations"

View File

@@ -0,0 +1,31 @@
import {
AdminNotificationsRes,
AdminPostNotificationsNotificationResendReq,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
import { useMedusa } from "../../../contexts/medusa"
import { adminNotificationKeys } from "./queries"
import { buildOptions } from "../../utils/buildOptions"
export const useAdminResendNotification = (
id: string,
options?: UseMutationOptions<
Response<AdminNotificationsRes>,
Error,
AdminPostNotificationsNotificationResendReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostNotificationsNotificationResendReq) =>
client.admin.notifications.resend(id, payload),
buildOptions(
queryClient,
[adminNotificationKeys.lists(), adminNotificationKeys.detail(id)],
options
)
)
}

View File

@@ -0,0 +1,34 @@
import {
AdminGetNotificationsParams,
AdminNotificationsListRes,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useQuery } from "react-query"
import { useMedusa } from "../../../contexts"
import { UseQueryOptionsWrapper } from "../../../types"
import { queryKeysFactory } from "../../utils/index"
const ADMIN_NOTIFICATIONS_QUERY_KEY = `admin_notifications` as const
export const adminNotificationKeys = queryKeysFactory(
ADMIN_NOTIFICATIONS_QUERY_KEY
)
type NotificationQueryKeys = typeof adminNotificationKeys
export const useAdminNotifications = (
query?: AdminGetNotificationsParams,
options?: UseQueryOptionsWrapper<
Response<AdminNotificationsListRes>,
Error,
ReturnType<NotificationQueryKeys["list"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminNotificationKeys.list(query),
() => client.admin.notifications.list(query),
options
)
return { ...data, ...rest } as const
}

View File

@@ -0,0 +1,2 @@
export * from "./queries"
export * from "./mutations"

View File

@@ -0,0 +1,249 @@
import { adminOrderKeys } from "./queries"
import {
AdminOrdersRes,
AdminPostOrdersOrderFulfillmentsReq,
AdminPostOrdersOrderRefundsReq,
AdminPostOrdersOrderReq,
AdminPostOrdersOrderReturnsReq,
AdminPostOrdersOrderShipmentReq,
AdminPostOrdersOrderShippingMethodsReq,
AdminPostOrdersReq,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
import { useMedusa } from "../../../contexts/medusa"
import { buildOptions } from "../../utils/buildOptions"
export const useAdminCreateOrder = (
options?: UseMutationOptions<
Response<AdminOrdersRes>,
Error,
AdminPostOrdersReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostOrdersReq) => client.admin.orders.create(payload),
buildOptions(queryClient, adminOrderKeys.lists(), options)
)
}
export const useAdminUpdateOrder = (
id: string,
options?: UseMutationOptions<
Response<AdminOrdersRes>,
Error,
AdminPostOrdersOrderReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostOrdersOrderReq) =>
client.admin.orders.update(id, payload),
buildOptions(
queryClient,
[adminOrderKeys.lists(), adminOrderKeys.detail(id)],
options
)
)
}
export const useAdminCancelOrder = (
id: string,
options?: UseMutationOptions<Response<AdminOrdersRes>, Error, void>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.orders.cancel(id),
buildOptions(
queryClient,
[adminOrderKeys.lists(), adminOrderKeys.detail(id)],
options
)
)
}
export const useAdminCompleteOrder = (
id: string,
options?: UseMutationOptions<Response<AdminOrdersRes>, Error, void>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.orders.complete(id),
buildOptions(
queryClient,
[adminOrderKeys.lists(), adminOrderKeys.detail(id)],
options
)
)
}
export const useAdminCapturePayment = (
id: string,
options?: UseMutationOptions<Response<AdminOrdersRes>, Error, void>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.orders.capturePayment(id),
buildOptions(
queryClient,
[adminOrderKeys.lists(), adminOrderKeys.detail(id)],
options
)
)
}
export const useAdminRefundPayment = (
id: string,
options?: UseMutationOptions<
Response<AdminOrdersRes>,
Error,
AdminPostOrdersOrderRefundsReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostOrdersOrderRefundsReq) =>
client.admin.orders.refundPayment(id, payload),
buildOptions(
queryClient,
[adminOrderKeys.lists(), adminOrderKeys.detail(id)],
options
)
)
}
export const useAdminCreateFulfillment = (
orderId: string,
options?: UseMutationOptions<
Response<AdminOrdersRes>,
Error,
AdminPostOrdersOrderFulfillmentsReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostOrdersOrderFulfillmentsReq) =>
client.admin.orders.createFulfillment(orderId, payload),
buildOptions(
queryClient,
[adminOrderKeys.lists(), adminOrderKeys.detail(orderId)],
options
)
)
}
export const useAdminCancelFulfillment = (
orderId: string,
options?: UseMutationOptions<Response<AdminOrdersRes>, Error, string>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(fulfillmentId: string) =>
client.admin.orders.cancelFulfillment(orderId, fulfillmentId),
buildOptions(
queryClient,
[adminOrderKeys.lists(), adminOrderKeys.detail(orderId)],
options
)
)
}
export const useAdminCreateShipment = (
orderId: string,
options?: UseMutationOptions<
Response<AdminOrdersRes>,
Error,
AdminPostOrdersOrderShipmentReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostOrdersOrderShipmentReq) =>
client.admin.orders.createShipment(orderId, payload),
buildOptions(queryClient, adminOrderKeys.detail(orderId), options)
)
}
export const useAdminRequestReturn = (
orderId: string,
options?: UseMutationOptions<
Response<AdminOrdersRes>,
Error,
AdminPostOrdersOrderReturnsReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostOrdersOrderReturnsReq) =>
client.admin.orders.requestReturn(orderId, payload),
buildOptions(queryClient, adminOrderKeys.detail(orderId), options)
)
}
export const useAdminAddShippingMethod = (
orderId: string,
options?: UseMutationOptions<
Response<AdminOrdersRes>,
Error,
AdminPostOrdersOrderShippingMethodsReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostOrdersOrderShippingMethodsReq) =>
client.admin.orders.addShippingMethod(orderId, payload),
buildOptions(queryClient, adminOrderKeys.detail(orderId), options)
)
}
export const useAdminArchiveOrder = (
id: string,
options?: UseMutationOptions<Response<AdminOrdersRes>, Error, void>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.orders.archive(id),
buildOptions(
queryClient,
[adminOrderKeys.lists(), adminOrderKeys.detail(id)],
options
)
)
}
export const useAdminDeleteOrderMetadata = (
id: string,
options?: UseMutationOptions<Response<AdminOrdersRes>, Error, string>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(key: string) => client.admin.orders.deleteMetadata(id, key),
buildOptions(queryClient, adminOrderKeys.detail(id), options)
)
}

View File

@@ -0,0 +1,50 @@
import {
AdminOrdersListRes,
AdminOrdersRes,
AdminGetOrdersParams,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useQuery } from "react-query"
import { useMedusa } from "../../../contexts"
import { UseQueryOptionsWrapper } from "../../../types"
import { queryKeysFactory } from "../../utils/index"
const ADMIN_ORDERS_QUERY_KEY = `admin_orders` as const
export const adminOrderKeys = queryKeysFactory(ADMIN_ORDERS_QUERY_KEY)
type OrderQueryKeys = typeof adminOrderKeys
export const useAdminOrders = (
query?: AdminGetOrdersParams,
options?: UseQueryOptionsWrapper<
Response<AdminOrdersListRes>,
Error,
ReturnType<OrderQueryKeys["list"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminOrderKeys.list(query),
() => client.admin.orders.list(query),
options
)
return { ...data, ...rest } as const
}
export const useAdminOrder = (
id: string,
options?: UseQueryOptionsWrapper<
Response<AdminOrdersRes>,
Error,
ReturnType<OrderQueryKeys["detail"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminOrderKeys.detail(id),
() => client.admin.orders.retrieve(id),
options
)
return { ...data, ...rest } as const
}

View File

@@ -0,0 +1,2 @@
export * from "./queries"
export * from "./mutations"

View File

@@ -0,0 +1,196 @@
import { adminProductKeys } from "./queries"
import {
AdminProductsDeleteRes,
AdminProductsRes,
AdminPostProductsProductReq,
AdminPostProductsReq,
AdminPostProductsProductVariantsReq,
AdminProductsDeleteVariantRes,
AdminPostProductsProductOptionsReq,
AdminPostProductsProductOptionsOption,
AdminProductsDeleteOptionRes,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
import { useMedusa } from "../../../contexts/medusa"
import { buildOptions } from "../../utils/buildOptions"
export const useAdminCreateProduct = (
options?: UseMutationOptions<
Response<AdminProductsRes>,
Error,
AdminPostProductsReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostProductsReq) => client.admin.products.create(payload),
buildOptions(queryClient, adminProductKeys.lists(), options)
)
}
export const useAdminUpdateProduct = (
id: string,
options?: UseMutationOptions<
Response<AdminProductsRes>,
Error,
AdminPostProductsProductReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostProductsProductReq) =>
client.admin.products.update(id, payload),
buildOptions(
queryClient,
[adminProductKeys.lists(), adminProductKeys.detail(id)],
options
)
)
}
export const useAdminDeleteProduct = (
id: string,
options?: UseMutationOptions<Response<AdminProductsDeleteRes>, Error, void>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.products.delete(id),
buildOptions(
queryClient,
[adminProductKeys.lists(), adminProductKeys.detail(id)],
options
)
)
}
export const useAdminCreateVariant = (
productId: string,
options?: UseMutationOptions<
Response<AdminProductsRes>,
Error,
AdminPostProductsProductVariantsReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostProductsProductVariantsReq) =>
client.admin.products.createVariant(productId, payload),
buildOptions(
queryClient,
[adminProductKeys.lists(), adminProductKeys.detail(productId)],
options
)
)
}
export const useAdminUpdateVariant = (
productId: string,
options?: UseMutationOptions<
Response<AdminProductsRes>,
Error,
AdminPostProductsProductVariantsReq & { variant_id: string }
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
({
variant_id,
...payload
}: AdminPostProductsProductVariantsReq & { variant_id: string }) =>
client.admin.products.updateVariant(productId, variant_id, payload),
buildOptions(
queryClient,
[adminProductKeys.lists(), adminProductKeys.detail(productId)],
options
)
)
}
export const useAdminDeleteVariant = (
productId: string,
options?: UseMutationOptions<
Response<AdminProductsDeleteVariantRes>,
Error,
string
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(variantId: string) =>
client.admin.products.deleteVariant(productId, variantId),
buildOptions(
queryClient,
[adminProductKeys.lists(), adminProductKeys.detail(productId)],
options
)
)
}
export const useAdminCreateProductOption = (
productId: string,
options?: UseMutationOptions<
Response<AdminProductsRes>,
Error,
AdminPostProductsProductOptionsReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostProductsProductOptionsReq) =>
client.admin.products.addOption(productId, payload),
buildOptions(queryClient, adminProductKeys.detail(productId), options)
)
}
export const useAdminUpdateProductOption = (
productId: string,
options?: UseMutationOptions<
Response<AdminProductsRes>,
Error,
AdminPostProductsProductOptionsOption & { option_id: string }
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
({
option_id,
...payload
}: AdminPostProductsProductOptionsOption & { option_id: string }) =>
client.admin.products.updateOption(productId, option_id, payload),
buildOptions(queryClient, adminProductKeys.detail(productId), options)
)
}
export const useAdminDeleteProductOption = (
productId: string,
options?: UseMutationOptions<
Response<AdminProductsDeleteOptionRes>,
Error,
string
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(optionId: string) =>
client.admin.products.deleteOption(productId, optionId),
buildOptions(queryClient, adminProductKeys.detail(productId), options)
)
}

View File

@@ -0,0 +1,84 @@
import {
AdminProductsListRes,
AdminProductsRes,
AdminGetProductsParams,
AdminProductsListTypesRes,
AdminProductsListTagsRes,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useQuery } from "react-query"
import { useMedusa } from "../../../contexts"
import { UseQueryOptionsWrapper } from "../../../types"
import { queryKeysFactory } from "../../utils/index"
const ADMIN_PRODUCTS_QUERY_KEY = `admin_products` as const
export const adminProductKeys = queryKeysFactory(ADMIN_PRODUCTS_QUERY_KEY)
type ProductQueryKeys = typeof adminProductKeys
export const useAdminProducts = (
query?: AdminGetProductsParams,
options?: UseQueryOptionsWrapper<
Response<AdminProductsListRes>,
Error,
ReturnType<ProductQueryKeys["list"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminProductKeys.list(query),
() => client.admin.products.list(query),
options
)
return { ...data, ...rest } as const
}
export const useAdminProduct = (
id: string,
options?: UseQueryOptionsWrapper<
Response<AdminProductsRes>,
Error,
ReturnType<ProductQueryKeys["detail"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminProductKeys.detail(id),
() => client.admin.products.retrieve(id),
options
)
return { ...data, ...rest } as const
}
export const useAdminProductTypes = (
options?: UseQueryOptionsWrapper<
Response<AdminProductsListTypesRes>,
Error,
ReturnType<ProductQueryKeys["detail"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminProductKeys.detail("types"),
() => client.admin.products.listTypes(),
options
)
return { ...data, ...rest } as const
}
export const useAdminProductTags = (
options?: UseQueryOptionsWrapper<
Response<AdminProductsListTagsRes>,
Error,
ReturnType<ProductQueryKeys["detail"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminProductKeys.detail("tags"),
() => client.admin.products.listTags(),
options
)
return { ...data, ...rest } as const
}

View File

@@ -0,0 +1,2 @@
export * from "./queries"
export * from "./mutations"

View File

@@ -0,0 +1,197 @@
import { adminRegionKeys } from "./queries"
import {
AdminRegionsDeleteRes,
AdminRegionsRes,
AdminPostRegionsRegionReq,
AdminPostRegionsReq,
AdminPostRegionsRegionMetadata,
AdminPostRegionsRegionCountriesReq,
AdminPostRegionsRegionFulfillmentProvidersReq,
AdminPostRegionsRegionPaymentProvidersReq,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
import { useMedusa } from "../../../contexts/medusa"
import { buildOptions } from "../../utils/buildOptions"
export const useAdminCreateRegion = (
options?: UseMutationOptions<
Response<AdminRegionsRes>,
Error,
AdminPostRegionsReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostRegionsReq) => client.admin.regions.create(payload),
buildOptions(queryClient, adminRegionKeys.lists(), options)
)
}
export const useAdminUpdateRegion = (
id: string,
options?: UseMutationOptions<
Response<AdminRegionsRes>,
Error,
AdminPostRegionsRegionReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostRegionsRegionReq) =>
client.admin.regions.update(id, payload),
buildOptions(
queryClient,
[adminRegionKeys.lists(), adminRegionKeys.detail(id)],
options
)
)
}
export const useAdminDeleteRegion = (
id: string,
options?: UseMutationOptions<Response<AdminRegionsDeleteRes>, Error, void>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.regions.delete(id),
buildOptions(
queryClient,
[adminRegionKeys.lists(), adminRegionKeys.detail(id)],
options
)
)
}
export const useAdminSetRegionMetadata = (
id: string,
options?: UseMutationOptions<
Response<AdminRegionsRes>,
Error,
AdminPostRegionsRegionMetadata
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(metadata: AdminPostRegionsRegionMetadata) =>
client.admin.regions.setMetadata(id, metadata),
buildOptions(queryClient, adminRegionKeys.detail(id), options)
)
}
export const useAdminDeleteRegionMetadata = (
id: string,
options?: UseMutationOptions<Response<AdminRegionsRes>, Error, string>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(key: string) => client.admin.regions.deleteMetadata(id, key),
buildOptions(queryClient, adminRegionKeys.detail(id), options)
)
}
export const useAdminRegionAddCountry = (
id: string,
options?: UseMutationOptions<
Response<AdminRegionsRes>,
Error,
AdminPostRegionsRegionCountriesReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostRegionsRegionCountriesReq) =>
client.admin.regions.addCountry(id, payload),
buildOptions(queryClient, adminRegionKeys.detail(id), options)
)
}
export const useAdminRegionRemoveCountry = (
id: string,
options?: UseMutationOptions<Response<AdminRegionsRes>, Error, string>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(country_code: string) =>
client.admin.regions.deleteCountry(id, country_code),
buildOptions(queryClient, adminRegionKeys.detail(id), options)
)
}
export const useAdminRegionAddFulfillmentProvider = (
id: string,
options?: UseMutationOptions<
Response<AdminRegionsRes>,
Error,
AdminPostRegionsRegionFulfillmentProvidersReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostRegionsRegionFulfillmentProvidersReq) =>
client.admin.regions.addFulfillmentProvider(id, payload),
buildOptions(queryClient, adminRegionKeys.detail(id), options)
)
}
export const useAdminRegionDeleteFulfillmentProvider = (
id: string,
options?: UseMutationOptions<Response<AdminRegionsRes>, Error, string>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(provider_id: string) =>
client.admin.regions.deleteFulfillmentProvider(id, provider_id),
buildOptions(queryClient, adminRegionKeys.detail(id), options)
)
}
export const useAdminRegionAddPaymentProvider = (
id: string,
options?: UseMutationOptions<
Response<AdminRegionsRes>,
Error,
AdminPostRegionsRegionPaymentProvidersReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostRegionsRegionPaymentProvidersReq) =>
client.admin.regions.addPaymentProvider(id, payload),
buildOptions(queryClient, adminRegionKeys.detail(id), options)
)
}
export const useAdminRegionDeletePaymentProvider = (
id: string,
options?: UseMutationOptions<Response<AdminRegionsRes>, Error, string>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(provider_id: string) =>
client.admin.regions.deletePaymentProvider(id, provider_id),
buildOptions(queryClient, adminRegionKeys.detail(id), options)
)
}

View File

@@ -0,0 +1,68 @@
import {
AdminRegionsListRes,
AdminRegionsRes,
AdminGetRegionsParams,
AdminGetRegionsRegionFulfillmentOptionsRes,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useQuery } from "react-query"
import { useMedusa } from "../../../contexts"
import { UseQueryOptionsWrapper } from "../../../types"
import { queryKeysFactory } from "../../utils/index"
const ADMIN_REGIONS_QUERY_KEY = `admin_regions` as const
export const adminRegionKeys = queryKeysFactory(ADMIN_REGIONS_QUERY_KEY)
type RegionQueryKeys = typeof adminRegionKeys
export const useAdminRegions = (
query?: AdminGetRegionsParams,
options?: UseQueryOptionsWrapper<
Response<AdminRegionsListRes>,
Error,
ReturnType<RegionQueryKeys["list"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminRegionKeys.list(query),
() => client.admin.regions.list(query),
options
)
return { ...data, ...rest } as const
}
export const useAdminRegion = (
id: string,
options?: UseQueryOptionsWrapper<
Response<AdminRegionsRes>,
Error,
ReturnType<RegionQueryKeys["detail"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminRegionKeys.detail(id),
() => client.admin.regions.retrieve(id),
options
)
return { ...data, ...rest } as const
}
export const useAdminRegionFulfillmentOptions = (
regionId: string,
options?: UseQueryOptionsWrapper<
Response<AdminGetRegionsRegionFulfillmentOptionsRes>,
Error,
ReturnType<RegionQueryKeys["detail"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminRegionKeys.detail(`${regionId}_fullfillment-options`),
() => client.admin.regions.retrieveFulfillmentOptions(regionId),
options
)
return { ...data, ...rest } as const
}

View File

@@ -0,0 +1,2 @@
export * from "./queries"
export * from "./mutations"

View File

@@ -0,0 +1,66 @@
import {
AdminPostReturnReasonsReasonReq,
AdminPostReturnReasonsReq,
AdminReturnReasonsRes,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
import { adminReturnReasonKeys } from "."
import { useMedusa } from "../../../contexts/medusa"
import { buildOptions } from "../../utils/buildOptions"
export const useAdminCreateReturnReason = (
options?: UseMutationOptions<
Response<AdminReturnReasonsRes>,
Error,
AdminPostReturnReasonsReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostReturnReasonsReq) =>
client.admin.returnReasons.create(payload),
buildOptions(queryClient, adminReturnReasonKeys.lists(), options)
)
}
export const useAdminUpdateReturnReason = (
id: string,
options?: UseMutationOptions<
Response<AdminReturnReasonsRes>,
Error,
AdminPostReturnReasonsReasonReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostReturnReasonsReasonReq) =>
client.admin.returnReasons.update(id, payload),
buildOptions(
queryClient,
[adminReturnReasonKeys.detail(id), adminReturnReasonKeys.lists()],
options
)
)
}
export const useAdminDeleteReturnReason = (
id: string,
options?: UseMutationOptions
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.returnReasons.delete(id),
buildOptions(
queryClient,
[adminReturnReasonKeys.detail(id), adminReturnReasonKeys.lists()],
options
)
)
}

View File

@@ -0,0 +1,50 @@
import {
AdminReturnReasonsListRes,
AdminReturnReasonsRes,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useQuery } from "react-query"
import { useMedusa } from "../../../contexts"
import { UseQueryOptionsWrapper } from "../../../types"
import { queryKeysFactory } from "../../utils/index"
const ADMIN_RETURNS_REASONS_QUERY_KEY = `admin_return_reasons` as const
export const adminReturnReasonKeys = queryKeysFactory(
ADMIN_RETURNS_REASONS_QUERY_KEY
)
type ReturnReasonQueryKeys = typeof adminReturnReasonKeys
export const useAdminReturnReasons = (
options?: UseQueryOptionsWrapper<
Response<AdminReturnReasonsListRes>,
Error,
ReturnType<ReturnReasonQueryKeys["lists"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminReturnReasonKeys.lists(),
() => client.admin.returnReasons.list(),
options
)
return { ...data, ...rest } as const
}
export const useAdminReturnReason = (
id: string,
options?: UseQueryOptionsWrapper<
Response<AdminReturnReasonsRes>,
Error,
ReturnType<ReturnReasonQueryKeys["detail"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminReturnReasonKeys.detail(id),
() => client.admin.returnReasons.retrieve(id),
options
)
return { ...data, ...rest } as const
}

View File

@@ -0,0 +1,2 @@
export * from "./queries"
export * from "./mutations"

View File

@@ -0,0 +1,40 @@
import { AdminReturnsCancelRes, AdminReturnsRes } from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
import { useMedusa } from "../../../contexts/medusa"
import { buildOptions } from "../../utils/buildOptions"
import { adminReturnKeys } from "./queries"
export const useAdminReceiveReturn = (
id: string,
options?: UseMutationOptions<Response<AdminReturnsRes>, Error, void>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.returns.receive(id),
buildOptions(
queryClient,
[adminReturnKeys.detail(id), adminReturnKeys.list()],
options
)
)
}
export const useAdminCancelReturn = (
id: string,
options?: UseMutationOptions<Response<AdminReturnsCancelRes>, Error, void>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.returns.cancel(id),
buildOptions(
queryClient,
[adminReturnKeys.detail(id), adminReturnKeys.list()],
options
)
)
}

View File

@@ -0,0 +1,28 @@
import { AdminReturnsListRes } from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useQuery } from "react-query"
import { useMedusa } from "../../../contexts"
import { UseQueryOptionsWrapper } from "../../../types"
import { queryKeysFactory } from "../../utils/index"
const ADMIN_RETURNS_QUERY_KEY = `admin_returns` as const
export const adminReturnKeys = queryKeysFactory(ADMIN_RETURNS_QUERY_KEY)
type ReturnQueryKeys = typeof adminReturnKeys
export const useAdminReturns = (
options?: UseQueryOptionsWrapper<
Response<AdminReturnsListRes>,
Error,
ReturnType<ReturnQueryKeys["lists"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminReturnKeys.lists(),
() => client.admin.returns.list(),
options
)
return { ...data, ...rest } as const
}

View File

@@ -0,0 +1,2 @@
export * from "./queries"
export * from "./mutations"

View File

@@ -0,0 +1,66 @@
import { adminShippingOptionKeys } from "./queries"
import {
AdminPostShippingOptionsOptionReq,
AdminPostShippingOptionsReq,
AdminShippingOptionsRes,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
import { useMedusa } from "../../../contexts/medusa"
import { buildOptions } from "../../utils/buildOptions"
export const useAdminCreateShippingOption = (
options?: UseMutationOptions<
Response<AdminShippingOptionsRes>,
Error,
AdminPostShippingOptionsReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostShippingOptionsReq) =>
client.admin.shippingOptions.create(payload),
buildOptions(queryClient, adminShippingOptionKeys.lists(), options)
)
}
export const useAdminUpdateShippingOption = (
id: string,
options?: UseMutationOptions<
Response<AdminShippingOptionsRes>,
Error,
AdminPostShippingOptionsOptionReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostShippingOptionsOptionReq) =>
client.admin.shippingOptions.update(id, payload),
buildOptions(
queryClient,
[adminShippingOptionKeys.lists(), adminShippingOptionKeys.detail(id)],
options
)
)
}
export const useAdminDeleteShippingOption = (
id: string,
options?: UseMutationOptions
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.shippingOptions.delete(id),
buildOptions(
queryClient,
[adminShippingOptionKeys.lists(), adminShippingOptionKeys.detail(id)],
options
)
)
}

View File

@@ -0,0 +1,52 @@
import {
AdminGetShippingOptionsParams,
AdminShippingOptionsListRes,
AdminShippingOptionsRes,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useQuery } from "react-query"
import { useMedusa } from "../../../contexts"
import { UseQueryOptionsWrapper } from "../../../types"
import { queryKeysFactory } from "../../utils/index"
const ADMIN_SHIPPING_OPTIONS_QUERY_KEY = `admin_shipping_options` as const
export const adminShippingOptionKeys = queryKeysFactory(
ADMIN_SHIPPING_OPTIONS_QUERY_KEY
)
type ShippingOptionQueryKeys = typeof adminShippingOptionKeys
export const useAdminShippingOptions = (
query?: AdminGetShippingOptionsParams,
options?: UseQueryOptionsWrapper<
Response<AdminShippingOptionsListRes>,
Error,
ReturnType<ShippingOptionQueryKeys["list"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminShippingOptionKeys.list(query),
() => client.admin.shippingOptions.list(query),
options
)
return { ...data, ...rest } as const
}
export const useAdminShippingOption = (
id: string,
options?: UseQueryOptionsWrapper<
Response<AdminShippingOptionsRes>,
Error,
ReturnType<ShippingOptionQueryKeys["detail"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminShippingOptionKeys.detail(id),
() => client.admin.shippingOptions.retrieve(id),
options
)
return { ...data, ...rest } as const
}

View File

@@ -0,0 +1,2 @@
export * from "./queries"
export * from "./mutations"

View File

@@ -0,0 +1,69 @@
import { adminShippingProfileKeys } from "./queries"
import {
AdminDeleteShippingProfileRes,
AdminPostShippingProfilesReq,
AdminShippingProfilesRes,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
import { useMedusa } from "../../../contexts/medusa"
import { buildOptions } from "../../utils/buildOptions"
export const useAdminCreateShippingProfile = (
options?: UseMutationOptions<
Response<AdminShippingProfilesRes>,
Error,
AdminPostShippingProfilesReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostShippingProfilesReq) =>
client.admin.shippingProfiles.create(payload),
buildOptions(queryClient, adminShippingProfileKeys.lists(), options)
)
}
export const useAdminUpdateShippingProfile = (
id: string,
options?: UseMutationOptions<
Response<AdminShippingProfilesRes>,
Error,
AdminPostShippingProfilesReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostShippingProfilesReq) =>
client.admin.shippingProfiles.update(id, payload),
buildOptions(
queryClient,
[adminShippingProfileKeys.lists(), adminShippingProfileKeys.detail(id)],
options
)
)
}
export const useAdminDeleteShippingProfile = (
id: string,
options?: UseMutationOptions<
Response<AdminDeleteShippingProfileRes>,
Error,
void
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.shippingProfiles.delete(id),
buildOptions(
queryClient,
[adminShippingProfileKeys.lists(), adminShippingProfileKeys.detail(id)],
options
)
)
}

View File

@@ -0,0 +1,50 @@
import {
AdminShippingProfilesListRes,
AdminShippingProfilesRes,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import { useQuery } from "react-query"
import { useMedusa } from "../../../contexts"
import { UseQueryOptionsWrapper } from "../../../types"
import { queryKeysFactory } from "../../utils/index"
const ADMIN_COLLECTIONS_QUERY_KEY = `admin_shippingProfiles` as const
export const adminShippingProfileKeys = queryKeysFactory(
ADMIN_COLLECTIONS_QUERY_KEY
)
type ShippingProfileQueryKeys = typeof adminShippingProfileKeys
export const useAdminShippingProfiles = (
options?: UseQueryOptionsWrapper<
Response<AdminShippingProfilesListRes>,
Error,
ReturnType<ShippingProfileQueryKeys["lists"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminShippingProfileKeys.lists(),
() => client.admin.shippingProfiles.list(),
options
)
return { ...data, ...rest } as const
}
export const useAdminShippingProfile = (
id: string,
options?: UseQueryOptionsWrapper<
Response<AdminShippingProfilesRes>,
Error,
ReturnType<ShippingProfileQueryKeys["detail"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminShippingProfileKeys.detail(id),
() => client.admin.shippingProfiles.retrieve(id),
options
)
return { ...data, ...rest } as const
}

Some files were not shown because too many files have changed in this diff Show More