hi-secure 1.0.6 → 1.0.10

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.
Files changed (101) hide show
  1. package/dist/adapters/ArgonAdapter.js +1 -1
  2. package/dist/adapters/ArgonAdapter.js.map +1 -1
  3. package/dist/adapters/ExpressRLAdapter.d.ts.map +1 -1
  4. package/dist/adapters/ExpressRLAdapter.js +1 -2
  5. package/dist/adapters/ExpressRLAdapter.js.map +1 -1
  6. package/dist/adapters/ExpressValidatorAdapter.d.ts.map +1 -1
  7. package/dist/adapters/ExpressValidatorAdapter.js +1 -39
  8. package/dist/adapters/ExpressValidatorAdapter.js.map +1 -1
  9. package/dist/adapters/GoogleAdapter.d.ts.map +1 -1
  10. package/dist/adapters/GoogleAdapter.js +0 -101
  11. package/dist/adapters/GoogleAdapter.js.map +1 -1
  12. package/dist/adapters/JWTAdapter.d.ts.map +1 -1
  13. package/dist/adapters/JWTAdapter.js +3 -210
  14. package/dist/adapters/JWTAdapter.js.map +1 -1
  15. package/dist/adapters/RLFlexibleAdapter.d.ts.map +1 -1
  16. package/dist/adapters/RLFlexibleAdapter.js +0 -52
  17. package/dist/adapters/RLFlexibleAdapter.js.map +1 -1
  18. package/dist/adapters/SanitizeHtmlAdapter.d.ts +0 -3
  19. package/dist/adapters/SanitizeHtmlAdapter.d.ts.map +1 -1
  20. package/dist/adapters/SanitizeHtmlAdapter.js +2 -71
  21. package/dist/adapters/SanitizeHtmlAdapter.js.map +1 -1
  22. package/dist/adapters/XSSAdapter.d.ts +0 -10
  23. package/dist/adapters/XSSAdapter.d.ts.map +1 -1
  24. package/dist/adapters/XSSAdapter.js +2 -19
  25. package/dist/adapters/XSSAdapter.js.map +1 -1
  26. package/dist/adapters/ZodAdapter.d.ts.map +1 -1
  27. package/dist/adapters/ZodAdapter.js +2 -6
  28. package/dist/adapters/ZodAdapter.js.map +1 -1
  29. package/dist/core/HiSecure.d.ts +15 -2
  30. package/dist/core/HiSecure.d.ts.map +1 -1
  31. package/dist/core/HiSecure.js +130 -37
  32. package/dist/core/HiSecure.js.map +1 -1
  33. package/dist/core/useSecure.d.ts +4 -0
  34. package/dist/core/useSecure.d.ts.map +1 -1
  35. package/dist/core/useSecure.js +19 -114
  36. package/dist/core/useSecure.js.map +1 -1
  37. package/dist/index.d.ts +4 -4
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +6 -19
  40. package/dist/index.js.map +1 -1
  41. package/dist/managers/AuthManager.d.ts.map +1 -1
  42. package/dist/managers/AuthManager.js +1 -89
  43. package/dist/managers/AuthManager.js.map +1 -1
  44. package/dist/managers/CorsManager.d.ts.map +1 -1
  45. package/dist/managers/CorsManager.js +1 -19
  46. package/dist/managers/CorsManager.js.map +1 -1
  47. package/dist/managers/HashManager.d.ts.map +1 -1
  48. package/dist/managers/HashManager.js +0 -243
  49. package/dist/managers/HashManager.js.map +1 -1
  50. package/dist/managers/JsonManager.d.ts.map +1 -1
  51. package/dist/managers/JsonManager.js +1 -77
  52. package/dist/managers/JsonManager.js.map +1 -1
  53. package/dist/managers/RateLimitManager.d.ts.map +1 -1
  54. package/dist/managers/RateLimitManager.js +3 -17
  55. package/dist/managers/RateLimitManager.js.map +1 -1
  56. package/dist/managers/SanitizerManager.d.ts +0 -6
  57. package/dist/managers/SanitizerManager.d.ts.map +1 -1
  58. package/dist/managers/SanitizerManager.js +1 -213
  59. package/dist/managers/SanitizerManager.js.map +1 -1
  60. package/dist/managers/ValidatorManager.d.ts.map +1 -1
  61. package/dist/managers/ValidatorManager.js +1 -109
  62. package/dist/managers/ValidatorManager.js.map +1 -1
  63. package/dist/middlewares/errorHandler.d.ts.map +1 -1
  64. package/dist/middlewares/errorHandler.js +0 -19
  65. package/dist/middlewares/errorHandler.js.map +1 -1
  66. package/dist/utils/deepFreeze.d.ts.map +1 -1
  67. package/dist/utils/deepFreeze.js +0 -25
  68. package/dist/utils/deepFreeze.js.map +1 -1
  69. package/dist/utils/deepMerge.d.ts.map +1 -1
  70. package/dist/utils/deepMerge.js +0 -26
  71. package/dist/utils/deepMerge.js.map +1 -1
  72. package/dist/utils/normalizeOptions.d.ts +1 -3
  73. package/dist/utils/normalizeOptions.d.ts.map +1 -1
  74. package/dist/utils/normalizeOptions.js +0 -1
  75. package/dist/utils/normalizeOptions.js.map +1 -1
  76. package/package.json +1 -1
  77. package/src/adapters/ArgonAdapter.ts +1 -1
  78. package/src/adapters/ExpressRLAdapter.ts +1 -2
  79. package/src/adapters/ExpressValidatorAdapter.ts +1 -54
  80. package/src/adapters/GoogleAdapter.ts +0 -129
  81. package/src/adapters/JWTAdapter.ts +5 -259
  82. package/src/adapters/RLFlexibleAdapter.ts +2 -65
  83. package/src/adapters/SanitizeHtmlAdapter.ts +3 -87
  84. package/src/adapters/XSSAdapter.ts +11 -19
  85. package/src/adapters/ZodAdapter.ts +2 -51
  86. package/src/core/HiSecure.ts +25 -36
  87. package/src/core/useSecure.ts +5 -7
  88. package/src/index.ts +4 -5
  89. package/src/managers/AuthManager.ts +5 -109
  90. package/src/managers/CorsManager.ts +1 -25
  91. package/src/managers/HashManager.ts +0 -286
  92. package/src/managers/JsonManager.ts +1 -91
  93. package/src/managers/RateLimitManager.ts +3 -262
  94. package/src/managers/SanitizerManager.ts +4 -263
  95. package/src/managers/ValidatorManager.ts +53 -187
  96. package/src/middlewares/errorHandler.ts +1 -176
  97. package/src/utils/deepFreeze.ts +0 -32
  98. package/src/utils/deepMerge.ts +0 -35
  99. package/src/utils/normalizeOptions.ts +16 -133
  100. package/src/examples/e1.ts +0 -1
  101. package/src/test/t1.ts +0 -1
@@ -1,166 +1,3 @@
1
- // import { Request, Response, NextFunction } from "express";
2
- // import { logger } from "../logging";
3
- // import { AdapterError } from "../core/errors/AdapterError";
4
- // import { ValidationError } from "../core/errors/ValidationError";
5
- // import { SanitizerError } from "../core/errors/SanitizerError";
6
- // import { SecurityError } from "../core/errors/SecurityError";
7
-
8
- // export function errorHandler(
9
- // err: any,
10
- // req: Request,
11
- // res: Response,
12
- // _next: NextFunction
13
- // ) {
14
- // // Normalize unknown errors
15
- // const errorMessage =
16
- // typeof err === "string"
17
- // ? err
18
- // : err?.message || "Unknown error occurred";
19
-
20
- // const errorStack =
21
- // err instanceof Error && err.stack
22
- // ? err.stack.split("\n").slice(0, 2).join(" | ")
23
- // : undefined;
24
-
25
- // // Log error centrally
26
- // logger.error("❌ HiSecure Error Captured", {
27
- // message: errorMessage,
28
- // path: req.path,
29
- // method: req.method,
30
- // stack: errorStack,
31
- // raw: err
32
- // });
33
-
34
- // // ------------------------------
35
- // // CLASSIFIED ERROR RESPONSES
36
- // // ------------------------------
37
-
38
- // if (err instanceof ValidationError) {
39
- // return res.status(400).json({
40
- // success: false,
41
- // error: "VALIDATION_ERROR",
42
- // message: errorMessage
43
- // });
44
- // }
45
-
46
- // if (err instanceof SanitizerError) {
47
- // return res.status(400).json({
48
- // success: false,
49
- // error: "SANITIZER_ERROR",
50
- // message: errorMessage
51
- // });
52
- // }
53
-
54
- // if (err instanceof AdapterError) {
55
- // return res.status(500).json({
56
- // success: false,
57
- // error: "ADAPTER_ERROR",
58
- // message: errorMessage
59
- // });
60
- // }
61
-
62
- // if (err instanceof SecurityError) {
63
- // return res.status(500).json({
64
- // success: false,
65
- // error: "SECURITY_ERROR",
66
- // message: errorMessage
67
- // });
68
- // }
69
-
70
- // // ------------------------------
71
- // // UNEXPECTED ERROR
72
- // // ------------------------------
73
- // return res.status(500).json({
74
- // success: false,
75
- // error: "INTERNAL_SERVER_ERROR",
76
- // message: "An unexpected error occurred in HiSecure middleware."
77
- // });
78
- // }
79
-
80
-
81
-
82
-
83
- // import { Request, Response, NextFunction } from "express";
84
- // import { logger } from "../logging";
85
- // import { AdapterError } from "../core/errors/AdapterError";
86
- // import { ValidationError } from "../core/errors/ValidationError";
87
- // import { SanitizerError } from "../core/errors/SanitizerError";
88
- // import { SecurityError } from "../core/errors/SecurityError";
89
-
90
- // export function errorHandler(
91
- // err: any,
92
- // req: Request,
93
- // res: Response,
94
- // _next: NextFunction
95
- // ) {
96
- // // Normalize unknown errors
97
- // const errorMessage =
98
- // typeof err === "string"
99
- // ? err
100
- // : err?.message || "Unknown error occurred";
101
-
102
- // const errorStack =
103
- // err instanceof Error && err.stack
104
- // ? err.stack.split("\n").slice(0, 2).join(" | ")
105
- // : undefined;
106
-
107
- // // Log error centrally
108
- // logger.error("❌ HiSecure Error Captured", {
109
- // message: errorMessage,
110
- // path: req.path,
111
- // method: req.method,
112
- // stack: errorStack,
113
- // raw: err
114
- // });
115
-
116
- // // ------------------------------
117
- // // CLASSIFIED ERROR RESPONSES
118
- // // ------------------------------
119
-
120
- // if (err instanceof ValidationError) {
121
- // return res.status(400).json({
122
- // success: false,
123
- // error: "VALIDATION_ERROR",
124
- // message: errorMessage
125
- // });
126
- // }
127
-
128
- // if (err instanceof SanitizerError) {
129
- // return res.status(400).json({
130
- // success: false,
131
- // error: "SANITIZER_ERROR",
132
- // message: errorMessage
133
- // });
134
- // }
135
-
136
- // if (err instanceof AdapterError) {
137
- // return res.status(500).json({
138
- // success: false,
139
- // error: "ADAPTER_ERROR",
140
- // message: errorMessage
141
- // });
142
- // }
143
-
144
- // if (err instanceof SecurityError) {
145
- // return res.status(500).json({
146
- // success: false,
147
- // error: "SECURITY_ERROR",
148
- // message: errorMessage
149
- // });
150
- // }
151
-
152
- // // ------------------------------
153
- // // UNEXPECTED ERROR
154
- // // ------------------------------
155
- // return res.status(500).json({
156
- // success: false,
157
- // error: "INTERNAL_SERVER_ERROR",
158
- // message: "An unexpected error occurred in HiSecure middleware."
159
- // });
160
- // }
161
-
162
-
163
-
164
1
  import { Request, Response, NextFunction } from "express";
165
2
  import { logger } from "../logging";
166
3
 
@@ -186,7 +23,7 @@ export function errorHandler(
186
23
  ? err.stack.split("\n").slice(0, 2).join(" | ")
187
24
  : undefined;
188
25
 
189
- // Unified logging
26
+
190
27
  logger.error("❌ HiSecure Error", {
191
28
  type: err?.name || "UnknownError",
192
29
  message,
@@ -198,9 +35,7 @@ export function errorHandler(
198
35
  raw: err,
199
36
  });
200
37
 
201
- // ---------------------------------------------------
202
38
  // 1. HttpError (developer thrown)
203
- // ---------------------------------------------------
204
39
  if (err instanceof HttpError) {
205
40
  return res.status(err.status).json({
206
41
  success: false,
@@ -210,9 +45,7 @@ export function errorHandler(
210
45
  });
211
46
  }
212
47
 
213
- // ---------------------------------------------------
214
48
  // 2. Validation Errors
215
- // ---------------------------------------------------
216
49
  if (err instanceof ValidationError) {
217
50
  return res.status(400).json({
218
51
  success: false,
@@ -221,9 +54,7 @@ export function errorHandler(
221
54
  });
222
55
  }
223
56
 
224
- // ---------------------------------------------------
225
57
  // 3. Sanitizer Errors
226
- // ---------------------------------------------------
227
58
  if (err instanceof SanitizerError) {
228
59
  return res.status(400).json({
229
60
  success: false,
@@ -232,9 +63,7 @@ export function errorHandler(
232
63
  });
233
64
  }
234
65
 
235
- // ---------------------------------------------------
236
66
  // 4. Adapter Errors (hashing, rate-limit, sanitizer, validator ...)
237
- // ---------------------------------------------------
238
67
  if (err instanceof AdapterError) {
239
68
  return res.status(500).json({
240
69
  success: false,
@@ -243,9 +72,7 @@ export function errorHandler(
243
72
  });
244
73
  }
245
74
 
246
- // ---------------------------------------------------
247
75
  // 5. Security Errors (internal library security logic)
248
- // ---------------------------------------------------
249
76
  if (err instanceof SecurityError) {
250
77
  return res.status(500).json({
251
78
  success: false,
@@ -254,9 +81,7 @@ export function errorHandler(
254
81
  });
255
82
  }
256
83
 
257
- // ---------------------------------------------------
258
84
  // 6. Fallback → Unexpected
259
- // ---------------------------------------------------
260
85
  return res.status(500).json({
261
86
  success: false,
262
87
  error: "INTERNAL_SERVER_ERROR",
@@ -1,50 +1,20 @@
1
- // export function deepFreeze<T>(obj: T): T {
2
- // // Freeze the top level object
3
- // Object.freeze(obj);
4
-
5
- // // Now recursively freeze nested objects
6
- // Object.getOwnPropertyNames(obj).forEach((prop) => {
7
- // // @ts-ignore
8
- // const value = obj[prop];
9
-
10
- // if (
11
- // value &&
12
- // (typeof value === "object" || typeof value === "function") &&
13
- // !Object.isFrozen(value)
14
- // ) {
15
- // deepFreeze(value); // recursive freeze
16
- // }
17
- // });
18
-
19
- // return obj;
20
- // }
21
-
22
-
23
-
24
-
25
1
  export function deepFreeze<T>(obj: T, visited = new WeakSet()): T {
26
- // Handle primitives and null/undefined
27
2
  if (obj === null || obj === undefined) return obj;
28
3
  if (typeof obj !== 'object' && typeof obj !== 'function') return obj;
29
4
 
30
- // Handle circular references
31
5
  if (visited.has(obj)) return obj;
32
6
  visited.add(obj);
33
7
 
34
- // Don't freeze built-in objects that shouldn't be frozen
35
8
  const constructor = obj.constructor;
36
9
  const builtIns = [Date, RegExp, Map, Set, WeakMap, WeakSet, Promise];
37
10
  if (builtIns.some(builtIn => obj instanceof builtIn)) {
38
11
  return obj;
39
12
  }
40
13
 
41
- // Don't freeze functions
42
14
  if (typeof obj === 'function') return obj;
43
15
 
44
- // Freeze the object itself
45
16
  Object.freeze(obj);
46
17
 
47
- // Freeze array elements
48
18
  if (Array.isArray(obj)) {
49
19
  for (const item of obj) {
50
20
  if (item && typeof item === 'object') {
@@ -54,7 +24,6 @@ export function deepFreeze<T>(obj: T, visited = new WeakSet()): T {
54
24
  return obj;
55
25
  }
56
26
 
57
- // Freeze object properties
58
27
  const props = Object.getOwnPropertyNames(obj);
59
28
  for (const prop of props) {
60
29
  const value = (obj as any)[prop];
@@ -63,7 +32,6 @@ export function deepFreeze<T>(obj: T, visited = new WeakSet()): T {
63
32
  }
64
33
  }
65
34
 
66
- // Freeze symbol properties
67
35
  const symbols = Object.getOwnPropertySymbols(obj);
68
36
  for (const sym of symbols) {
69
37
  const value = (obj as any)[sym];
@@ -1,32 +1,3 @@
1
- // export function deepMerge<T>(target: T, source: Partial<T>): T {
2
- // if (!source) return target;
3
-
4
- // const output: any = Array.isArray(target) ? [...(target as any)] : { ...(target as any) };
5
-
6
- // for (const key of Object.keys(source) as Array<keyof typeof source>) {
7
- // const sourceValue = (source as any)[key];
8
- // const targetValue = (target as any)[key];
9
-
10
- // const shouldRecurse =
11
- // sourceValue &&
12
- // typeof sourceValue === "object" &&
13
- // !Array.isArray(sourceValue) &&
14
- // targetValue &&
15
- // typeof targetValue === "object";
16
-
17
- // if (shouldRecurse) {
18
- // output[key] = deepMerge(targetValue, sourceValue);
19
- // } else {
20
- // output[key] = sourceValue;
21
- // }
22
- // }
23
-
24
- // return output;
25
- // }
26
-
27
-
28
-
29
-
30
1
  export function deepMerge<T extends object, U extends Partial<T>>(
31
2
  target: T,
32
3
  source: U,
@@ -48,22 +19,18 @@ export function deepMerge<T extends object, U extends Partial<T>>(
48
19
  const sourceValue = (source as any)[key];
49
20
  const targetValue = (target as any)[key];
50
21
 
51
- // Skip undefined values if configured
52
22
  if (skipUndefined && sourceValue === undefined) continue;
53
23
 
54
- // Handle null explicitly
55
24
  if (sourceValue === null) {
56
25
  output[key] = null;
57
26
  continue;
58
27
  }
59
28
 
60
- // Merge arrays if option enabled
61
29
  if (mergeArrays && Array.isArray(targetValue) && Array.isArray(sourceValue)) {
62
30
  output[key] = [...targetValue, ...sourceValue];
63
31
  continue;
64
32
  }
65
33
 
66
- // Recursive merge for plain objects
67
34
  if (sourceValue && typeof sourceValue === 'object' &&
68
35
  targetValue && typeof targetValue === 'object' &&
69
36
  !Array.isArray(sourceValue) && !Array.isArray(targetValue) &&
@@ -73,11 +40,9 @@ export function deepMerge<T extends object, U extends Partial<T>>(
73
40
  continue;
74
41
  }
75
42
 
76
- // Overwrite for everything else
77
43
  output[key] = sourceValue;
78
44
  }
79
45
 
80
- // Handle symbol properties
81
46
  const symbols = Object.getOwnPropertySymbols(source);
82
47
  for (const sym of symbols) {
83
48
  output[sym] = (source as any)[sym];
@@ -1,125 +1,8 @@
1
-
2
- // import { SecureOptions } from "../core/types/SecureOptions.js";
3
-
4
- // export interface NormalizedOptions {
5
- // cors: { enabled: boolean; options?: any };
6
- // rateLimit: { enabled: boolean; mode?: "strict" | "relaxed" | undefined; options?: any };
7
- // sanitize: { enabled: boolean };
8
- // validate: { enabled: boolean; schema?: any };
9
- // json: { enabled: boolean; options?: any };
10
-
11
- // /** NEW */
12
- // auth: { enabled: boolean; required: boolean };
13
- // }
14
-
15
- // export function normalizeOptions(input?: SecureOptions | false): NormalizedOptions {
16
- // if (input === false) {
17
- // return {
18
- // cors: { enabled: false },
19
- // rateLimit: { enabled: false, mode: undefined, options: undefined },
20
- // sanitize: { enabled: false },
21
- // validate: { enabled: false },
22
- // json: { enabled: false },
23
- // auth: { enabled: false, required: true }
24
- // };
25
- // }
26
-
27
- // const opts = input || {};
28
-
29
- // return {
30
- // cors: {
31
- // enabled: opts.cors === undefined ? true : opts.cors !== false,
32
- // options: typeof opts.cors === "object" ? opts.cors : undefined
33
- // },
34
-
35
- // rateLimit: normalizeRateLimit(opts.rateLimit),
36
-
37
- // sanitize: {
38
- // enabled: opts.sanitize === undefined ? true : opts.sanitize !== false
39
- // },
40
-
41
- // validate: {
42
- // enabled: !!opts.validate,
43
- // schema: opts.validate || undefined
44
- // },
45
-
46
- // json: {
47
- // enabled: opts.json === undefined ? true : opts.json !== false,
48
- // options: typeof opts.json === "object" ? opts.json : undefined
49
- // },
50
-
51
- // auth: normalizeAuth(opts.auth)
52
- // };
53
- // }
54
-
55
- // // ---------------------------------------------------------------
56
- // // RATE LIMIT — EXACT TYPES, NO TS ERROR
57
- // // ---------------------------------------------------------------
58
- // function normalizeRateLimit(value: SecureOptions["rateLimit"]): {
59
- // enabled: boolean;
60
- // mode?: "strict" | "relaxed" | undefined;
61
- // options?: any;
62
- // } {
63
- // if (value === false) {
64
- // return { enabled: false, mode: undefined, options: undefined };
65
- // }
66
-
67
- // if (value === "strict") {
68
- // return {
69
- // enabled: true,
70
- // mode: "strict",
71
- // options: { max: 5, windowMs: 10000 }
72
- // };
73
- // }
74
-
75
- // if (value === "relaxed") {
76
- // return {
77
- // enabled: true,
78
- // mode: "relaxed",
79
- // options: { max: 100, windowMs: 60000 }
80
- // };
81
- // }
82
-
83
- // if (typeof value === "object") {
84
- // return {
85
- // enabled: true,
86
- // mode: undefined, // VERY IMPORTANT!
87
- // options: value
88
- // };
89
- // }
90
-
91
- // // Default → enabled and optional fields omitted
92
- // return {
93
- // enabled: true,
94
- // mode: undefined,
95
- // options: undefined
96
- // };
97
- // }
98
-
99
- // // ---------------------------------------------------------------
100
- // // AUTH NORMALIZER — EXACT FOR useSecure
101
- // // ---------------------------------------------------------------
102
- // function normalizeAuth(value: SecureOptions["auth"]) {
103
- // if (value === false) return { enabled: false, required: true };
104
-
105
- // if (value === true || value === undefined)
106
- // return { enabled: true, required: true };
107
-
108
- // return {
109
- // enabled: true,
110
- // required: value.required !== false
111
- // };
112
- // }
113
-
114
-
115
-
116
-
117
- // src/utils/normalizeOptions.ts
118
1
  import {
119
2
  SecureOptions,
120
- AuthOptions, // ✅ ADD THIS
121
- RateLimitOptions, // ✅ ADD THIS
122
- SanitizeOptions // ✅ ADD THIS
3
+ AuthOptions,
4
+ RateLimitOptions,
5
+ SanitizeOptions
123
6
  } from "../core/types/SecureOptions.js";
124
7
 
125
8
  export interface NormalizedOptions {
@@ -218,22 +101,22 @@ function normalizeRateLimit(value: SecureOptions["rateLimit"]): NormalizedOption
218
101
  }
219
102
 
220
103
  function normalizeAuth(value: SecureOptions["auth"]): NormalizedOptions["auth"] {
104
+
105
+ // if (value === false) {
106
+ // return { enabled: false, required: false };
107
+ // }
221
108
 
222
- if (value === false) {
223
- return { enabled: false, required: false };
224
- }
225
-
226
- if (value === true || value === undefined) {
227
- return { enabled: true, required: true };
228
- }
109
+ // if (value === true || value === undefined) {
110
+ // return { enabled: true, required: true };
111
+ // }
229
112
 
230
113
 
231
- // if (value === undefined) {
232
- // return { enabled: false, required: false };
233
- // }
234
- // if (value === true) {
235
- // return { enabled: true, required: true };
236
- // }
114
+ if (value === undefined) {
115
+ return { enabled: false, required: false };
116
+ }
117
+ if (value === true) {
118
+ return { enabled: true, required: true };
119
+ }
237
120
 
238
121
 
239
122
  const authOptions = value as AuthOptions;
@@ -1 +0,0 @@
1
- // baad mein krte hai ise
package/src/test/t1.ts DELETED
@@ -1 +0,0 @@
1
- // dekhete hai baad mein