@willphan1712000/frontend 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -375,4 +375,82 @@ declare class Transform {
375
375
  private transform;
376
376
  }
377
377
 
378
- export { Avatar, Button, Canvas, ColorPickerSlider, DropdownSelect, Image$1 as Image, ImageEditor, Image as ImageUtilities, InputFile, InputGoogle, MultiSelect, OptionSlider, type Options$2 as Options, RangeSlider, type Options$1 as SliderOptions, TextArea, Transform, UploadImage };
378
+ /**
379
+ * This interface provides a comprehensive guides on how to design auth object used for authentication on client side
380
+ * - Copyright: Will Phan
381
+ */
382
+ interface AuthInterface<User = any> {
383
+ /**
384
+ *
385
+ * @param redirect: route that will be returned after successful authentication
386
+ * @param client_id: oauth client id
387
+ * @param callback_api: api route for callback
388
+ * @returns sign in url
389
+ */
390
+ getSignInUrl({ redirect, client_id, callback_api, }: {
391
+ redirect?: string;
392
+ client_id?: string;
393
+ callback_api?: string;
394
+ }): string;
395
+ /**
396
+ * Authenticate a user
397
+ */
398
+ signin({ username, email, password, redirect, }: {
399
+ username: string;
400
+ email?: string;
401
+ password: string;
402
+ redirect?: string;
403
+ }): Promise<void>;
404
+ /**
405
+ * Validate user authentication
406
+ */
407
+ validate({ state }: {
408
+ state?: string;
409
+ }): Promise<User>;
410
+ /**
411
+ * Sign a user out
412
+ */
413
+ signout({ state }: {
414
+ state?: string;
415
+ }): Promise<void>;
416
+ }
417
+
418
+ type SessionType = {
419
+ username?: string;
420
+ email?: string;
421
+ role?: string;
422
+ } | undefined;
423
+ type SessionContextType = {
424
+ isLoading: boolean;
425
+ session: SessionType;
426
+ };
427
+
428
+ /**
429
+ * This interface provides a guide to design storage object used for client side to operate storage operations
430
+ * - Copyright: Will Phan
431
+ */
432
+ interface StorageInterface {
433
+ getToken(): string | null;
434
+ getUser(): SessionType | null;
435
+ setToken({ token }: {
436
+ token: string;
437
+ }): void;
438
+ removeToken(): void;
439
+ }
440
+
441
+ /**
442
+ * Will-Auth - retrieve session
443
+ * @returns session context
444
+ */
445
+ declare function useSession(): SessionContextType;
446
+
447
+ /**
448
+ * Custom Session Provider using React Context
449
+ * - Copyright: Will Phan
450
+ */
451
+ declare const SessionProvider: ({ value, children, }: {
452
+ value: SessionContextType;
453
+ children: ReactNode;
454
+ }) => react_jsx_runtime.JSX.Element;
455
+
456
+ export { type AuthInterface, Avatar, Button, Canvas, ColorPickerSlider, DropdownSelect, Image$1 as Image, ImageEditor, Image as ImageUtilities, InputFile, InputGoogle, MultiSelect, OptionSlider, type Options$2 as Options, RangeSlider, SessionProvider, type SessionType, type Options$1 as SliderOptions, type StorageInterface, TextArea, Transform, UploadImage, useSession };
package/dist/index.d.ts CHANGED
@@ -375,4 +375,82 @@ declare class Transform {
375
375
  private transform;
376
376
  }
377
377
 
378
- export { Avatar, Button, Canvas, ColorPickerSlider, DropdownSelect, Image$1 as Image, ImageEditor, Image as ImageUtilities, InputFile, InputGoogle, MultiSelect, OptionSlider, type Options$2 as Options, RangeSlider, type Options$1 as SliderOptions, TextArea, Transform, UploadImage };
378
+ /**
379
+ * This interface provides a comprehensive guides on how to design auth object used for authentication on client side
380
+ * - Copyright: Will Phan
381
+ */
382
+ interface AuthInterface<User = any> {
383
+ /**
384
+ *
385
+ * @param redirect: route that will be returned after successful authentication
386
+ * @param client_id: oauth client id
387
+ * @param callback_api: api route for callback
388
+ * @returns sign in url
389
+ */
390
+ getSignInUrl({ redirect, client_id, callback_api, }: {
391
+ redirect?: string;
392
+ client_id?: string;
393
+ callback_api?: string;
394
+ }): string;
395
+ /**
396
+ * Authenticate a user
397
+ */
398
+ signin({ username, email, password, redirect, }: {
399
+ username: string;
400
+ email?: string;
401
+ password: string;
402
+ redirect?: string;
403
+ }): Promise<void>;
404
+ /**
405
+ * Validate user authentication
406
+ */
407
+ validate({ state }: {
408
+ state?: string;
409
+ }): Promise<User>;
410
+ /**
411
+ * Sign a user out
412
+ */
413
+ signout({ state }: {
414
+ state?: string;
415
+ }): Promise<void>;
416
+ }
417
+
418
+ type SessionType = {
419
+ username?: string;
420
+ email?: string;
421
+ role?: string;
422
+ } | undefined;
423
+ type SessionContextType = {
424
+ isLoading: boolean;
425
+ session: SessionType;
426
+ };
427
+
428
+ /**
429
+ * This interface provides a guide to design storage object used for client side to operate storage operations
430
+ * - Copyright: Will Phan
431
+ */
432
+ interface StorageInterface {
433
+ getToken(): string | null;
434
+ getUser(): SessionType | null;
435
+ setToken({ token }: {
436
+ token: string;
437
+ }): void;
438
+ removeToken(): void;
439
+ }
440
+
441
+ /**
442
+ * Will-Auth - retrieve session
443
+ * @returns session context
444
+ */
445
+ declare function useSession(): SessionContextType;
446
+
447
+ /**
448
+ * Custom Session Provider using React Context
449
+ * - Copyright: Will Phan
450
+ */
451
+ declare const SessionProvider: ({ value, children, }: {
452
+ value: SessionContextType;
453
+ children: ReactNode;
454
+ }) => react_jsx_runtime.JSX.Element;
455
+
456
+ export { type AuthInterface, Avatar, Button, Canvas, ColorPickerSlider, DropdownSelect, Image$1 as Image, ImageEditor, Image as ImageUtilities, InputFile, InputGoogle, MultiSelect, OptionSlider, type Options$2 as Options, RangeSlider, SessionProvider, type SessionType, type Options$1 as SliderOptions, type StorageInterface, TextArea, Transform, UploadImage, useSession };
package/dist/index.js CHANGED
@@ -397,6 +397,9 @@ __export(index_exports, {
397
397
  RangeSlider: function() {
398
398
  return RangeSlider_default;
399
399
  },
400
+ SessionProvider: function() {
401
+ return SessionProvider_default;
402
+ },
400
403
  TextArea: function() {
401
404
  return TextArea_default;
402
405
  },
@@ -405,6 +408,9 @@ __export(index_exports, {
405
408
  },
406
409
  UploadImage: function() {
407
410
  return UploadImage_default;
411
+ },
412
+ useSession: function() {
413
+ return useSession;
408
414
  }
409
415
  });
410
416
  module.exports = __toCommonJS(index_exports);
@@ -3008,6 +3014,24 @@ var Transform = /*#__PURE__*/ function() {
3008
3014
  ]);
3009
3015
  return Transform;
3010
3016
  }();
3017
+ // src/auth/react/context.tsx
3018
+ var import_react15 = require("react");
3019
+ var SessionContext = (0, import_react15.createContext)(void 0);
3020
+ function useSession() {
3021
+ var data = (0, import_react15.useContext)(SessionContext);
3022
+ if (data === void 0) throw new Error("Session context is undefined");
3023
+ return data;
3024
+ }
3025
+ // src/auth/react/SessionProvider.tsx
3026
+ var import_jsx_runtime20 = require("react/jsx-runtime");
3027
+ var SessionProvider = function(param) {
3028
+ var value = param.value, children = param.children;
3029
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SessionContext.Provider, {
3030
+ value: value,
3031
+ children: children
3032
+ });
3033
+ };
3034
+ var SessionProvider_default = SessionProvider;
3011
3035
  // Annotate the CommonJS export names for ESM import in node:
3012
3036
  0 && (module.exports = {
3013
3037
  Avatar: Avatar,
@@ -3023,7 +3047,9 @@ var Transform = /*#__PURE__*/ function() {
3023
3047
  MultiSelect: MultiSelect,
3024
3048
  OptionSlider: OptionSlider,
3025
3049
  RangeSlider: RangeSlider,
3050
+ SessionProvider: SessionProvider,
3026
3051
  TextArea: TextArea,
3027
3052
  Transform: Transform,
3028
- UploadImage: UploadImage
3053
+ UploadImage: UploadImage,
3054
+ useSession: useSession
3029
3055
  });
package/dist/index.mjs CHANGED
@@ -2895,4 +2895,22 @@ var Transform = /*#__PURE__*/ function() {
2895
2895
  ]);
2896
2896
  return Transform;
2897
2897
  }();
2898
- export { Avatar_default as Avatar, Button_default as Button, Canvas, ColorPickerSlider_default as ColorPickerSlider, DropdownSelect_default as DropdownSelect, Image_default as Image, ImageEditor_default as ImageEditor, Image_default2 as ImageUtilities, InputFile_default as InputFile, InputGoogle_default as InputGoogle, MultiSelect_default as MultiSelect, OptionSlider_default as OptionSlider, RangeSlider_default as RangeSlider, TextArea_default as TextArea, Transform, UploadImage_default as UploadImage };
2898
+ // src/auth/react/context.tsx
2899
+ import { createContext as createContext4, useContext as useContext4 } from "react";
2900
+ var SessionContext = createContext4(void 0);
2901
+ function useSession() {
2902
+ var data = useContext4(SessionContext);
2903
+ if (data === void 0) throw new Error("Session context is undefined");
2904
+ return data;
2905
+ }
2906
+ // src/auth/react/SessionProvider.tsx
2907
+ import { jsx as jsx20 } from "react/jsx-runtime";
2908
+ var SessionProvider = function(param) {
2909
+ var value = param.value, children = param.children;
2910
+ return /* @__PURE__ */ jsx20(SessionContext.Provider, {
2911
+ value: value,
2912
+ children: children
2913
+ });
2914
+ };
2915
+ var SessionProvider_default = SessionProvider;
2916
+ export { Avatar_default as Avatar, Button_default as Button, Canvas, ColorPickerSlider_default as ColorPickerSlider, DropdownSelect_default as DropdownSelect, Image_default as Image, ImageEditor_default as ImageEditor, Image_default2 as ImageUtilities, InputFile_default as InputFile, InputGoogle_default as InputGoogle, MultiSelect_default as MultiSelect, OptionSlider_default as OptionSlider, RangeSlider_default as RangeSlider, SessionProvider_default as SessionProvider, TextArea_default as TextArea, Transform, UploadImage_default as UploadImage, useSession };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@willphan1712000/frontend",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "Frontend Library",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",