@a-tech.jo/auth-sdk 1.0.1 → 1.0.3

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/README.md ADDED
@@ -0,0 +1,177 @@
1
+ # `@a-tech/auth-sdk`
2
+
3
+ A full-stack, customizable authentication SDK providing seamless login, registration, and session management for A-Tech applications.
4
+
5
+ ---
6
+
7
+ ## Quick Start & Integration
8
+
9
+ ### 1. Import Global Styles
10
+ Import the pre-compiled CSS file in your root `layout.tsx` or `_app.tsx`:
11
+
12
+ ```tsx
13
+ import "@a-tech/auth-sdk/styles.css";
14
+
15
+ ```
16
+
17
+ ---
18
+
19
+ ### 2. Wrap Application with `AuthProvider`
20
+
21
+ Encapsulate your component tree with the `AuthProvider` to manage global authentication state and token expiration.
22
+
23
+ ```tsx
24
+ import { AuthProvider } from "@a-tech/auth-sdk";
25
+
26
+ export default function RootLayout({ children }: { children: React.ReactNode }) {
27
+ return (
28
+ <html lang="en">
29
+ <body>
30
+ <AuthProvider "local" config="{{" environment: }}>
31
+ {children}
32
+ </AuthProvider>
33
+ </body>
34
+ </html>
35
+ );
36
+ }
37
+
38
+ ```
39
+
40
+ #### Available Environment Configurations
41
+
42
+ | Environment | Key | Description |
43
+ | --- | --- | --- |
44
+ | **Local** | `"local"` | Targets `http://localhost:3000` / local backend services |
45
+ | **Staging** | `"stage"` | Targets staging auth backend (`https://auth.atech-workspace.com`) |
46
+ | **Production** | `"production"` | *(Default)* Targets production auth services |
47
+
48
+ ---
49
+
50
+ ### 3. Embed Authentication Component
51
+
52
+ Render the pre-built, responsive authentication card supporting mode toggling (Login, Register, Forgot Password).
53
+
54
+ ```tsx
55
+ import { SDKAuthContainer } from "@a-tech/auth-sdk";
56
+
57
+ export default function AuthPage() {
58
+ const handleSuccess = (data: { user: any; token: string }) => {
59
+ console.log("Authenticated successfully:", data);
60
+ };
61
+
62
+ return (
63
+ <div className="flex min-h-screen items-center justify-center">
64
+ <SDKAuthContainer initialMode="login" onSuccess="{handleSuccess}"/>
65
+ </div>
66
+ );
67
+ }
68
+
69
+ ```
70
+
71
+ ---
72
+
73
+ ### 4. Access User Session (`useAuth` Hook)
74
+
75
+ Access the current user profile, JWT token, and session utilities anywhere within the `AuthProvider` scope:
76
+
77
+ ```tsx
78
+ import { useAuth } from "@a-tech/auth-sdk";
79
+
80
+ export default function Dashboard() {
81
+ const { user, token, logout, isExpired } = useAuth();
82
+
83
+ if (!token || isExpired) {
84
+ return <p>Please sign in to access this page.</p>;
85
+ }
86
+
87
+ return (
88
+ <div>
89
+ <h1>Welcome back, {user?.firstName}!</h1>
90
+ <p>Logged in as: {user?.email}</p>
91
+ <button onClick={logout}>Sign Out</button>
92
+ </div>
93
+ );
94
+ }
95
+
96
+ ```
97
+
98
+ ---
99
+
100
+ ## How to Update & Publish New Versions
101
+
102
+ When publishing an update to npm, follow standard Semantic Versioning guidelines:
103
+
104
+ ### 1. Bump Package Version
105
+
106
+ Choose the appropriate command based on the scope of your changes:
107
+
108
+ ```bash
109
+ # Patch update (Bug fixes: e.g., 1.0.0 -> 1.0.1)
110
+ npm version patch
111
+
112
+ # Minor update (New backward-compatible features: e.g., 1.0.0 -> 1.1.0)
113
+ npm version minor
114
+
115
+ # Major update (Breaking changes: e.g., 1.0.0 -> 2.0.0)
116
+ npm version major
117
+
118
+ ```
119
+
120
+ ### 2. Clean, Build, and Publish
121
+
122
+ Run a fresh build and publish to npm using your Granular Access Token:
123
+
124
+ ```bash
125
+ # Clean build artifacts and build fresh distribution package
126
+ rm -rf dist *.tgz && npm run build
127
+
128
+ # Publish to npm using your access token
129
+ echo "//registry.npmjs.org/:_authToken=YOUR_NPM_TOKEN" > .npmrc && npm publish --access public ; rm -f .npmrc
130
+
131
+
132
+
133
+
134
+ ---
135
+
136
+ ## Token Verification (`verifyToken`)
137
+
138
+ Verify any JWT token and retrieve the active user profile using the SDK helper function:
139
+
140
+ ```typescript
141
+ import { verifyToken } from "@a-tech/auth-sdk";
142
+
143
+ async function validateSession(authToken: string) {
144
+ // Verifies token and returns session status & user details
145
+ const result = await verifyToken(authToken, "local");
146
+
147
+ if (result.valid) {
148
+ console.log("Authenticated User:", result.user);
149
+ console.log("Session Expires At:", result.expiresAt);
150
+ } else {
151
+ console.error("Invalid Session:", result.error);
152
+ }
153
+ }
154
+
155
+ ```
156
+
157
+ ### Parameters & Options
158
+
159
+ | Parameter | Type | Description |
160
+ | --- | --- | --- |
161
+ | `token` | `string` | *(Required)* The JWT authentication token string to verify. |
162
+ | `environment` | `"local" | "stage" | "production"` | *(Optional)* The target environment. Defaults to `"production"`. |
163
+
164
+ ### Return Value (`Promise<VerifyTokenResponse>`)
165
+
166
+ ```typescript
167
+ {
168
+ valid: boolean; // True if the token is signature-valid and active
169
+ user?: { // User profile details (if valid)
170
+ id: string | number;
171
+ email: string;
172
+ type?: string;
173
+ };
174
+ expiresAt?: string; // ISO expiration timestamp
175
+ error?: string; // Error message if invalid or expired
176
+ }
177
+
package/dist/index.d.ts CHANGED
@@ -3,4 +3,5 @@ export * from "./config";
3
3
  export * from "./client";
4
4
  export * from "./AuthContext";
5
5
  export * from "./components/AuthContainer";
6
+ export { verifyToken } from "./services/auth";
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -29,7 +29,8 @@ __export(index_exports, {
29
29
  DEFAULT_THEME: () => DEFAULT_THEME,
30
30
  SDKAuthContainer: () => SDKAuthContainer,
31
31
  getSDKConfig: () => getSDKConfig,
32
- useAuth: () => useAuth
32
+ useAuth: () => useAuth,
33
+ verifyToken: () => verifyToken
33
34
  });
34
35
  module.exports = __toCommonJS(index_exports);
35
36
 
@@ -752,6 +753,40 @@ var SDKAuthContainer = ({
752
753
  )
753
754
  ] });
754
755
  };
756
+
757
+ // src/services/auth.ts
758
+ async function verifyToken(token, environment = "production") {
759
+ const baseUrlMap = {
760
+ local: "http://localhost:3000",
761
+ stage: "https://auth.atech-workspace.com",
762
+ production: "https://sso.a-tech.dev"
763
+ // Replace with your production URL
764
+ };
765
+ const baseUrl = baseUrlMap[environment] || baseUrlMap.production;
766
+ try {
767
+ const response = await fetch(`${baseUrl}/api/auth/verify`, {
768
+ method: "POST",
769
+ headers: {
770
+ "Content-Type": "application/json",
771
+ Authorization: `Bearer ${token}`
772
+ },
773
+ body: JSON.stringify({ token })
774
+ });
775
+ const data = await response.json();
776
+ if (!response.ok) {
777
+ return {
778
+ valid: false,
779
+ error: data.error || "Token verification failed."
780
+ };
781
+ }
782
+ return data;
783
+ } catch (error) {
784
+ return {
785
+ valid: false,
786
+ error: error.message || "Network error while verifying token."
787
+ };
788
+ }
789
+ }
755
790
  // Annotate the CommonJS export names for ESM import in node:
756
791
  0 && (module.exports = {
757
792
  AuthClient,
@@ -763,5 +798,6 @@ var SDKAuthContainer = ({
763
798
  DEFAULT_THEME,
764
799
  SDKAuthContainer,
765
800
  getSDKConfig,
766
- useAuth
801
+ useAuth,
802
+ verifyToken
767
803
  });
package/dist/index.mjs CHANGED
@@ -717,6 +717,40 @@ var SDKAuthContainer = ({
717
717
  )
718
718
  ] });
719
719
  };
720
+
721
+ // src/services/auth.ts
722
+ async function verifyToken(token, environment = "production") {
723
+ const baseUrlMap = {
724
+ local: "http://localhost:3000",
725
+ stage: "https://auth.atech-workspace.com",
726
+ production: "https://sso.a-tech.dev"
727
+ // Replace with your production URL
728
+ };
729
+ const baseUrl = baseUrlMap[environment] || baseUrlMap.production;
730
+ try {
731
+ const response = await fetch(`${baseUrl}/api/auth/verify`, {
732
+ method: "POST",
733
+ headers: {
734
+ "Content-Type": "application/json",
735
+ Authorization: `Bearer ${token}`
736
+ },
737
+ body: JSON.stringify({ token })
738
+ });
739
+ const data = await response.json();
740
+ if (!response.ok) {
741
+ return {
742
+ valid: false,
743
+ error: data.error || "Token verification failed."
744
+ };
745
+ }
746
+ return data;
747
+ } catch (error) {
748
+ return {
749
+ valid: false,
750
+ error: error.message || "Network error while verifying token."
751
+ };
752
+ }
753
+ }
720
754
  export {
721
755
  AuthClient,
722
756
  AuthProvider,
@@ -727,5 +761,6 @@ export {
727
761
  DEFAULT_THEME,
728
762
  SDKAuthContainer,
729
763
  getSDKConfig,
730
- useAuth
764
+ useAuth,
765
+ verifyToken
731
766
  };
@@ -0,0 +1,10 @@
1
+ import { VerifyTokenResponse } from "../types";
2
+ /**
3
+ * Verifies a JWT token against the A-Tech Auth API.
4
+ *
5
+ * @param token - The JWT string to verify.
6
+ * @param environment - Optional environment override ('local' | 'stage' | 'production').
7
+ * @returns Promise containing verification status and user details.
8
+ */
9
+ export declare function verifyToken(token: string, environment?: "local" | "stage" | "production"): Promise<VerifyTokenResponse>;
10
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC7B,KAAK,EAAE,MAAM,EACb,WAAW,GAAE,OAAO,GAAG,OAAO,GAAG,YAA2B,GAC7D,OAAO,CAAC,mBAAmB,CAAC,CAmC9B"}
package/dist/types.d.ts CHANGED
@@ -99,4 +99,15 @@ export interface SDKOptions {
99
99
  onSuccess?: (data: any) => void;
100
100
  onError?: (error: Error) => void;
101
101
  }
102
+ export interface VerifyTokenResponse {
103
+ valid: boolean;
104
+ user?: {
105
+ id: string | number;
106
+ email: string;
107
+ type?: string;
108
+ [key: string]: any;
109
+ };
110
+ expiresAt?: string;
111
+ error?: string;
112
+ }
102
113
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@a-tech.jo/auth-sdk",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "A-Tech Authentication SDK for React and Next.js",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -30,7 +30,8 @@
30
30
  "example": "npm run dev --workspace=example",
31
31
  "pack": "npm pack",
32
32
  "clean": "rm -rf dist node_modules/.cache *.tgz example/.next",
33
- "prepublishOnly": "npm run clean && npm run build"
33
+ "prepublishOnly": "npm run clean && npm run build",
34
+ "publish": "npm publish --access public"
34
35
  },
35
36
  "peerDependencies": {
36
37
  "react": ">=18.0.0",