feature/get-places-api #2
17
.babelrc
Normal file
17
.babelrc
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"presets": [
|
||||
[
|
||||
"@babel/preset-env",
|
||||
{
|
||||
"targets": {
|
||||
"node": "current",
|
||||
},
|
||||
},
|
||||
],
|
||||
["@babel/preset-react", {
|
||||
"runtime": "automatic"
|
||||
}],
|
||||
"@babel/preset-typescript"
|
||||
],
|
||||
"plugins": ["babel-plugin-transform-import-meta"]
|
||||
}
|
11
.eslintignore
Normal file
11
.eslintignore
Normal file
@ -0,0 +1,11 @@
|
||||
/node_modules
|
||||
/public
|
||||
/dist
|
||||
vite.config.ts
|
||||
.eslintrc.js
|
||||
/build
|
||||
/src/vite-env.d.ts
|
||||
tailwind.config.cjs
|
||||
postcss.config.cjs
|
||||
fileMock.js
|
||||
jest.config.js
|
81
.eslintrc.json
Normal file
81
.eslintrc.json
Normal file
@ -0,0 +1,81 @@
|
||||
{
|
||||
"env": {
|
||||
"browser": true,
|
||||
"es2021": true
|
||||
},
|
||||
"settings": {
|
||||
"react": {
|
||||
"version": "detect"
|
||||
},
|
||||
"import/resolver": {
|
||||
"alias": {
|
||||
"map": [["~", "./src"]],
|
||||
"extensions": [".js",".ts",".tsx", ".d.ts", ".json"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"extends": [
|
||||
"airbnb",
|
||||
"eslint:recommended",
|
||||
"plugin:react/recommended",
|
||||
"plugin:react/recommended",
|
||||
"plugin:jest/recommended",
|
||||
"plugin:prettier/recommended",
|
||||
"plugin:@typescript-eslint/recommended"
|
||||
],
|
||||
"overrides": [],
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"parserOptions": {
|
||||
"ecmaVersion": "latest",
|
||||
"sourceType": "module"
|
||||
},
|
||||
"plugins": ["react", "@typescript-eslint", "jest", "prettier"],
|
||||
"rules": {
|
||||
"object-curly-spacing": ["error", "always"],
|
||||
"import/extensions": [
|
||||
"error",
|
||||
"ignorePackages",
|
||||
{
|
||||
"js": "never",
|
||||
"jsx": "never",
|
||||
"ts": "never",
|
||||
"tsx": "never"
|
||||
}
|
||||
],
|
||||
"import/no-extraneous-dependencies": ["error", { "devDependencies": true }],
|
||||
"class-methods-use-this": "off",
|
||||
"import/no-import-module-exports": "off",
|
||||
"react/require-default-props": "off",
|
||||
"import/prefer-default-export": "off",
|
||||
"jsx-a11y/click-events-have-key-events": "off",
|
||||
"jsx-a11y/no-static-element-interactions": "off",
|
||||
"@typescript-eslint/no-unused-vars": "error",
|
||||
"@typescript-eslint/no-shadow": "error",
|
||||
"no-shadow": "off",
|
||||
"no-return-await": "off",
|
||||
"import/order": [
|
||||
"error",
|
||||
{
|
||||
"pathGroups": [
|
||||
{
|
||||
"pattern": "~/**",
|
||||
"group": "external"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"prettier/prettier": [
|
||||
"error",
|
||||
{},
|
||||
{
|
||||
"usePrettierrc": true,
|
||||
"endOfLine": "auto"
|
||||
}
|
||||
],
|
||||
"jest/valid-title": "off",
|
||||
"react/button-has-type": "off",
|
||||
"react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx", ".ts", ".tsx"] }],
|
||||
"react/react-in-jsx-scope": "off",
|
||||
"@typescript-eslint/no-namespace": "off"
|
||||
}
|
||||
}
|
5
.husky/pre-push
Executable file
5
.husky/pre-push
Executable file
@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env sh
|
||||
. "$(dirname -- "$0")/_/husky.sh"
|
||||
|
||||
npm run test && npm run lint
|
||||
npm run test && npm run lint
|
@ -8,5 +8,7 @@ export default {
|
||||
"\\.(css|less)$": "identity-obj-proxy",
|
||||
"^~(.*)$": "<rootDir>/src$1"
|
||||
},
|
||||
transformIgnorePatterns: ['<rootDir>/node_modules/'],
|
||||
transformIgnorePatterns: [
|
||||
"node_modules/(?!(spacetime)/)"
|
||||
]
|
||||
}
|
8
package-lock.json
generated
8
package-lock.json
generated
@ -7704,6 +7704,14 @@
|
||||
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
|
||||
"dev": true
|
||||
},
|
||||
"swr": {
|
||||
"version": "2.1.5",
|
||||
"resolved": "https://registry.npmjs.org/swr/-/swr-2.1.5.tgz",
|
||||
"integrity": "sha512-/OhfZMcEpuz77KavXST5q6XE9nrOBOVcBLWjMT+oAE/kQHyE3PASrevXCtQDZ8aamntOfFkbVJp7Il9tNBQWrw==",
|
||||
"requires": {
|
||||
"use-sync-external-store": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"symbol-tree": {
|
||||
"version": "3.2.4",
|
||||
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
|
||||
|
11
package.json
11
package.json
@ -8,7 +8,7 @@
|
||||
"build": "tsc && vite build",
|
||||
"preview": "vite preview",
|
||||
"lint": "eslint --fix --ignore-path .eslintignore --ignore-pattern \"!**/.*\" .",
|
||||
"prepare": "husky install",
|
||||
"prepare": "husky install && husky add .husky/pre-push \"npm run test && npm run lint\"",
|
||||
"test": "jest",
|
||||
"tsc": "tsc"
|
||||
},
|
||||
@ -18,16 +18,17 @@
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-redux": "^8.0.5",
|
||||
"react-router-dom": "^6.9.0"
|
||||
"react-router-dom": "^6.9.0",
|
||||
"swr": "^2.1.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/preset-env": "^7.20.2",
|
||||
"@babel/preset-env": "^7.21.5",
|
||||
"@babel/preset-react": "^7.18.6",
|
||||
"@babel/preset-typescript": "^7.21.0",
|
||||
"@babel/preset-typescript": "^7.21.5",
|
||||
"@testing-library/jest-dom": "^5.16.5",
|
||||
"@testing-library/react": "^14.0.0",
|
||||
"@testing-library/user-event": "^14.4.3",
|
||||
"@types/jest": "^29.4.0",
|
||||
"@types/jest": "^29.5.1",
|
||||
"@types/react": "^18.0.27",
|
||||
"@types/react-dom": "^18.0.10",
|
||||
"@typescript-eslint/eslint-plugin": "^5.54.1",
|
||||
|
13
prettierrc.json
Normal file
13
prettierrc.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"printWidth": 120,
|
||||
"tabWidth": 2,
|
||||
"endOfLine":"auto",
|
||||
"useTabs": false,
|
||||
"semi": true,
|
||||
"singleQuote": true,
|
||||
"quoteProps": "as-needed",
|
||||
"jsxSingleQuote": true,
|
||||
"trailingComma": "all",
|
||||
"bracketSpacing": true,
|
||||
"arrowParens": "always"
|
||||
}
|
@ -1 +1 @@
|
||||
import '@testing-library/jest-dom';
|
||||
import "@testing-library/jest-dom";
|
||||
|
@ -0,0 +1,4 @@
|
||||
type Place = {
|
||||
placeType: string;
|
||||
name: string;
|
||||
};
|
@ -0,0 +1,5 @@
|
||||
import { GetPlacesRO } from "../response-object/protocols";
|
||||
|
||||
type IGetPlacesRepo = () => Promise<GetPlacesRO>;
|
||||
|
||||
export default IGetPlacesRepo;
|
@ -0,0 +1,13 @@
|
||||
import { GetPlacesRO, GetPlacesResponse } from "./protocols";
|
||||
|
||||
const getPlacesRO = (placeResponse: GetPlacesResponse): GetPlacesRO => ({
|
||||
id: placeResponse._id,
|
||||
placeType: placeResponse.place_type,
|
||||
name: placeResponse.name,
|
||||
parentId: placeResponse.place_type,
|
||||
availableServices: placeResponse.available_services,
|
||||
createdAt: placeResponse.createdAt,
|
||||
updatedAt: placeResponse.updatedAt,
|
||||
})
|
||||
|
||||
export default getPlacesRO;
|
@ -0,0 +1,19 @@
|
||||
export type GetPlacesResponse = {
|
||||
_id: string;
|
||||
place_type: string;
|
||||
name: string;
|
||||
parent_id: string | null;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
available_services: string[];
|
||||
};
|
||||
|
||||
export type GetPlacesRO = {
|
||||
id: string;
|
||||
placeType: string;
|
||||
name: string;
|
||||
parentId: string | null;
|
||||
availableServices: string[];
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
};
|
@ -0,0 +1,25 @@
|
||||
import IGetPlacesRepo from "../../data/repository/IGetPlacesRepo";
|
||||
import { GetPlacesRO } from "../../data/response-object/protocols";
|
||||
import GettingPlacesUsecase from "../getPlaceUsecase";
|
||||
|
||||
const mockedRO: GetPlacesRO = {
|
||||
availableServices: [""],
|
||||
createdAt: "createdAt",
|
||||
id: "id",
|
||||
name: "name",
|
||||
parentId: null,
|
||||
placeType: "continent",
|
||||
updatedAt: "updatedTime",
|
||||
};
|
||||
const mockedRepo: IGetPlacesRepo = jest
|
||||
.fn()
|
||||
.mockImplementation(async () => mockedRO);
|
||||
|
||||
describe("getting places usecase tests", () => {
|
||||
it("call repository on execute usecase", async () => {
|
||||
const usecase = new GettingPlacesUsecase(mockedRepo);
|
||||
await usecase.execute();
|
||||
|
||||
expect(mockedRepo).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
@ -0,0 +1,19 @@
|
||||
import IGetPlacesRepo from "../data/repository/IGetPlacesRepo";
|
||||
import { GetPlacesRO } from "../data/response-object/protocols";
|
||||
|
||||
/**
|
||||
* this usecase is responsible for calling the repo and returning the places data from the repository
|
||||
*/
|
||||
class GettingPlacesUsecase {
|
||||
private repository: IGetPlacesRepo;
|
||||
|
||||
constructor(repository: IGetPlacesRepo) {
|
||||
this.repository = repository;
|
||||
}
|
||||
|
||||
async execute(): Promise<GetPlacesRO> {
|
||||
// call usecase and return the repo
|
||||
}
|
||||
}
|
||||
|
||||
export default GettingPlacesUsecase;
|
@ -1,8 +1,15 @@
|
||||
import axios, { AxiosRequestConfig } from 'axios';
|
||||
import { staticMessages } from '~/driven/utils/constants/staticMessages';
|
||||
import axios, { AxiosRequestConfig } from "axios";
|
||||
import { staticMessages } from "~/driven/utils/constants/staticMessages";
|
||||
|
||||
export class HTTPBoundary {
|
||||
async request<R>(options: AxiosRequestConfig) {
|
||||
async request<R>(customOptions: AxiosRequestConfig) {
|
||||
const options: AxiosRequestConfig = {
|
||||
...customOptions,
|
||||
headers: {
|
||||
...customOptions.headers,
|
||||
Authorization: `Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI4NXh0WnA5eThxVDBXVDkwUFpuUkRja3N4LWw0clVyM0tHQW5JSU9DckJNIn0.eyJleHAiOjE2ODQ1NzUyNDksImlhdCI6MTY4NDQ4ODg0OSwianRpIjoiYjI3MDUwMzYtMzMwZi00MTRkLWE2Y2QtNWRiYWUzOTRkMjczIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL3JlYWxtcy9kaXBhbF9kZXYiLCJhdWQiOiJhY2NvdW50Iiwic3ViIjoiY2RmYzY3YzQtZGJkOC00NGVhLWI0OWEtYjQ3MjZhMzNmOTAxIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiY29tZm9ydGVjaCIsInNlc3Npb25fc3RhdGUiOiJmMzBhYzJlOS04ZTAxLTQxYjItYmI2OS0yYmMyNGEwOGRjNGUiLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsiZGVmYXVsdC1yb2xlcy1tYXN0ZXIiLCJvZmZsaW5lX2FjY2VzcyIsInVtYV9hdXRob3JpemF0aW9uIl19LCJyZXNvdXJjZV9hY2Nlc3MiOnsiY29tZm9ydGVjaCI6eyJyb2xlcyI6WyJ1c2VyIiwib3BlcmF0b3IiXX0sImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsInNpZCI6ImYzMGFjMmU5LThlMDEtNDFiMi1iYjY5LTJiYzI0YTA4ZGM0ZSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwicHJlZmVycmVkX3VzZXJuYW1lIjoiKzc3Nzc3Nzc3Nzc3In0.tzM7W8szzcN1AK3XOtgUCGbHkmWd4bnqr-jvcwBICtNbl5Dty8RxK_ONFp6g5X8wI0pVPKx4qLvWkE7jXQcg1XDZW_H1V-ucZZ_a9POffDRZ5xSNcREnjfKhw3gvjK9YSSBeMf08abDexbVSJW4rbPxtmcO9WGdZN8C1k7O-_9VHz-3NBCq7vRYBNID--xVTga_MMv3mCORzHtUdx2D7B2d7YxBAjQs5x9JCl_eXuN_IHODc2HMww-s5akquzdEKGFSfASu30NpNZucbO9XyTMkAWuV-H9Xd73eq5o-tSd0jMOfY9G1it9xLAM2Gk4xmIuUA16aLnjY7_rmm3rOypw`,
|
||||
},
|
||||
};
|
||||
const response = await axios<R>(options);
|
||||
if (!response) throw new Error(staticMessages.service.errors[500]);
|
||||
|
||||
|
@ -1,4 +1,9 @@
|
||||
import { NavigateFunction, Outlet, useLocation, useNavigate } from 'react-router-dom';
|
||||
import {
|
||||
NavigateFunction,
|
||||
Outlet,
|
||||
useLocation,
|
||||
useNavigate,
|
||||
} from "react-router-dom";
|
||||
|
||||
class RouterBoundary {
|
||||
outletRoute = () => <Outlet />;
|
||||
|
@ -1,6 +1,6 @@
|
||||
import store from '../store/store';
|
||||
import userSlice from '../slices/userSlice';
|
||||
import { UserState } from '../slices/protocols/userSliceProtocols';
|
||||
import store from "../store/store";
|
||||
import userSlice from "../slices/userSlice";
|
||||
import { UserState } from "../slices/protocols/userSliceProtocols";
|
||||
|
||||
export const userAdapter = {
|
||||
get: store.getState().user,
|
||||
|
@ -1 +1 @@
|
||||
export { userAdapter } from './adapters/adapter';
|
||||
export { userAdapter } from "./adapters/adapter";
|
||||
|
@ -1,3 +1,3 @@
|
||||
import { UserModel } from '~/business-logic/generic/user/common/domain/model/userModel';
|
||||
import { UserModel } from "~/business-logic/generic/user/common/domain/model/userModel";
|
||||
|
||||
export type UserState = UserModel;
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { createSlice, SliceCaseReducers } from '@reduxjs/toolkit';
|
||||
import { UserState } from './protocols/userSliceProtocols';
|
||||
import { createSlice, SliceCaseReducers } from "@reduxjs/toolkit";
|
||||
import { UserState } from "./protocols/userSliceProtocols";
|
||||
|
||||
export const userStateName = 'user';
|
||||
export const userStateName = "user";
|
||||
const userSlice = createSlice<UserState, SliceCaseReducers<UserState>>({
|
||||
name: userStateName,
|
||||
initialState: null,
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { combineReducers, configureStore } from '@reduxjs/toolkit';
|
||||
import userSlice, { userStateName } from '../slices/userSlice';
|
||||
import { combineReducers, configureStore } from "@reduxjs/toolkit";
|
||||
import userSlice, { userStateName } from "../slices/userSlice";
|
||||
|
||||
const combinedReducers = combineReducers({
|
||||
[userStateName]: userSlice.reducer,
|
||||
|
@ -1,4 +1,4 @@
|
||||
import React from 'react'
|
||||
import React from "react";
|
||||
|
||||
interface IPrimaryButtonProps {
|
||||
title: string;
|
||||
@ -9,6 +9,11 @@ interface IPrimaryButtonProps {
|
||||
export default function PrimaryButton(props: IPrimaryButtonProps) {
|
||||
const { onClick, title, className } = props;
|
||||
return (
|
||||
<button onClick={onClick} className={`py-1 px-5 transition-all hover:bg-primary-300 bg-primary-main rounded-lg text-white text-center ${className}`}>{ title }</button>
|
||||
)
|
||||
<button
|
||||
onClick={onClick}
|
||||
className={`py-1 px-5 transition-all hover:bg-primary-300 bg-primary-main rounded-lg text-white text-center ${className}`}
|
||||
>
|
||||
{title}
|
||||
</button>
|
||||
);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
import React from 'react'
|
||||
import React from "react";
|
||||
|
||||
interface ISimpleInput {
|
||||
title: string;
|
||||
@ -9,8 +9,13 @@ export default function SimpleInput(props: ISimpleInput) {
|
||||
const { title, className } = props;
|
||||
return (
|
||||
<div className={`flex flex-col ${className}`}>
|
||||
<label className='mb-1 text-txt-second text-xs' htmlFor={title}>{ title }</label>
|
||||
<input className='bg-bg-gray h-11 rounded-lg focus:outline-0 px-2 text-txt-medium' id={title} />
|
||||
<label className="mb-1 text-txt-second text-xs" htmlFor={title}>
|
||||
{title}
|
||||
</label>
|
||||
<input
|
||||
className="bg-bg-gray h-11 rounded-lg focus:outline-0 px-2 text-txt-medium"
|
||||
id={title}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
);
|
||||
}
|
||||
|
@ -1,13 +1,17 @@
|
||||
import React from 'react'
|
||||
import React from "react";
|
||||
|
||||
interface IPageTitleProps {
|
||||
title: string;
|
||||
className?: string;
|
||||
title: string;
|
||||
className?: string;
|
||||
}
|
||||
|
||||
export default function PageTitle(props: IPageTitleProps) {
|
||||
const { title, className } = props;
|
||||
const { title, className } = props;
|
||||
return (
|
||||
<div className={`w-full shadow-sm shadow-txt-light font-semibold ${className}`}>{title}</div>
|
||||
)
|
||||
<div
|
||||
className={`w-full shadow-sm shadow-txt-light font-semibold ${className}`}
|
||||
>
|
||||
{title}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
@ -4,24 +4,22 @@ import { staticMessages } from "../constants/staticMessages";
|
||||
export const appConfig = {};
|
||||
|
||||
export const routes = {
|
||||
usersList: '/',
|
||||
createUser: '/create-user'
|
||||
usersList: "/",
|
||||
createUser: "/create-user",
|
||||
};
|
||||
|
||||
export const routesData = {
|
||||
usersList: {
|
||||
path: routes.usersList,
|
||||
icon: icons.users,
|
||||
title: staticMessages.global.users
|
||||
title: staticMessages.global.users,
|
||||
},
|
||||
createUser: {
|
||||
path: routes.createUser,
|
||||
icon: icons.createUser,
|
||||
title: staticMessages.global.createUser
|
||||
}
|
||||
}
|
||||
title: staticMessages.global.createUser,
|
||||
},
|
||||
};
|
||||
|
||||
const baseApiUrl = import.meta.env.BASE_API_URL;
|
||||
export const apiUrls = {
|
||||
|
||||
};
|
||||
export const apiUrls = {};
|
||||
|
@ -1,7 +1,7 @@
|
||||
const baseAssetsUrl = 'assets/';
|
||||
const baseIconsUrl = baseAssetsUrl + 'icons/';
|
||||
const baseAssetsUrl = "assets/";
|
||||
const baseIconsUrl = `${baseAssetsUrl}icons/`;
|
||||
export const icons = {
|
||||
logo: baseIconsUrl + 'logo.svg',
|
||||
users: baseIconsUrl + 'users.svg',
|
||||
createUser: baseIconsUrl + 'createuser.svg'
|
||||
}
|
||||
logo: `${baseIconsUrl}logo.svg`,
|
||||
users: `${baseIconsUrl}users.svg`,
|
||||
createUser: `${baseIconsUrl}createuser.svg`,
|
||||
};
|
||||
|
@ -1,24 +1,24 @@
|
||||
export const staticMessages = {
|
||||
global: {
|
||||
errors: {
|
||||
input: 'please fill all inputs correctly',
|
||||
input: "please fill all inputs correctly",
|
||||
},
|
||||
users: 'Users',
|
||||
submit: 'Submit',
|
||||
fistname: 'Firstname',
|
||||
lastname: 'Lastname',
|
||||
place_id: 'Place id',
|
||||
title: 'title',
|
||||
status: 'Status',
|
||||
address: 'Address',
|
||||
qrCode: 'qrCode',
|
||||
createUser: 'Create user',
|
||||
phoneNumber: 'Phone Number'
|
||||
users: "Users",
|
||||
submit: "Submit",
|
||||
fistname: "Firstname",
|
||||
lastname: "Lastname",
|
||||
place_id: "Place id",
|
||||
title: "title",
|
||||
status: "Status",
|
||||
address: "Address",
|
||||
qrCode: "qrCode",
|
||||
createUser: "Create user",
|
||||
phoneNumber: "Phone Number",
|
||||
},
|
||||
service: {
|
||||
errors: {
|
||||
500: 'server not respond please try again later!',
|
||||
401: 'Authentication error!',
|
||||
500: "server not respond please try again later!",
|
||||
401: "Authentication error!",
|
||||
},
|
||||
},
|
||||
};
|
||||
|
@ -1,4 +1,7 @@
|
||||
import { errorHandlingStateTypes, UIErrorHandling } from './protocols/globalHelpersProtocols';
|
||||
import {
|
||||
errorHandlingStateTypes,
|
||||
UIErrorHandling,
|
||||
} from "./protocols/globalHelpersProtocols";
|
||||
|
||||
export const UIErrorHandlingFactory = <DATA_RESPONSE>({
|
||||
state,
|
||||
|
@ -1,7 +1,7 @@
|
||||
export enum errorHandlingStateTypes {
|
||||
error = 'error',
|
||||
warning = 'warning',
|
||||
success = 'success',
|
||||
error = "error",
|
||||
warning = "warning",
|
||||
success = "success",
|
||||
}
|
||||
|
||||
export type UIErrorHandling<DATA_RESPONSE> = {
|
||||
|
@ -1,9 +1,9 @@
|
||||
export type RequestMethods = 'get' | 'post' | 'put' | 'delete';
|
||||
export type RequestMethods = "get" | "post" | "put" | "delete";
|
||||
|
||||
export type apiGlobalResponseObject<DataType> = {
|
||||
type: 'Success' | 'client Error' | string;
|
||||
type: "Success" | "client Error" | string;
|
||||
status: 200 | 400 | 401 | 500 | number;
|
||||
message: string;
|
||||
description: string;
|
||||
data: DataType;
|
||||
}
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
import TableRow from "./infra/TableRowInfra";
|
||||
|
||||
export default TableRow;
|
||||
export default TableRow;
|
||||
|
@ -1,13 +1,19 @@
|
||||
import React from 'react'
|
||||
import { ITableRowInfra } from './protocols'
|
||||
import useTableRowVM from '../viewmodel/tableRowVM';
|
||||
import TableRowView from '../view/TableRow';
|
||||
import React from "react";
|
||||
import useTableRowVM from "../viewmodel/tableRowVM";
|
||||
import TableRowView from "../view/TableRow";
|
||||
import { ITableRowInfra } from "./protocols";
|
||||
|
||||
export default function TableRow(props: ITableRowInfra) {
|
||||
const { rowData, selectedRowId, setSelectedRowId } = props;
|
||||
const { rowId } = rowData;
|
||||
|
||||
const { isRowSelected } = useTableRowVM({selectedRowId, rowId});
|
||||
const { isRowSelected } = useTableRowVM({ selectedRowId, rowId });
|
||||
|
||||
return <TableRowView isSelected={isRowSelected} rowData={rowData} setSelectedRowId={setSelectedRowId}/>
|
||||
return (
|
||||
<TableRowView
|
||||
isSelected={isRowSelected}
|
||||
rowData={rowData}
|
||||
setSelectedRowId={setSelectedRowId}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
@ -3,6 +3,6 @@ export interface ITableRowInfra {
|
||||
rowData: {
|
||||
rowItemsTitle: string[];
|
||||
rowId: string;
|
||||
}
|
||||
setSelectedRowId: React.Dispatch<React.SetStateAction<string>>
|
||||
}
|
||||
};
|
||||
setSelectedRowId: React.Dispatch<React.SetStateAction<string>>;
|
||||
}
|
||||
|
@ -1,15 +1,20 @@
|
||||
import React from 'react'
|
||||
import RowItem from './table-row-item/view/RowItem';
|
||||
import { ITableRowProps } from './protocols';
|
||||
import React from "react";
|
||||
import RowItem from "./table-row-item/view/RowItem";
|
||||
import { ITableRowProps } from "./protocols";
|
||||
|
||||
export default function TableRowView(props: ITableRowProps) {
|
||||
const { isSelected, setSelectedRowId, rowData } = props;
|
||||
const { rowId, rowItemsTitle } = rowData;
|
||||
const columns = rowItemsTitle.map((rowItemTitle, index) => {
|
||||
return <RowItem key={rowItemTitle} hasCheckbox={index === 0} isSelected={isSelected} title={rowItemTitle} />
|
||||
})
|
||||
return (
|
||||
<RowItem
|
||||
key={rowItemTitle}
|
||||
hasCheckbox={index === 0}
|
||||
isSelected={isSelected}
|
||||
title={rowItemTitle}
|
||||
/>
|
||||
);
|
||||
});
|
||||
|
||||
return (
|
||||
<tr onClick={() => setSelectedRowId(rowId)}>{ columns }</tr>
|
||||
)
|
||||
return <tr onClick={() => setSelectedRowId(rowId)}>{columns}</tr>;
|
||||
}
|
||||
|
@ -3,6 +3,6 @@ export interface ITableRowProps {
|
||||
rowData: {
|
||||
rowItemsTitle: string[];
|
||||
rowId: string;
|
||||
}
|
||||
setSelectedRowId: React.Dispatch<React.SetStateAction<string>>
|
||||
}
|
||||
};
|
||||
setSelectedRowId: React.Dispatch<React.SetStateAction<string>>;
|
||||
}
|
||||
|
@ -1,24 +1,31 @@
|
||||
import React, { useState } from 'react'
|
||||
import React, { useState } from "react";
|
||||
|
||||
interface IRowItemProp {
|
||||
title: string;
|
||||
hasCheckbox: boolean;
|
||||
isSelected: boolean;
|
||||
isSelected: boolean;
|
||||
}
|
||||
|
||||
export default function RowItem(props: IRowItemProp) {
|
||||
const { title, hasCheckbox, isSelected } = props;
|
||||
return (
|
||||
<td className={`px-1 py-2 ${isSelected ? 'bg-primary-100' : ''}`}>
|
||||
<div className='w-full flex'>
|
||||
{
|
||||
hasCheckbox &&
|
||||
<span className={`checkmak-container flex justify-center items-center mr-2 transition-all ${isSelected ? 'opacity-100' : 'opacity-0'}`}>
|
||||
<span className={`${isSelected ? 'visible' : 'hidden'} transition-all`}>✓</span>
|
||||
</span>
|
||||
}
|
||||
{ title }
|
||||
<td className={`px-1 py-2 ${isSelected ? "bg-primary-100" : ""}`}>
|
||||
<div className="w-full flex">
|
||||
{hasCheckbox && (
|
||||
<span
|
||||
className={`checkmak-container flex justify-center items-center mr-2 transition-all ${
|
||||
isSelected ? "opacity-100" : "opacity-0"
|
||||
}`}
|
||||
>
|
||||
<span
|
||||
className={`${isSelected ? "visible" : "hidden"} transition-all`}
|
||||
>
|
||||
✓
|
||||
</span>
|
||||
</span>
|
||||
)}
|
||||
{title}
|
||||
</div>
|
||||
</td>
|
||||
)
|
||||
);
|
||||
}
|
||||
|
@ -5,4 +5,4 @@ export interface IUserTableRowVM {
|
||||
|
||||
export type tableRowVMReturnType = {
|
||||
isRowSelected: boolean;
|
||||
}
|
||||
};
|
||||
|
@ -3,8 +3,8 @@ import { IUserTableRowVM, tableRowVMReturnType } from "./protocols";
|
||||
const useTableRowVM = (dependencies: IUserTableRowVM): tableRowVMReturnType => {
|
||||
const { rowId, selectedRowId } = dependencies;
|
||||
return {
|
||||
isRowSelected: rowId === selectedRowId
|
||||
}
|
||||
}
|
||||
isRowSelected: rowId === selectedRowId,
|
||||
};
|
||||
};
|
||||
|
||||
export default useTableRowVM;
|
||||
export default useTableRowVM;
|
||||
|
@ -1,3 +1,3 @@
|
||||
import CreateUser from "./infra/CreateUser";
|
||||
|
||||
export default CreateUser;
|
||||
export default CreateUser;
|
||||
|
@ -1,6 +1,6 @@
|
||||
import React from 'react'
|
||||
import CreateUserView from '../view/CreateUserView'
|
||||
import React from "react";
|
||||
import CreateUserView from "../view/CreateUserView";
|
||||
|
||||
export default function CreateUser() {
|
||||
return <CreateUserView />
|
||||
return <CreateUserView />;
|
||||
}
|
||||
|
@ -1,19 +1,31 @@
|
||||
import React from 'react'
|
||||
import PrimaryButton from '~/driven/utils/components/buttons/primary-button/PrimaryButton'
|
||||
import SimpleInput from '~/driven/utils/components/inputs/simple-input/SimpleInput'
|
||||
import { staticMessages } from '~/driven/utils/constants/staticMessages'
|
||||
import React from "react";
|
||||
import PrimaryButton from "~/driven/utils/components/buttons/primary-button/PrimaryButton";
|
||||
import SimpleInput from "~/driven/utils/components/inputs/simple-input/SimpleInput";
|
||||
import { staticMessages } from "~/driven/utils/constants/staticMessages";
|
||||
|
||||
export default function CreateUserView() {
|
||||
return (
|
||||
<div className='px-4 my-8'>
|
||||
<div className='flex flex-wrap w-full gap-4'>
|
||||
<SimpleInput title={staticMessages.global.fistname} className='mb-4 w-[48%]' />
|
||||
<SimpleInput title={staticMessages.global.lastname} className='mb-4 w-[48%]'/>
|
||||
<SimpleInput title={staticMessages.global.phoneNumber} className='mb-4 w-[48%]'/>
|
||||
<div className="px-4 my-8">
|
||||
<div className="flex flex-wrap w-full gap-4">
|
||||
<SimpleInput
|
||||
title={staticMessages.global.fistname}
|
||||
className="mb-4 w-[48%]"
|
||||
/>
|
||||
<SimpleInput
|
||||
title={staticMessages.global.lastname}
|
||||
className="mb-4 w-[48%]"
|
||||
/>
|
||||
<SimpleInput
|
||||
title={staticMessages.global.phoneNumber}
|
||||
className="mb-4 w-[48%]"
|
||||
/>
|
||||
</div>
|
||||
<div className='flex'>
|
||||
<PrimaryButton onClick={() => {}} title={staticMessages.global.submit} />
|
||||
<div className="flex">
|
||||
<PrimaryButton
|
||||
onClick={() => {}}
|
||||
title={staticMessages.global.submit}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
);
|
||||
}
|
||||
|
@ -1,3 +1,3 @@
|
||||
import PlacesList from "./infra/PlacesList";
|
||||
|
||||
export default PlacesList;
|
||||
export default PlacesList;
|
||||
|
@ -1,8 +1,13 @@
|
||||
import React from 'react'
|
||||
import PlacesListView from '../view/PlacesListView'
|
||||
import usePlacesListVM from '../viewmodel/placesListVM'
|
||||
import React from "react";
|
||||
import PlacesListView from "../view/PlacesListView";
|
||||
import usePlacesListVM from "../viewmodel/placesListVM";
|
||||
|
||||
export default function PlacessList() {
|
||||
const { selectedRowId, setSelectedRowId } = usePlacesListVM()
|
||||
return <PlacesListView selectedRowId={selectedRowId} setSelectedRowId={setSelectedRowId} />
|
||||
const { selectedRowId, setSelectedRowId } = usePlacesListVM();
|
||||
return (
|
||||
<PlacesListView
|
||||
selectedRowId={selectedRowId}
|
||||
setSelectedRowId={setSelectedRowId}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
@ -1,3 +1 @@
|
||||
export interface IPlacesListInfraProps {
|
||||
|
||||
}
|
||||
export interface IPlacesListInfraProps {}
|
||||
|
@ -1,72 +1,71 @@
|
||||
import React from 'react'
|
||||
import RowItem from '../../common/table-row/view/table-row-item/view/RowItem'
|
||||
import TableRow from '../../common/table-row'
|
||||
import { IPlacesListProps } from './protocols'
|
||||
import { staticMessages } from '~/driven/utils/constants/staticMessages';
|
||||
|
||||
import React from "react";
|
||||
import { staticMessages } from "~/driven/utils/constants/staticMessages";
|
||||
import RowItem from "../../common/table-row/view/table-row-item/view/RowItem";
|
||||
import TableRow from "../../common/table-row";
|
||||
import { IPlacesListProps } from "./protocols";
|
||||
|
||||
export default function UsersListView(props: IPlacesListProps) {
|
||||
const { selectedRowId, setSelectedRowId } = props;
|
||||
const { selectedRowId, setSelectedRowId } = props;
|
||||
|
||||
const rows = () => {
|
||||
const placesdata = [
|
||||
{
|
||||
id: '1',
|
||||
place_id: '6440020b89366fdcaf15a8c2',
|
||||
title: 'flat demoplace ',
|
||||
status: 'demo',
|
||||
address: 'demoplace'
|
||||
},
|
||||
{
|
||||
id: '2',
|
||||
place_id: '6440020b89366fdcaf15asdfa',
|
||||
title: 'flat demoplace second ',
|
||||
status: 'demo second',
|
||||
address: 'demoplace second'
|
||||
}
|
||||
]
|
||||
const rows = () => {
|
||||
const placesdata = [
|
||||
{
|
||||
id: "1",
|
||||
place_id: "6440020b89366fdcaf15a8c2",
|
||||
title: "flat demoplace ",
|
||||
status: "demo",
|
||||
address: "demoplace",
|
||||
},
|
||||
{
|
||||
id: "2",
|
||||
place_id: "6440020b89366fdcaf15asdfa",
|
||||
title: "flat demoplace second ",
|
||||
status: "demo second",
|
||||
address: "demoplace second",
|
||||
},
|
||||
];
|
||||
|
||||
const rowData = {
|
||||
rowItemsTitle: placesdata.map(places => {
|
||||
return [
|
||||
places.id,
|
||||
places.title,
|
||||
places.status,
|
||||
places.address,
|
||||
]
|
||||
}),
|
||||
rowId: placesdata[0].id
|
||||
}
|
||||
const rowData = {
|
||||
rowItemsTitle: placesdata.map((places) => {
|
||||
return [places.id, places.title, places.status, places.address];
|
||||
}),
|
||||
rowId: placesdata[0].id,
|
||||
};
|
||||
|
||||
return placesdata.map(places => {
|
||||
const rowData = {
|
||||
rowItemsTitle: [
|
||||
places.id,
|
||||
places.title,
|
||||
places.status,
|
||||
places.address,
|
||||
''
|
||||
],
|
||||
rowId: places.id,
|
||||
}
|
||||
return <TableRow key={rowData.rowId} rowData={rowData} selectedRowId={selectedRowId} setSelectedRowId={setSelectedRowId} />
|
||||
})
|
||||
}
|
||||
return placesdata.map((places) => {
|
||||
const rowData = {
|
||||
rowItemsTitle: [
|
||||
places.id,
|
||||
places.title,
|
||||
places.status,
|
||||
places.address,
|
||||
"",
|
||||
],
|
||||
rowId: places.id,
|
||||
};
|
||||
return (
|
||||
<TableRow
|
||||
key={rowData.rowId}
|
||||
rowData={rowData}
|
||||
selectedRowId={selectedRowId}
|
||||
setSelectedRowId={setSelectedRowId}
|
||||
/>
|
||||
);
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<table className='table-auto rounded-md w-full text-sm'>
|
||||
<thead className='text-txt-medium font-bold'>
|
||||
<tr>
|
||||
<th className='py-3'>{staticMessages.global.place_id}</th>
|
||||
<th className='py-3'>{staticMessages.global.title}</th>
|
||||
<th className='py-3'>{staticMessages.global.status}</th>
|
||||
<th className='py-3'>{staticMessages.global.address}</th>
|
||||
<th className='py-3'>{staticMessages.global.qrCode}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{ rows() }
|
||||
</tbody>
|
||||
<table className="table-auto rounded-md w-full text-sm">
|
||||
<thead className="text-txt-medium font-bold">
|
||||
<tr>
|
||||
<th className="py-3">{staticMessages.global.place_id}</th>
|
||||
<th className="py-3">{staticMessages.global.title}</th>
|
||||
<th className="py-3">{staticMessages.global.status}</th>
|
||||
<th className="py-3">{staticMessages.global.address}</th>
|
||||
<th className="py-3">{staticMessages.global.qrCode}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>{rows()}</tbody>
|
||||
</table>
|
||||
)
|
||||
);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
export interface IPlacesListProps {
|
||||
selectedRowId: string;
|
||||
setSelectedRowId: React.Dispatch<React.SetStateAction<string>>;
|
||||
}
|
||||
}
|
||||
|
@ -2,12 +2,12 @@ import { useState } from "react";
|
||||
import { placesListReturnType } from "./protocols";
|
||||
|
||||
const usePlacesListVM = (): placesListReturnType => {
|
||||
const [ selectedRowId, setSelectedRowId ] = useState<string>('');
|
||||
const [selectedRowId, setSelectedRowId] = useState<string>("");
|
||||
|
||||
return {
|
||||
selectedRowId,
|
||||
setSelectedRowId,
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
export default usePlacesListVM;
|
||||
export default usePlacesListVM;
|
||||
|
@ -1,9 +1,8 @@
|
||||
import React from "react";
|
||||
|
||||
export interface IPlacesListVM {
|
||||
}
|
||||
export interface IPlacesListVM {}
|
||||
|
||||
export type placesListReturnType = {
|
||||
selectedRowId: string;
|
||||
setSelectedRowId: React.Dispatch<React.SetStateAction<string>>;
|
||||
}
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
import UsersList from "./infra/UsersList";
|
||||
|
||||
export default UsersList;
|
||||
export default UsersList;
|
||||
|
@ -1,8 +1,13 @@
|
||||
import React from 'react'
|
||||
import useUsersListVM from '../viewmodel/usersListVM'
|
||||
import UsersListView from '../view/UsersListView'
|
||||
import React from "react";
|
||||
import useUsersListVM from "../viewmodel/usersListVM";
|
||||
import UsersListView from "../view/UsersListView";
|
||||
|
||||
export default function UsersList() {
|
||||
const { selectedRowId, setSelectedRowId } = useUsersListVM()
|
||||
return <UsersListView selectedRowId={selectedRowId} setSelectedRowId={setSelectedRowId} />
|
||||
const { selectedRowId, setSelectedRowId } = useUsersListVM();
|
||||
return (
|
||||
<UsersListView
|
||||
selectedRowId={selectedRowId}
|
||||
setSelectedRowId={setSelectedRowId}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
@ -1,3 +1 @@
|
||||
export interface IUsersListInfraProps {
|
||||
|
||||
}
|
||||
export interface IUsersListInfraProps {}
|
||||
|
@ -1,60 +1,58 @@
|
||||
import React from 'react'
|
||||
import RowItem from '../../common/table-row/view/table-row-item/view/RowItem'
|
||||
import TableRow from '../../common/table-row'
|
||||
import { IUserListProps } from './protocols'
|
||||
import { staticMessages } from '~/driven/utils/constants/staticMessages';
|
||||
|
||||
import React from "react";
|
||||
import { staticMessages } from "~/driven/utils/constants/staticMessages";
|
||||
import RowItem from "../../common/table-row/view/table-row-item/view/RowItem";
|
||||
import TableRow from "../../common/table-row";
|
||||
import { IUserListProps } from "./protocols";
|
||||
|
||||
export default function UsersListView(props: IUserListProps) {
|
||||
const { selectedRowId, setSelectedRowId } = props;
|
||||
const { selectedRowId, setSelectedRowId } = props;
|
||||
|
||||
const rows = () => {
|
||||
const userdata = [
|
||||
{
|
||||
id: '1',
|
||||
firstname: 'behnam',
|
||||
lastname: 'rahimpour'
|
||||
},
|
||||
{
|
||||
id: '2',
|
||||
firstname: 'Salar',
|
||||
lastname: 'Sali'
|
||||
}
|
||||
]
|
||||
const rows = () => {
|
||||
const userdata = [
|
||||
{
|
||||
id: "1",
|
||||
firstname: "behnam",
|
||||
lastname: "rahimpour",
|
||||
},
|
||||
{
|
||||
id: "2",
|
||||
firstname: "Salar",
|
||||
lastname: "Sali",
|
||||
},
|
||||
];
|
||||
|
||||
const rowData = {
|
||||
rowItemsTitle: userdata.map(user => {
|
||||
return [
|
||||
user.firstname,
|
||||
user.lastname
|
||||
]
|
||||
}),
|
||||
rowId: userdata[0].id
|
||||
}
|
||||
const rowData = {
|
||||
rowItemsTitle: userdata.map((user) => {
|
||||
return [user.firstname, user.lastname];
|
||||
}),
|
||||
rowId: userdata[0].id,
|
||||
};
|
||||
|
||||
return userdata.map(user => {
|
||||
const rowData = {
|
||||
rowItemsTitle: [
|
||||
user.firstname,
|
||||
user.lastname
|
||||
],
|
||||
rowId: user.id,
|
||||
}
|
||||
return <TableRow key={rowData.rowId} rowData={rowData} selectedRowId={selectedRowId} setSelectedRowId={setSelectedRowId} />
|
||||
})
|
||||
}
|
||||
return userdata.map((user) => {
|
||||
const rowData = {
|
||||
rowItemsTitle: [user.firstname, user.lastname],
|
||||
rowId: user.id,
|
||||
};
|
||||
return (
|
||||
<TableRow
|
||||
key={rowData.rowId}
|
||||
rowData={rowData}
|
||||
selectedRowId={selectedRowId}
|
||||
setSelectedRowId={setSelectedRowId}
|
||||
/>
|
||||
);
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<table className='table-auto rounded-md w-full text-sm'>
|
||||
<thead className='text-txt-medium font-bold'>
|
||||
<tr>
|
||||
<th className='py-3'>{staticMessages.global.fistname}</th>
|
||||
<th className='py-3'>{staticMessages.global.lastname}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{ rows() }
|
||||
</tbody>
|
||||
<table className="table-auto rounded-md w-full text-sm">
|
||||
<thead className="text-txt-medium font-bold">
|
||||
<tr>
|
||||
<th className="py-3">{staticMessages.global.fistname}</th>
|
||||
<th className="py-3">{staticMessages.global.lastname}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>{rows()}</tbody>
|
||||
</table>
|
||||
)
|
||||
);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
export interface IUserListProps {
|
||||
selectedRowId: string;
|
||||
setSelectedRowId: React.Dispatch<React.SetStateAction<string>>;
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,8 @@
|
||||
import React from "react";
|
||||
|
||||
export interface IUsersListVM {
|
||||
}
|
||||
export interface IUsersListVM {}
|
||||
|
||||
export type userListReturnType = {
|
||||
selectedRowId: string;
|
||||
setSelectedRowId: React.Dispatch<React.SetStateAction<string>>;
|
||||
}
|
||||
};
|
||||
|
@ -2,12 +2,12 @@ import { useState } from "react";
|
||||
import { userListReturnType } from "./protocols";
|
||||
|
||||
const useUsersListVM = (): userListReturnType => {
|
||||
const [ selectedRowId, setSelectedRowId ] = useState<string>('');
|
||||
const [selectedRowId, setSelectedRowId] = useState<string>("");
|
||||
|
||||
return {
|
||||
selectedRowId,
|
||||
setSelectedRowId,
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
export default useUsersListVM;
|
||||
export default useUsersListVM;
|
||||
|
@ -1,3 +1,3 @@
|
||||
import Sidebar from "./view/Sidebar";
|
||||
|
||||
export default Sidebar;
|
||||
export default Sidebar;
|
||||
|
@ -1,29 +1,35 @@
|
||||
import React from 'react'
|
||||
import { Link, useLocation } from 'react-router-dom'
|
||||
import { routesData } from '~/driven/utils/configs/appConfig'
|
||||
import { icons } from '~/driven/utils/constants/assertUrls'
|
||||
import React from "react";
|
||||
import { Link, useLocation } from "react-router-dom";
|
||||
import { routesData } from "~/driven/utils/configs/appConfig";
|
||||
import { icons } from "~/driven/utils/constants/assertUrls";
|
||||
|
||||
export default function Sidebar() {
|
||||
const isCurrentPage = useLocation()
|
||||
const isCurrentPage = useLocation();
|
||||
|
||||
const pages = Object.keys(routesData).map(routeKey => {
|
||||
const key = routeKey as keyof typeof routesData
|
||||
const pages = Object.keys(routesData).map((routeKey) => {
|
||||
const key = routeKey as keyof typeof routesData;
|
||||
return (
|
||||
<Link key={key} to={routesData[key].path} className={`flex text-white mb-6 text-sm w-full py-2 pl-2 rounded-lg ${ isCurrentPage.pathname === routesData[key].path ? 'bg-primary-300' : ''}`}>
|
||||
<img src={routesData[key].icon} className='mr-2'/>
|
||||
<div>{routesData[key].title}</div>
|
||||
</Link>
|
||||
)
|
||||
})
|
||||
<Link
|
||||
key={key}
|
||||
to={routesData[key].path}
|
||||
className={`flex text-white mb-6 text-sm w-full py-2 pl-2 rounded-lg ${
|
||||
isCurrentPage.pathname === routesData[key].path
|
||||
? "bg-primary-300"
|
||||
: ""
|
||||
}`}
|
||||
>
|
||||
<img src={routesData[key].icon} className="mr-2" />
|
||||
<div>{routesData[key].title}</div>
|
||||
</Link>
|
||||
);
|
||||
});
|
||||
|
||||
return (
|
||||
<aside className='w-[15rem] min-w-[10rem] [background:var(--color-gradient-primary-dark)] p-4 pt-6'>
|
||||
<div className='logo'>
|
||||
<img src={icons.logo} alt="logo icon" />
|
||||
</div>
|
||||
<div className='mt-14 flex flex-col items-baseline'>
|
||||
{ pages }
|
||||
</div>
|
||||
<aside className="w-[15rem] min-w-[10rem] [background:var(--color-gradient-primary-dark)] p-4 pt-6">
|
||||
<div className="logo">
|
||||
<img src={icons.logo} alt="logo icon" />
|
||||
</div>
|
||||
<div className="mt-14 flex flex-col items-baseline">{pages}</div>
|
||||
</aside>
|
||||
)
|
||||
);
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { BrowserRouter as RouterWrapper } from 'react-router-dom';
|
||||
import Router from './Router/Router';
|
||||
import './style/App.css';
|
||||
import { BrowserRouter as RouterWrapper } from "react-router-dom";
|
||||
import Router from "./Router/Router";
|
||||
import "./style/App.css";
|
||||
|
||||
function App() {
|
||||
return (
|
||||
|
@ -1,19 +1,19 @@
|
||||
import { Navigate, Route, Routes, useLocation } from 'react-router-dom';
|
||||
import Home from '~/driving/main/pages';
|
||||
import { routes } from '~/driven/utils/configs/appConfig';
|
||||
import CreateUser from '../pages/CreateUser';
|
||||
import MainPageLayout from '../pages/layouts/MainPageLayout';
|
||||
import { Navigate, Route, Routes, useLocation } from "react-router-dom";
|
||||
import Home from "~/driving/main/pages";
|
||||
import { routes } from "~/driven/utils/configs/appConfig";
|
||||
import CreateUser from "../pages/CreateUser";
|
||||
import MainPageLayout from "../pages/layouts/MainPageLayout";
|
||||
|
||||
export default function Router() {
|
||||
const location = useLocation();
|
||||
|
||||
return (
|
||||
<Routes location={location} key={location.key}>
|
||||
<Route element={<MainPageLayout />} >
|
||||
<Route element={<MainPageLayout />}>
|
||||
<Route index element={<Home />} />
|
||||
<Route path={routes.createUser} element={<CreateUser />} />
|
||||
</Route>
|
||||
<Route path='*' element={<Navigate to={routes.usersList} replace />} />
|
||||
<Route path="*" element={<Navigate to={routes.usersList} replace />} />
|
||||
</Routes>
|
||||
);
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
import ReactDOM from 'react-dom/client';
|
||||
import { Provider } from 'react-redux';
|
||||
import App from './App';
|
||||
import store from '~/driven/boundaries/state-management-boundary/store/store';
|
||||
import ReactDOM from "react-dom/client";
|
||||
import { Provider } from "react-redux";
|
||||
import store from "~/driven/boundaries/state-management-boundary/store/store";
|
||||
import App from "./App";
|
||||
|
||||
ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
|
||||
ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
|
||||
<Provider store={store}>
|
||||
<App />
|
||||
</Provider>,
|
||||
</Provider>
|
||||
);
|
||||
|
@ -1,13 +1,16 @@
|
||||
import React from 'react'
|
||||
import PageTitle from '~/driven/utils/components/page-title/pageTitle'
|
||||
import { staticMessages } from '~/driven/utils/constants/staticMessages'
|
||||
import CreateUser from '~/driving/application/core/create-user'
|
||||
import React from "react";
|
||||
import PageTitle from "~/driven/utils/components/page-title/pageTitle";
|
||||
import { staticMessages } from "~/driven/utils/constants/staticMessages";
|
||||
import CreateUser from "~/driving/application/core/create-user";
|
||||
|
||||
export default function CreateUserPage() {
|
||||
return (
|
||||
<>
|
||||
<PageTitle className='px-4 py-5' title={staticMessages.global.createUser} />
|
||||
<PageTitle
|
||||
className="px-4 py-5"
|
||||
title={staticMessages.global.createUser}
|
||||
/>
|
||||
<CreateUser />
|
||||
</>
|
||||
)
|
||||
);
|
||||
}
|
||||
|
@ -1,23 +1,28 @@
|
||||
import React from 'react';
|
||||
import PrimaryButton from '~/driven/utils/components/buttons/primary-button/PrimaryButton';
|
||||
import PageTitle from '~/driven/utils/components/page-title/pageTitle';
|
||||
import { staticMessages } from '~/driven/utils/constants/staticMessages';
|
||||
import PlacesList from '~/driving/application/core/places-list';
|
||||
import UsersList from '~/driving/application/core/users-list';
|
||||
import Sidebar from '~/driving/application/support/sidebar';
|
||||
import React from "react";
|
||||
import PrimaryButton from "~/driven/utils/components/buttons/primary-button/PrimaryButton";
|
||||
import PageTitle from "~/driven/utils/components/page-title/pageTitle";
|
||||
import { staticMessages } from "~/driven/utils/constants/staticMessages";
|
||||
import PlacesList from "~/driving/application/core/places-list";
|
||||
import UsersList from "~/driving/application/core/users-list";
|
||||
import Sidebar from "~/driving/application/support/sidebar";
|
||||
|
||||
export default function index() {
|
||||
return (
|
||||
<>
|
||||
<PageTitle className='px-4 py-5' title={staticMessages.global.users} /><div className='container mx-auto px-4'>
|
||||
<div className='w-full flex flex-row-reverse items-center py-2'>
|
||||
<PrimaryButton className='text-sm' title={staticMessages.global.submit} onClick={() => { } } />
|
||||
<PageTitle className="px-4 py-5" title={staticMessages.global.users} />
|
||||
<div className="container mx-auto px-4">
|
||||
<div className="w-full flex flex-row-reverse items-center py-2">
|
||||
<PrimaryButton
|
||||
className="text-sm"
|
||||
title={staticMessages.global.submit}
|
||||
onClick={() => {}}
|
||||
/>
|
||||
</div>
|
||||
<div className="md:grid-cols-2 gap-x-4 grid grid-cols-1 mx-auto">
|
||||
<UsersList />
|
||||
<PlacesList />
|
||||
</div>
|
||||
</div>
|
||||
<div className='md:grid-cols-2 gap-x-4 grid grid-cols-1 mx-auto'>
|
||||
<UsersList />
|
||||
<PlacesList />
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
@ -1,14 +1,14 @@
|
||||
import React from 'react'
|
||||
import { Outlet } from 'react-router-dom'
|
||||
import Sidebar from '~/driving/application/support/sidebar'
|
||||
import React from "react";
|
||||
import { Outlet } from "react-router-dom";
|
||||
import Sidebar from "~/driving/application/support/sidebar";
|
||||
|
||||
export default function MainPageLayout() {
|
||||
return (
|
||||
<div className='flex flex-nowrap h-screen'>
|
||||
<div className="flex flex-nowrap h-screen">
|
||||
<Sidebar />
|
||||
<main className='dipal-panel w-full text-black bg-white h-fit'>
|
||||
<main className="dipal-panel w-full text-black bg-white h-fit">
|
||||
<Outlet />
|
||||
</main>
|
||||
</main>
|
||||
</div>
|
||||
)
|
||||
);
|
||||
}
|
||||
|
@ -3,7 +3,8 @@
|
||||
"target": "esnext",
|
||||
"module": "esnext",
|
||||
"types": [
|
||||
"node"
|
||||
"node",
|
||||
"jest"
|
||||
],
|
||||
"useDefineForClassFields": true,
|
||||
"lib": ["DOM", "DOM.Iterable", "ESNext"],
|
||||
|
@ -1,16 +1,32 @@
|
||||
import { defineConfig } from 'vite'
|
||||
import react from '@vitejs/plugin-react'
|
||||
import {defineConfig, loadEnv} from 'vite';
|
||||
import react from '@vitejs/plugin-react';
|
||||
import path from 'path';
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig({
|
||||
plugins: [react()],
|
||||
resolve: {
|
||||
alias: {
|
||||
'~': path.resolve(__dirname, './src'),
|
||||
export default defineConfig(({mode}) => {
|
||||
const env = loadEnv(mode, process.cwd())
|
||||
|
||||
// expose .env as process.env instead of import.meta since jest does not import meta yet
|
||||
const envWithProcessPrefix = Object.entries(env).reduce(
|
||||
(prev, [key, val]) => {
|
||||
return {
|
||||
...prev,
|
||||
[ key]: `${val}`,
|
||||
}
|
||||
},
|
||||
},
|
||||
server: {
|
||||
host: true,
|
||||
},
|
||||
})
|
||||
{},
|
||||
)
|
||||
|
||||
return {
|
||||
plugins: [react()],
|
||||
resolve: {
|
||||
alias: {
|
||||
'~': path.resolve(__dirname, './src'),
|
||||
},
|
||||
},
|
||||
server: {
|
||||
host: true,
|
||||
},
|
||||
define: {'process.env': {...envWithProcessPrefix}}
|
||||
}
|
||||
});
|
||||
|
363
yarn.lock
363
yarn.lock
@ -22,11 +22,23 @@
|
||||
dependencies:
|
||||
"@babel/highlight" "^7.18.6"
|
||||
|
||||
"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5":
|
||||
"@babel/code-frame@^7.21.4":
|
||||
version "7.21.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39"
|
||||
integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==
|
||||
dependencies:
|
||||
"@babel/highlight" "^7.18.6"
|
||||
|
||||
"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5":
|
||||
version "7.21.0"
|
||||
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz"
|
||||
integrity sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==
|
||||
|
||||
"@babel/compat-data@^7.21.5":
|
||||
version "7.21.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.7.tgz#61caffb60776e49a57ba61a88f02bedd8714f6bc"
|
||||
integrity sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA==
|
||||
|
||||
"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.20.12":
|
||||
version "7.21.0"
|
||||
resolved "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz"
|
||||
@ -58,6 +70,16 @@
|
||||
"@jridgewell/trace-mapping" "^0.3.17"
|
||||
jsesc "^2.5.1"
|
||||
|
||||
"@babel/generator@^7.21.5":
|
||||
version "7.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.5.tgz#c0c0e5449504c7b7de8236d99338c3e2a340745f"
|
||||
integrity sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==
|
||||
dependencies:
|
||||
"@babel/types" "^7.21.5"
|
||||
"@jridgewell/gen-mapping" "^0.3.2"
|
||||
"@jridgewell/trace-mapping" "^0.3.17"
|
||||
jsesc "^2.5.1"
|
||||
|
||||
"@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.18.6":
|
||||
version "7.18.6"
|
||||
resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz"
|
||||
@ -73,7 +95,7 @@
|
||||
"@babel/helper-explode-assignable-expression" "^7.18.6"
|
||||
"@babel/types" "^7.18.9"
|
||||
|
||||
"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0", "@babel/helper-compilation-targets@^7.20.7":
|
||||
"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.7":
|
||||
version "7.20.7"
|
||||
resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz"
|
||||
integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==
|
||||
@ -84,6 +106,17 @@
|
||||
lru-cache "^5.1.1"
|
||||
semver "^6.3.0"
|
||||
|
||||
"@babel/helper-compilation-targets@^7.21.5":
|
||||
version "7.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz#631e6cc784c7b660417421349aac304c94115366"
|
||||
integrity sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==
|
||||
dependencies:
|
||||
"@babel/compat-data" "^7.21.5"
|
||||
"@babel/helper-validator-option" "^7.21.0"
|
||||
browserslist "^4.21.3"
|
||||
lru-cache "^5.1.1"
|
||||
semver "^6.3.0"
|
||||
|
||||
"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0":
|
||||
version "7.21.0"
|
||||
resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz"
|
||||
@ -123,6 +156,11 @@
|
||||
resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz"
|
||||
integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==
|
||||
|
||||
"@babel/helper-environment-visitor@^7.21.5":
|
||||
version "7.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz#c769afefd41d171836f7cb63e295bedf689d48ba"
|
||||
integrity sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==
|
||||
|
||||
"@babel/helper-explode-assignable-expression@^7.18.6":
|
||||
version "7.18.6"
|
||||
resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz"
|
||||
@ -159,7 +197,14 @@
|
||||
dependencies:
|
||||
"@babel/types" "^7.18.6"
|
||||
|
||||
"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.0", "@babel/helper-module-transforms@^7.21.2":
|
||||
"@babel/helper-module-imports@^7.21.4":
|
||||
version "7.21.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af"
|
||||
integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==
|
||||
dependencies:
|
||||
"@babel/types" "^7.21.4"
|
||||
|
||||
"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.0":
|
||||
version "7.21.2"
|
||||
resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz"
|
||||
integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==
|
||||
@ -173,6 +218,20 @@
|
||||
"@babel/traverse" "^7.21.2"
|
||||
"@babel/types" "^7.21.2"
|
||||
|
||||
"@babel/helper-module-transforms@^7.21.5":
|
||||
version "7.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz#d937c82e9af68d31ab49039136a222b17ac0b420"
|
||||
integrity sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==
|
||||
dependencies:
|
||||
"@babel/helper-environment-visitor" "^7.21.5"
|
||||
"@babel/helper-module-imports" "^7.21.4"
|
||||
"@babel/helper-simple-access" "^7.21.5"
|
||||
"@babel/helper-split-export-declaration" "^7.18.6"
|
||||
"@babel/helper-validator-identifier" "^7.19.1"
|
||||
"@babel/template" "^7.20.7"
|
||||
"@babel/traverse" "^7.21.5"
|
||||
"@babel/types" "^7.21.5"
|
||||
|
||||
"@babel/helper-optimise-call-expression@^7.18.6":
|
||||
version "7.18.6"
|
||||
resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz"
|
||||
@ -185,6 +244,11 @@
|
||||
resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz"
|
||||
integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==
|
||||
|
||||
"@babel/helper-plugin-utils@^7.21.5":
|
||||
version "7.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56"
|
||||
integrity sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==
|
||||
|
||||
"@babel/helper-remap-async-to-generator@^7.18.9":
|
||||
version "7.18.9"
|
||||
resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz"
|
||||
@ -214,6 +278,13 @@
|
||||
dependencies:
|
||||
"@babel/types" "^7.20.2"
|
||||
|
||||
"@babel/helper-simple-access@^7.21.5":
|
||||
version "7.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz#d697a7971a5c39eac32c7e63c0921c06c8a249ee"
|
||||
integrity sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==
|
||||
dependencies:
|
||||
"@babel/types" "^7.21.5"
|
||||
|
||||
"@babel/helper-skip-transparent-expression-wrappers@^7.20.0":
|
||||
version "7.20.0"
|
||||
resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz"
|
||||
@ -233,6 +304,11 @@
|
||||
resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz"
|
||||
integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==
|
||||
|
||||
"@babel/helper-string-parser@^7.21.5":
|
||||
version "7.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd"
|
||||
integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==
|
||||
|
||||
"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1":
|
||||
version "7.19.1"
|
||||
resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz"
|
||||
@ -276,6 +352,11 @@
|
||||
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz"
|
||||
integrity sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==
|
||||
|
||||
"@babel/parser@^7.21.5":
|
||||
version "7.21.8"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.8.tgz#642af7d0333eab9c0ad70b14ac5e76dbde7bfdf8"
|
||||
integrity sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==
|
||||
|
||||
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6":
|
||||
version "7.18.6"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz"
|
||||
@ -283,18 +364,18 @@
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.18.6"
|
||||
|
||||
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9":
|
||||
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.20.7":
|
||||
version "7.20.7"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1"
|
||||
integrity sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.20.2"
|
||||
"@babel/helper-skip-transparent-expression-wrappers" "^7.20.0"
|
||||
"@babel/plugin-proposal-optional-chaining" "^7.20.7"
|
||||
|
||||
"@babel/plugin-proposal-async-generator-functions@^7.20.1":
|
||||
"@babel/plugin-proposal-async-generator-functions@^7.20.7":
|
||||
version "7.20.7"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326"
|
||||
integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==
|
||||
dependencies:
|
||||
"@babel/helper-environment-visitor" "^7.18.9"
|
||||
@ -310,9 +391,9 @@
|
||||
"@babel/helper-create-class-features-plugin" "^7.18.6"
|
||||
"@babel/helper-plugin-utils" "^7.18.6"
|
||||
|
||||
"@babel/plugin-proposal-class-static-block@^7.18.6":
|
||||
"@babel/plugin-proposal-class-static-block@^7.21.0":
|
||||
version "7.21.0"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz#77bdd66fb7b605f3a61302d224bdfacf5547977d"
|
||||
integrity sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==
|
||||
dependencies:
|
||||
"@babel/helper-create-class-features-plugin" "^7.21.0"
|
||||
@ -343,9 +424,9 @@
|
||||
"@babel/helper-plugin-utils" "^7.18.6"
|
||||
"@babel/plugin-syntax-json-strings" "^7.8.3"
|
||||
|
||||
"@babel/plugin-proposal-logical-assignment-operators@^7.18.9":
|
||||
"@babel/plugin-proposal-logical-assignment-operators@^7.20.7":
|
||||
version "7.20.7"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83"
|
||||
integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.20.2"
|
||||
@ -367,9 +448,9 @@
|
||||
"@babel/helper-plugin-utils" "^7.18.6"
|
||||
"@babel/plugin-syntax-numeric-separator" "^7.10.4"
|
||||
|
||||
"@babel/plugin-proposal-object-rest-spread@^7.20.2":
|
||||
"@babel/plugin-proposal-object-rest-spread@^7.20.7":
|
||||
version "7.20.7"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a"
|
||||
integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==
|
||||
dependencies:
|
||||
"@babel/compat-data" "^7.20.5"
|
||||
@ -386,7 +467,7 @@
|
||||
"@babel/helper-plugin-utils" "^7.18.6"
|
||||
"@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
|
||||
|
||||
"@babel/plugin-proposal-optional-chaining@^7.18.9", "@babel/plugin-proposal-optional-chaining@^7.20.7":
|
||||
"@babel/plugin-proposal-optional-chaining@^7.20.7", "@babel/plugin-proposal-optional-chaining@^7.21.0":
|
||||
version "7.21.0"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz"
|
||||
integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==
|
||||
@ -403,9 +484,9 @@
|
||||
"@babel/helper-create-class-features-plugin" "^7.18.6"
|
||||
"@babel/helper-plugin-utils" "^7.18.6"
|
||||
|
||||
"@babel/plugin-proposal-private-property-in-object@^7.18.6":
|
||||
"@babel/plugin-proposal-private-property-in-object@^7.21.0":
|
||||
version "7.21.0"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz#19496bd9883dd83c23c7d7fc45dcd9ad02dfa1dc"
|
||||
integrity sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==
|
||||
dependencies:
|
||||
"@babel/helper-annotate-as-pure" "^7.18.6"
|
||||
@ -470,7 +551,7 @@
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.19.0"
|
||||
|
||||
"@babel/plugin-syntax-import-meta@^7.8.3":
|
||||
"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz"
|
||||
integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==
|
||||
@ -491,6 +572,13 @@
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.18.6"
|
||||
|
||||
"@babel/plugin-syntax-jsx@^7.21.4":
|
||||
version "7.21.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz#f264ed7bf40ffc9ec239edabc17a50c4f5b6fea2"
|
||||
integrity sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.20.2"
|
||||
|
||||
"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz"
|
||||
@ -554,16 +642,16 @@
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.19.0"
|
||||
|
||||
"@babel/plugin-transform-arrow-functions@^7.18.6":
|
||||
version "7.20.7"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz"
|
||||
integrity sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==
|
||||
"@babel/plugin-transform-arrow-functions@^7.21.5":
|
||||
version "7.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.21.5.tgz#9bb42a53de447936a57ba256fbf537fc312b6929"
|
||||
integrity sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.20.2"
|
||||
"@babel/helper-plugin-utils" "^7.21.5"
|
||||
|
||||
"@babel/plugin-transform-async-to-generator@^7.18.6":
|
||||
"@babel/plugin-transform-async-to-generator@^7.20.7":
|
||||
version "7.20.7"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354"
|
||||
integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==
|
||||
dependencies:
|
||||
"@babel/helper-module-imports" "^7.18.6"
|
||||
@ -577,16 +665,16 @@
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.18.6"
|
||||
|
||||
"@babel/plugin-transform-block-scoping@^7.20.2":
|
||||
"@babel/plugin-transform-block-scoping@^7.21.0":
|
||||
version "7.21.0"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz#e737b91037e5186ee16b76e7ae093358a5634f02"
|
||||
integrity sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.20.2"
|
||||
|
||||
"@babel/plugin-transform-classes@^7.20.2":
|
||||
"@babel/plugin-transform-classes@^7.21.0":
|
||||
version "7.21.0"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz#f469d0b07a4c5a7dbb21afad9e27e57b47031665"
|
||||
integrity sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==
|
||||
dependencies:
|
||||
"@babel/helper-annotate-as-pure" "^7.18.6"
|
||||
@ -599,18 +687,18 @@
|
||||
"@babel/helper-split-export-declaration" "^7.18.6"
|
||||
globals "^11.1.0"
|
||||
|
||||
"@babel/plugin-transform-computed-properties@^7.18.9":
|
||||
version "7.20.7"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz"
|
||||
integrity sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==
|
||||
"@babel/plugin-transform-computed-properties@^7.21.5":
|
||||
version "7.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.21.5.tgz#3a2d8bb771cd2ef1cd736435f6552fe502e11b44"
|
||||
integrity sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.20.2"
|
||||
"@babel/helper-plugin-utils" "^7.21.5"
|
||||
"@babel/template" "^7.20.7"
|
||||
|
||||
"@babel/plugin-transform-destructuring@^7.20.2":
|
||||
version "7.20.7"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz"
|
||||
integrity sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==
|
||||
"@babel/plugin-transform-destructuring@^7.21.3":
|
||||
version "7.21.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz#73b46d0fd11cd6ef57dea8a381b1215f4959d401"
|
||||
integrity sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.20.2"
|
||||
|
||||
@ -637,12 +725,12 @@
|
||||
"@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6"
|
||||
"@babel/helper-plugin-utils" "^7.18.6"
|
||||
|
||||
"@babel/plugin-transform-for-of@^7.18.8":
|
||||
version "7.21.0"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz"
|
||||
integrity sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==
|
||||
"@babel/plugin-transform-for-of@^7.21.5":
|
||||
version "7.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.5.tgz#e890032b535f5a2e237a18535f56a9fdaa7b83fc"
|
||||
integrity sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.20.2"
|
||||
"@babel/helper-plugin-utils" "^7.21.5"
|
||||
|
||||
"@babel/plugin-transform-function-name@^7.18.9":
|
||||
version "7.18.9"
|
||||
@ -667,26 +755,26 @@
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.18.6"
|
||||
|
||||
"@babel/plugin-transform-modules-amd@^7.19.6":
|
||||
"@babel/plugin-transform-modules-amd@^7.20.11":
|
||||
version "7.20.11"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a"
|
||||
integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==
|
||||
dependencies:
|
||||
"@babel/helper-module-transforms" "^7.20.11"
|
||||
"@babel/helper-plugin-utils" "^7.20.2"
|
||||
|
||||
"@babel/plugin-transform-modules-commonjs@^7.19.6":
|
||||
version "7.21.2"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz"
|
||||
integrity sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==
|
||||
"@babel/plugin-transform-modules-commonjs@^7.21.5":
|
||||
version "7.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.5.tgz#d69fb947eed51af91de82e4708f676864e5e47bc"
|
||||
integrity sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ==
|
||||
dependencies:
|
||||
"@babel/helper-module-transforms" "^7.21.2"
|
||||
"@babel/helper-plugin-utils" "^7.20.2"
|
||||
"@babel/helper-simple-access" "^7.20.2"
|
||||
"@babel/helper-module-transforms" "^7.21.5"
|
||||
"@babel/helper-plugin-utils" "^7.21.5"
|
||||
"@babel/helper-simple-access" "^7.21.5"
|
||||
|
||||
"@babel/plugin-transform-modules-systemjs@^7.19.6":
|
||||
"@babel/plugin-transform-modules-systemjs@^7.20.11":
|
||||
version "7.20.11"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e"
|
||||
integrity sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==
|
||||
dependencies:
|
||||
"@babel/helper-hoist-variables" "^7.18.6"
|
||||
@ -702,9 +790,9 @@
|
||||
"@babel/helper-module-transforms" "^7.18.6"
|
||||
"@babel/helper-plugin-utils" "^7.18.6"
|
||||
|
||||
"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1":
|
||||
"@babel/plugin-transform-named-capturing-groups-regex@^7.20.5":
|
||||
version "7.20.5"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8"
|
||||
integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==
|
||||
dependencies:
|
||||
"@babel/helper-create-regexp-features-plugin" "^7.20.5"
|
||||
@ -725,13 +813,20 @@
|
||||
"@babel/helper-plugin-utils" "^7.18.6"
|
||||
"@babel/helper-replace-supers" "^7.18.6"
|
||||
|
||||
"@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.20.7":
|
||||
"@babel/plugin-transform-parameters@^7.20.7":
|
||||
version "7.20.7"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz"
|
||||
integrity sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.20.2"
|
||||
|
||||
"@babel/plugin-transform-parameters@^7.21.3":
|
||||
version "7.21.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz#18fc4e797cf6d6d972cb8c411dbe8a809fa157db"
|
||||
integrity sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.20.2"
|
||||
|
||||
"@babel/plugin-transform-property-literals@^7.18.6":
|
||||
version "7.18.6"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz"
|
||||
@ -786,12 +881,12 @@
|
||||
"@babel/helper-annotate-as-pure" "^7.18.6"
|
||||
"@babel/helper-plugin-utils" "^7.18.6"
|
||||
|
||||
"@babel/plugin-transform-regenerator@^7.18.6":
|
||||
version "7.20.5"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz"
|
||||
integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==
|
||||
"@babel/plugin-transform-regenerator@^7.21.5":
|
||||
version "7.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.21.5.tgz#576c62f9923f94bcb1c855adc53561fd7913724e"
|
||||
integrity sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.20.2"
|
||||
"@babel/helper-plugin-utils" "^7.21.5"
|
||||
regenerator-transform "^0.15.1"
|
||||
|
||||
"@babel/plugin-transform-reserved-words@^7.18.6":
|
||||
@ -808,9 +903,9 @@
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.18.6"
|
||||
|
||||
"@babel/plugin-transform-spread@^7.19.0":
|
||||
"@babel/plugin-transform-spread@^7.20.7":
|
||||
version "7.20.7"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e"
|
||||
integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.20.2"
|
||||
@ -837,21 +932,22 @@
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.18.9"
|
||||
|
||||
"@babel/plugin-transform-typescript@^7.21.0":
|
||||
version "7.21.0"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.0.tgz"
|
||||
integrity sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg==
|
||||
"@babel/plugin-transform-typescript@^7.21.3":
|
||||
version "7.21.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz#316c5be579856ea890a57ebc5116c5d064658f2b"
|
||||
integrity sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==
|
||||
dependencies:
|
||||
"@babel/helper-annotate-as-pure" "^7.18.6"
|
||||
"@babel/helper-create-class-features-plugin" "^7.21.0"
|
||||
"@babel/helper-plugin-utils" "^7.20.2"
|
||||
"@babel/plugin-syntax-typescript" "^7.20.0"
|
||||
|
||||
"@babel/plugin-transform-unicode-escapes@^7.18.10":
|
||||
version "7.18.10"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz"
|
||||
integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==
|
||||
"@babel/plugin-transform-unicode-escapes@^7.21.5":
|
||||
version "7.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.21.5.tgz#1e55ed6195259b0e9061d81f5ef45a9b009fb7f2"
|
||||
integrity sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.18.9"
|
||||
"@babel/helper-plugin-utils" "^7.21.5"
|
||||
|
||||
"@babel/plugin-transform-unicode-regex@^7.18.6":
|
||||
version "7.18.6"
|
||||
@ -861,31 +957,31 @@
|
||||
"@babel/helper-create-regexp-features-plugin" "^7.18.6"
|
||||
"@babel/helper-plugin-utils" "^7.18.6"
|
||||
|
||||
"@babel/preset-env@^7.20.2":
|
||||
version "7.20.2"
|
||||
resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz"
|
||||
integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==
|
||||
"@babel/preset-env@^7.21.5":
|
||||
version "7.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.21.5.tgz#db2089d99efd2297716f018aeead815ac3decffb"
|
||||
integrity sha512-wH00QnTTldTbf/IefEVyChtRdw5RJvODT/Vb4Vcxq1AZvtXj6T0YeX0cAcXhI6/BdGuiP3GcNIL4OQbI2DVNxg==
|
||||
dependencies:
|
||||
"@babel/compat-data" "^7.20.1"
|
||||
"@babel/helper-compilation-targets" "^7.20.0"
|
||||
"@babel/helper-plugin-utils" "^7.20.2"
|
||||
"@babel/helper-validator-option" "^7.18.6"
|
||||
"@babel/compat-data" "^7.21.5"
|
||||
"@babel/helper-compilation-targets" "^7.21.5"
|
||||
"@babel/helper-plugin-utils" "^7.21.5"
|
||||
"@babel/helper-validator-option" "^7.21.0"
|
||||
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6"
|
||||
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9"
|
||||
"@babel/plugin-proposal-async-generator-functions" "^7.20.1"
|
||||
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.20.7"
|
||||
"@babel/plugin-proposal-async-generator-functions" "^7.20.7"
|
||||
"@babel/plugin-proposal-class-properties" "^7.18.6"
|
||||
"@babel/plugin-proposal-class-static-block" "^7.18.6"
|
||||
"@babel/plugin-proposal-class-static-block" "^7.21.0"
|
||||
"@babel/plugin-proposal-dynamic-import" "^7.18.6"
|
||||
"@babel/plugin-proposal-export-namespace-from" "^7.18.9"
|
||||
"@babel/plugin-proposal-json-strings" "^7.18.6"
|
||||
"@babel/plugin-proposal-logical-assignment-operators" "^7.18.9"
|
||||
"@babel/plugin-proposal-logical-assignment-operators" "^7.20.7"
|
||||
"@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6"
|
||||
"@babel/plugin-proposal-numeric-separator" "^7.18.6"
|
||||
"@babel/plugin-proposal-object-rest-spread" "^7.20.2"
|
||||
"@babel/plugin-proposal-object-rest-spread" "^7.20.7"
|
||||
"@babel/plugin-proposal-optional-catch-binding" "^7.18.6"
|
||||
"@babel/plugin-proposal-optional-chaining" "^7.18.9"
|
||||
"@babel/plugin-proposal-optional-chaining" "^7.21.0"
|
||||
"@babel/plugin-proposal-private-methods" "^7.18.6"
|
||||
"@babel/plugin-proposal-private-property-in-object" "^7.18.6"
|
||||
"@babel/plugin-proposal-private-property-in-object" "^7.21.0"
|
||||
"@babel/plugin-proposal-unicode-property-regex" "^7.18.6"
|
||||
"@babel/plugin-syntax-async-generators" "^7.8.4"
|
||||
"@babel/plugin-syntax-class-properties" "^7.12.13"
|
||||
@ -893,6 +989,7 @@
|
||||
"@babel/plugin-syntax-dynamic-import" "^7.8.3"
|
||||
"@babel/plugin-syntax-export-namespace-from" "^7.8.3"
|
||||
"@babel/plugin-syntax-import-assertions" "^7.20.0"
|
||||
"@babel/plugin-syntax-import-meta" "^7.10.4"
|
||||
"@babel/plugin-syntax-json-strings" "^7.8.3"
|
||||
"@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
|
||||
"@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
|
||||
@ -902,40 +999,40 @@
|
||||
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
|
||||
"@babel/plugin-syntax-private-property-in-object" "^7.14.5"
|
||||
"@babel/plugin-syntax-top-level-await" "^7.14.5"
|
||||
"@babel/plugin-transform-arrow-functions" "^7.18.6"
|
||||
"@babel/plugin-transform-async-to-generator" "^7.18.6"
|
||||
"@babel/plugin-transform-arrow-functions" "^7.21.5"
|
||||
"@babel/plugin-transform-async-to-generator" "^7.20.7"
|
||||
"@babel/plugin-transform-block-scoped-functions" "^7.18.6"
|
||||
"@babel/plugin-transform-block-scoping" "^7.20.2"
|
||||
"@babel/plugin-transform-classes" "^7.20.2"
|
||||
"@babel/plugin-transform-computed-properties" "^7.18.9"
|
||||
"@babel/plugin-transform-destructuring" "^7.20.2"
|
||||
"@babel/plugin-transform-block-scoping" "^7.21.0"
|
||||
"@babel/plugin-transform-classes" "^7.21.0"
|
||||
"@babel/plugin-transform-computed-properties" "^7.21.5"
|
||||
"@babel/plugin-transform-destructuring" "^7.21.3"
|
||||
"@babel/plugin-transform-dotall-regex" "^7.18.6"
|
||||
"@babel/plugin-transform-duplicate-keys" "^7.18.9"
|
||||
"@babel/plugin-transform-exponentiation-operator" "^7.18.6"
|
||||
"@babel/plugin-transform-for-of" "^7.18.8"
|
||||
"@babel/plugin-transform-for-of" "^7.21.5"
|
||||
"@babel/plugin-transform-function-name" "^7.18.9"
|
||||
"@babel/plugin-transform-literals" "^7.18.9"
|
||||
"@babel/plugin-transform-member-expression-literals" "^7.18.6"
|
||||
"@babel/plugin-transform-modules-amd" "^7.19.6"
|
||||
"@babel/plugin-transform-modules-commonjs" "^7.19.6"
|
||||
"@babel/plugin-transform-modules-systemjs" "^7.19.6"
|
||||
"@babel/plugin-transform-modules-amd" "^7.20.11"
|
||||
"@babel/plugin-transform-modules-commonjs" "^7.21.5"
|
||||
"@babel/plugin-transform-modules-systemjs" "^7.20.11"
|
||||
"@babel/plugin-transform-modules-umd" "^7.18.6"
|
||||
"@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1"
|
||||
"@babel/plugin-transform-named-capturing-groups-regex" "^7.20.5"
|
||||
"@babel/plugin-transform-new-target" "^7.18.6"
|
||||
"@babel/plugin-transform-object-super" "^7.18.6"
|
||||
"@babel/plugin-transform-parameters" "^7.20.1"
|
||||
"@babel/plugin-transform-parameters" "^7.21.3"
|
||||
"@babel/plugin-transform-property-literals" "^7.18.6"
|
||||
"@babel/plugin-transform-regenerator" "^7.18.6"
|
||||
"@babel/plugin-transform-regenerator" "^7.21.5"
|
||||
"@babel/plugin-transform-reserved-words" "^7.18.6"
|
||||
"@babel/plugin-transform-shorthand-properties" "^7.18.6"
|
||||
"@babel/plugin-transform-spread" "^7.19.0"
|
||||
"@babel/plugin-transform-spread" "^7.20.7"
|
||||
"@babel/plugin-transform-sticky-regex" "^7.18.6"
|
||||
"@babel/plugin-transform-template-literals" "^7.18.9"
|
||||
"@babel/plugin-transform-typeof-symbol" "^7.18.9"
|
||||
"@babel/plugin-transform-unicode-escapes" "^7.18.10"
|
||||
"@babel/plugin-transform-unicode-escapes" "^7.21.5"
|
||||
"@babel/plugin-transform-unicode-regex" "^7.18.6"
|
||||
"@babel/preset-modules" "^0.1.5"
|
||||
"@babel/types" "^7.20.2"
|
||||
"@babel/types" "^7.21.5"
|
||||
babel-plugin-polyfill-corejs2 "^0.3.3"
|
||||
babel-plugin-polyfill-corejs3 "^0.6.0"
|
||||
babel-plugin-polyfill-regenerator "^0.4.1"
|
||||
@ -955,7 +1052,7 @@
|
||||
|
||||
"@babel/preset-react@^7.18.6":
|
||||
version "7.18.6"
|
||||
resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d"
|
||||
integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.18.6"
|
||||
@ -965,14 +1062,16 @@
|
||||
"@babel/plugin-transform-react-jsx-development" "^7.18.6"
|
||||
"@babel/plugin-transform-react-pure-annotations" "^7.18.6"
|
||||
|
||||
"@babel/preset-typescript@^7.21.0":
|
||||
version "7.21.0"
|
||||
resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.0.tgz"
|
||||
integrity sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg==
|
||||
"@babel/preset-typescript@^7.21.5":
|
||||
version "7.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.21.5.tgz#68292c884b0e26070b4d66b202072d391358395f"
|
||||
integrity sha512-iqe3sETat5EOrORXiQ6rWfoOg2y68Cs75B9wNxdPW4kixJxh7aXQE1KPdWLDniC24T/6dSnguF33W9j/ZZQcmA==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.20.2"
|
||||
"@babel/helper-plugin-utils" "^7.21.5"
|
||||
"@babel/helper-validator-option" "^7.21.0"
|
||||
"@babel/plugin-transform-typescript" "^7.21.0"
|
||||
"@babel/plugin-syntax-jsx" "^7.21.4"
|
||||
"@babel/plugin-transform-modules-commonjs" "^7.21.5"
|
||||
"@babel/plugin-transform-typescript" "^7.21.3"
|
||||
|
||||
"@babel/regjsgen@^0.8.0":
|
||||
version "0.8.0"
|
||||
@ -1011,6 +1110,22 @@
|
||||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
|
||||
"@babel/traverse@^7.21.5":
|
||||
version "7.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.5.tgz#ad22361d352a5154b498299d523cf72998a4b133"
|
||||
integrity sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.21.4"
|
||||
"@babel/generator" "^7.21.5"
|
||||
"@babel/helper-environment-visitor" "^7.21.5"
|
||||
"@babel/helper-function-name" "^7.21.0"
|
||||
"@babel/helper-hoist-variables" "^7.18.6"
|
||||
"@babel/helper-split-export-declaration" "^7.18.6"
|
||||
"@babel/parser" "^7.21.5"
|
||||
"@babel/types" "^7.21.5"
|
||||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
|
||||
"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
|
||||
version "7.21.2"
|
||||
resolved "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz"
|
||||
@ -1020,6 +1135,15 @@
|
||||
"@babel/helper-validator-identifier" "^7.19.1"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@babel/types@^7.21.4", "@babel/types@^7.21.5":
|
||||
version "7.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6"
|
||||
integrity sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==
|
||||
dependencies:
|
||||
"@babel/helper-string-parser" "^7.21.5"
|
||||
"@babel/helper-validator-identifier" "^7.19.1"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@bcoe/v8-coverage@^0.2.3":
|
||||
version "0.2.3"
|
||||
resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz"
|
||||
@ -1631,7 +1755,7 @@
|
||||
dependencies:
|
||||
"@types/istanbul-lib-report" "*"
|
||||
|
||||
"@types/jest@*", "@types/jest@^29.4.0":
|
||||
"@types/jest@*":
|
||||
version "29.4.0"
|
||||
resolved "https://registry.npmjs.org/@types/jest/-/jest-29.4.0.tgz"
|
||||
integrity sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ==
|
||||
@ -1639,6 +1763,14 @@
|
||||
expect "^29.0.0"
|
||||
pretty-format "^29.0.0"
|
||||
|
||||
"@types/jest@^29.5.1":
|
||||
version "29.5.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.1.tgz#83c818aa9a87da27d6da85d3378e5a34d2f31a47"
|
||||
integrity sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==
|
||||
dependencies:
|
||||
expect "^29.0.0"
|
||||
pretty-format "^29.0.0"
|
||||
|
||||
"@types/jsdom@^20.0.0":
|
||||
version "20.0.1"
|
||||
resolved "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz"
|
||||
@ -5244,6 +5376,13 @@ supports-preserve-symlinks-flag@^1.0.0:
|
||||
resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
|
||||
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
|
||||
|
||||
swr@^2.1.5:
|
||||
version "2.1.5"
|
||||
resolved "https://registry.yarnpkg.com/swr/-/swr-2.1.5.tgz#688effa719c03f6d35c66decbb0f8e79c7190399"
|
||||
integrity sha512-/OhfZMcEpuz77KavXST5q6XE9nrOBOVcBLWjMT+oAE/kQHyE3PASrevXCtQDZ8aamntOfFkbVJp7Il9tNBQWrw==
|
||||
dependencies:
|
||||
use-sync-external-store "^1.2.0"
|
||||
|
||||
symbol-tree@^3.2.4:
|
||||
version "3.2.4"
|
||||
resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz"
|
||||
@ -5457,7 +5596,7 @@ url-parse@^1.5.3:
|
||||
querystringify "^2.1.1"
|
||||
requires-port "^1.0.0"
|
||||
|
||||
use-sync-external-store@^1.0.0:
|
||||
use-sync-external-store@^1.0.0, use-sync-external-store@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz"
|
||||
integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==
|
||||
|
Loading…
x
Reference in New Issue
Block a user