feat: integrate with new api
This commit is contained in:
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"presets": [
|
||||||
|
[
|
||||||
|
"@nx/react/babel",
|
||||||
|
{
|
||||||
|
"runtime": "automatic",
|
||||||
|
"useBuiltIns": "usage"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"plugins": []
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# service
|
||||||
|
|
||||||
|
This library was generated with [Nx](https://nx.dev).
|
||||||
|
|
||||||
|
## Running unit tests
|
||||||
|
|
||||||
|
Run `nx test service` to execute the unit tests via [Vitest](https://vitest.dev/).
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import nx from '@nx/eslint-plugin';
|
||||||
|
import baseConfig from '../../eslint.config.mjs';
|
||||||
|
|
||||||
|
export default [
|
||||||
|
...baseConfig,
|
||||||
|
...nx.configs['flat/react'],
|
||||||
|
{
|
||||||
|
files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],
|
||||||
|
// Override or add rules here
|
||||||
|
rules: {},
|
||||||
|
},
|
||||||
|
];
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"name": "@imphnen-frontend-service/service",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"main": "./index.js",
|
||||||
|
"types": "./index.d.ts",
|
||||||
|
"exports": {
|
||||||
|
".": {
|
||||||
|
"import": "./index.mjs",
|
||||||
|
"require": "./index.js"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"name": "service",
|
||||||
|
"$schema": "../../node_modules/nx/schemas/project-schema.json",
|
||||||
|
"sourceRoot": "libs/service/src",
|
||||||
|
"projectType": "library",
|
||||||
|
"tags": [],
|
||||||
|
"targets": {
|
||||||
|
"nx-release-publish": {
|
||||||
|
"options": {
|
||||||
|
"packageRoot": "dist/{projectRoot}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"release": {
|
||||||
|
"version": {
|
||||||
|
"generatorOptions": {
|
||||||
|
"packageRoot": "dist/{projectRoot}",
|
||||||
|
"currentVersionResolver": "git-tag",
|
||||||
|
"fallbackCurrentVersionResolver": "disk"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
import { api } from '@imphnen-frontend-service/utils';
|
||||||
|
import {
|
||||||
|
TLoginRequest,
|
||||||
|
TLoginResponse,
|
||||||
|
TRegisterRequest,
|
||||||
|
TVerifyEmailRequest,
|
||||||
|
} from '../../types/auth';
|
||||||
|
import { TResponseMessage } from '../../types/common';
|
||||||
|
|
||||||
|
export const postLogin = async (
|
||||||
|
payload: TLoginRequest
|
||||||
|
): Promise<TLoginResponse> => {
|
||||||
|
const { data } = await api({
|
||||||
|
method: 'POST',
|
||||||
|
url: '/auth/login',
|
||||||
|
data: payload,
|
||||||
|
});
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const postRegister = async (
|
||||||
|
payload: TRegisterRequest
|
||||||
|
): Promise<TResponseMessage> => {
|
||||||
|
const { data } = await api({
|
||||||
|
method: 'POST',
|
||||||
|
url: '/auth/register',
|
||||||
|
data: payload,
|
||||||
|
});
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const postVerifyEmail = async (
|
||||||
|
payload: TVerifyEmailRequest
|
||||||
|
): Promise<TResponseMessage> => {
|
||||||
|
const { data } = await api({
|
||||||
|
method: 'POST',
|
||||||
|
url: '/auth/verify',
|
||||||
|
data: payload,
|
||||||
|
});
|
||||||
|
return data;
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export {};
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
export * from './auth';
|
||||||
|
export * from './gacha';
|
||||||
|
export * from './users';
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export {};
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
import { useMutation, UseMutationResult } from '@tanstack/react-query';
|
||||||
|
import { postLogin, postRegister, postVerifyEmail } from '../../api/auth';
|
||||||
|
import {
|
||||||
|
TLoginRequest,
|
||||||
|
TLoginResponse,
|
||||||
|
TRegisterRequest,
|
||||||
|
TVerifyEmailRequest,
|
||||||
|
} from '../../types/auth';
|
||||||
|
import { TResponseError, TResponseMessage } from '../../types/common';
|
||||||
|
|
||||||
|
export const usePostLogin = (): UseMutationResult<
|
||||||
|
TLoginResponse,
|
||||||
|
TResponseError,
|
||||||
|
TLoginRequest,
|
||||||
|
unknown
|
||||||
|
> => {
|
||||||
|
return useMutation({
|
||||||
|
mutationKey: ['post-login'],
|
||||||
|
mutationFn: async (payload) => await postLogin(payload),
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const usePostRegister = (): UseMutationResult<
|
||||||
|
TResponseMessage,
|
||||||
|
TResponseError,
|
||||||
|
TRegisterRequest,
|
||||||
|
unknown
|
||||||
|
> => {
|
||||||
|
return useMutation({
|
||||||
|
mutationKey: ['post-register'],
|
||||||
|
mutationFn: async (payload) => await postRegister(payload),
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const usePostVerifyEmail = (): UseMutationResult<
|
||||||
|
TResponseMessage,
|
||||||
|
TResponseError,
|
||||||
|
TVerifyEmailRequest,
|
||||||
|
unknown
|
||||||
|
> => {
|
||||||
|
return useMutation({
|
||||||
|
mutationKey: ['post-verify-email'],
|
||||||
|
mutationFn: async (payload) => await postVerifyEmail(payload),
|
||||||
|
});
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export {};
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
export * from './auth';
|
||||||
|
export * from './gacha';
|
||||||
|
export * from './users';
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export {};
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
export * from './api';
|
||||||
|
export * from './hooks';
|
||||||
|
export * from './types';
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
export type TLoginRequest = {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type TLoginResponse = {
|
||||||
|
data: {
|
||||||
|
token: {
|
||||||
|
access_token: string;
|
||||||
|
refresh_token: string;
|
||||||
|
};
|
||||||
|
user: {
|
||||||
|
fullname: string;
|
||||||
|
email: string;
|
||||||
|
is_active: boolean;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export type TRegisterRequest = {
|
||||||
|
fullname: string;
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type TVerifyEmailRequest = {
|
||||||
|
email: string;
|
||||||
|
otp: number;
|
||||||
|
};
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
import { AxiosError } from 'axios';
|
||||||
|
|
||||||
|
export type TResponse<T = unknown> = {
|
||||||
|
data: T;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type TResponseMessage = {
|
||||||
|
message: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type TResponseError = AxiosError<TResponseMessage>;
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export {};
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
export * from './auth';
|
||||||
|
export * from './gacha';
|
||||||
|
export * from './users';
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export {};
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"jsx": "react-jsx",
|
||||||
|
"allowJs": false,
|
||||||
|
"esModuleInterop": false,
|
||||||
|
"allowSyntheticDefaultImports": true,
|
||||||
|
"strict": true,
|
||||||
|
"types": ["vite/client", "vitest"]
|
||||||
|
},
|
||||||
|
"files": [],
|
||||||
|
"include": [],
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"path": "./tsconfig.lib.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "./tsconfig.spec.json"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"extends": "../../tsconfig.base.json"
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"extends": "./tsconfig.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"outDir": "../../dist/out-tsc",
|
||||||
|
"types": [
|
||||||
|
"node",
|
||||||
|
"@nx/react/typings/cssmodule.d.ts",
|
||||||
|
"@nx/react/typings/image.d.ts",
|
||||||
|
"vite/client"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"exclude": [
|
||||||
|
"**/*.spec.ts",
|
||||||
|
"**/*.test.ts",
|
||||||
|
"**/*.spec.tsx",
|
||||||
|
"**/*.test.tsx",
|
||||||
|
"**/*.spec.js",
|
||||||
|
"**/*.test.js",
|
||||||
|
"**/*.spec.jsx",
|
||||||
|
"**/*.test.jsx",
|
||||||
|
"vite.config.ts",
|
||||||
|
"vite.config.mts",
|
||||||
|
"vitest.config.ts",
|
||||||
|
"vitest.config.mts",
|
||||||
|
"src/**/*.test.ts",
|
||||||
|
"src/**/*.spec.ts",
|
||||||
|
"src/**/*.test.tsx",
|
||||||
|
"src/**/*.spec.tsx",
|
||||||
|
"src/**/*.test.js",
|
||||||
|
"src/**/*.spec.js",
|
||||||
|
"src/**/*.test.jsx",
|
||||||
|
"src/**/*.spec.jsx"
|
||||||
|
],
|
||||||
|
"include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx"]
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"extends": "./tsconfig.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"outDir": "../../dist/out-tsc",
|
||||||
|
"types": [
|
||||||
|
"vitest/globals",
|
||||||
|
"vitest/importMeta",
|
||||||
|
"vite/client",
|
||||||
|
"node",
|
||||||
|
"vitest"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"vite.config.ts",
|
||||||
|
"vite.config.mts",
|
||||||
|
"vitest.config.ts",
|
||||||
|
"vitest.config.mts",
|
||||||
|
"src/**/*.test.ts",
|
||||||
|
"src/**/*.spec.ts",
|
||||||
|
"src/**/*.test.tsx",
|
||||||
|
"src/**/*.spec.tsx",
|
||||||
|
"src/**/*.test.js",
|
||||||
|
"src/**/*.spec.js",
|
||||||
|
"src/**/*.test.jsx",
|
||||||
|
"src/**/*.spec.jsx",
|
||||||
|
"src/**/*.d.ts"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
/// <reference types='vitest' />
|
||||||
|
import { defineConfig } from 'vite';
|
||||||
|
import react from '@vitejs/plugin-react';
|
||||||
|
import dts from 'vite-plugin-dts';
|
||||||
|
import * as path from 'path';
|
||||||
|
import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
|
||||||
|
import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin';
|
||||||
|
|
||||||
|
export default defineConfig(() => ({
|
||||||
|
root: __dirname,
|
||||||
|
cacheDir: '../../node_modules/.vite/libs/service',
|
||||||
|
plugins: [
|
||||||
|
react(),
|
||||||
|
nxViteTsPaths(),
|
||||||
|
nxCopyAssetsPlugin(['*.md']),
|
||||||
|
dts({
|
||||||
|
entryRoot: 'src',
|
||||||
|
tsconfigPath: path.join(__dirname, 'tsconfig.lib.json'),
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
// Uncomment this if you are using workers.
|
||||||
|
// worker: {
|
||||||
|
// plugins: [ nxViteTsPaths() ],
|
||||||
|
// },
|
||||||
|
// Configuration for building your library.
|
||||||
|
// See: https://vitejs.dev/guide/build.html#library-mode
|
||||||
|
build: {
|
||||||
|
outDir: '../../dist/libs/service',
|
||||||
|
emptyOutDir: true,
|
||||||
|
reportCompressedSize: true,
|
||||||
|
commonjsOptions: {
|
||||||
|
transformMixedEsModules: true,
|
||||||
|
},
|
||||||
|
lib: {
|
||||||
|
// Could also be a dictionary or array of multiple entry points.
|
||||||
|
entry: 'src/index.ts',
|
||||||
|
name: 'service',
|
||||||
|
fileName: 'index',
|
||||||
|
// Change this to the formats you want to support.
|
||||||
|
// Don't forget to update your package.json as well.
|
||||||
|
formats: ['es' as const],
|
||||||
|
},
|
||||||
|
rollupOptions: {
|
||||||
|
// External packages that should not be bundled into your library.
|
||||||
|
external: ['react', 'react-dom', 'react/jsx-runtime'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
test: {
|
||||||
|
watch: false,
|
||||||
|
globals: true,
|
||||||
|
environment: 'jsdom',
|
||||||
|
include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
|
||||||
|
reporters: ['default'],
|
||||||
|
coverage: {
|
||||||
|
reportsDirectory: '../../coverage/libs/service',
|
||||||
|
provider: 'v8' as const,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}));
|
||||||
@@ -15,6 +15,7 @@
|
|||||||
"skipDefaultLibCheck": true,
|
"skipDefaultLibCheck": true,
|
||||||
"baseUrl": ".",
|
"baseUrl": ".",
|
||||||
"paths": {
|
"paths": {
|
||||||
|
"@imphnen-frontend-service/service": ["libs/service/src/index.ts"],
|
||||||
"@imphnen-frontend-service/ui/atoms": ["libs/ui/src/atoms/index.ts"],
|
"@imphnen-frontend-service/ui/atoms": ["libs/ui/src/atoms/index.ts"],
|
||||||
"@imphnen-frontend-service/ui/molecules": [
|
"@imphnen-frontend-service/ui/molecules": [
|
||||||
"libs/ui/src/molecules/index.ts"
|
"libs/ui/src/molecules/index.ts"
|
||||||
|
|||||||
Reference in New Issue
Block a user