ag-common 0.0.868 → 0.0.870

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.
@@ -26,6 +26,7 @@ const returnCode = (statusCode, body, extraHeaders, fullSiteUrl) => {
26
26
  return {
27
27
  headers,
28
28
  statusCode,
29
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
30
  body: (!body ? undefined : JSON.stringify(body, null, 2)),
30
31
  };
31
32
  };
@@ -38,6 +39,7 @@ exports.returnCode = returnCode;
38
39
  */
39
40
  const stripPKs = (record, keepPk = true) => {
40
41
  if (!record) {
42
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
43
  return null;
42
44
  }
43
45
  // @ts-ignore
@@ -113,7 +113,7 @@ const getItemsDynamo = (params) => __awaiter(void 0, void 0, void 0, function* (
113
113
  const allItems = [];
114
114
  responses.forEach((result) => {
115
115
  var _a, _b;
116
- const items = (_b = (_a = result.Responses) === null || _a === void 0 ? void 0 : _a[params.tableName]) !== null && _b !== void 0 ? _b : [];
116
+ const items = ((_b = (_a = result.Responses) === null || _a === void 0 ? void 0 : _a[params.tableName]) !== null && _b !== void 0 ? _b : []);
117
117
  allItems.push(...items);
118
118
  });
119
119
  return { data: allItems };
@@ -12,10 +12,11 @@ const extractSum = ({ str, regex }) => {
12
12
  };
13
13
  /** ensure that dynamo tables in stack dont exceed passed in provisioned limits */
14
14
  const enforceDynamoProvisionCap = ({ tables, readsMax = 25, writesMax = 25, mustEqual = false, }) => {
15
- if (!tables || tables.length === 0) {
15
+ if (tables.length === 0) {
16
16
  (0, log_1.warn)('error in dynamo FT enforce');
17
17
  return;
18
18
  }
19
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
20
  const t = tables[0];
20
21
  const s = (0, json_1.safeStringify)(t.node._children.Resource.node.scope);
21
22
  const reads = extractSum({ str: s, regex: /readCapacityUnits.*/gim });
@@ -109,3 +109,19 @@ export declare function getPresignedPostURL({ bucket, key, maxMb, }: {
109
109
  fields: Record<string, string>;
110
110
  };
111
111
  }>;
112
+ /**
113
+ * Generate a presigned PUT URL for direct browser upload.
114
+ * Unlike getPresignedPostURL (which returns url + fields for multipart form),
115
+ * this returns a single URL for a simple PUT request.
116
+ */
117
+ export declare function getPresignedPutUrl({ bucket, key, contentType, expiresIn, }: {
118
+ bucket: string;
119
+ key: string;
120
+ contentType: string;
121
+ /** seconds until URL expires. default 600 (10 minutes) */
122
+ expiresIn?: number;
123
+ }): Promise<{
124
+ error: string;
125
+ } | {
126
+ data: string;
127
+ }>;
@@ -26,8 +26,10 @@ exports.copyFile = exports.deleteFiles = exports.deleteFile = exports.putS3Objec
26
26
  exports.getS3Objects = getS3Objects;
27
27
  exports.listFiles = listFiles;
28
28
  exports.getPresignedPostURL = getPresignedPostURL;
29
+ exports.getPresignedPutUrl = getPresignedPutUrl;
29
30
  const client_s3_1 = require("@aws-sdk/client-s3");
30
31
  const s3_presigned_post_1 = require("@aws-sdk/s3-presigned-post");
32
+ const s3_request_presigner_1 = require("@aws-sdk/s3-request-presigner");
31
33
  const array_1 = require("../../common/helpers/array");
32
34
  const log_1 = require("../../common/helpers/log");
33
35
  const object_1 = require("../../common/helpers/object");
@@ -257,3 +259,24 @@ function getPresignedPostURL(_a) {
257
259
  }
258
260
  });
259
261
  }
262
+ /**
263
+ * Generate a presigned PUT URL for direct browser upload.
264
+ * Unlike getPresignedPostURL (which returns url + fields for multipart form),
265
+ * this returns a single URL for a simple PUT request.
266
+ */
267
+ function getPresignedPutUrl(_a) {
268
+ return __awaiter(this, arguments, void 0, function* ({ bucket, key, contentType, expiresIn = 600, }) {
269
+ try {
270
+ const command = new client_s3_1.PutObjectCommand({
271
+ Bucket: bucket,
272
+ Key: key,
273
+ ContentType: contentType,
274
+ });
275
+ const url = yield (0, s3_request_presigner_1.getSignedUrl)(s3, command, { expiresIn });
276
+ return { data: url };
277
+ }
278
+ catch (e) {
279
+ return { error: e.toString() };
280
+ }
281
+ });
282
+ }
@@ -3,7 +3,7 @@ import type { z } from 'zod';
3
3
  * Convert a Zod object schema to its code representation for use in LLM prompts.
4
4
  * Outputs actual Zod code like: z.object({ field: z.string().nullable().describe("...") })
5
5
  *
6
- * Uses _def.typeName instead of instanceof checks to work across different Zod module instances.
6
+ * Uses Zod 4 internals: _def.type (lowercase string like 'string', 'number', etc.)
7
7
  *
8
8
  * @example
9
9
  * const schema = z.object({
@@ -5,7 +5,7 @@ exports.zodSchemaToString = zodSchemaToString;
5
5
  * Convert a Zod object schema to its code representation for use in LLM prompts.
6
6
  * Outputs actual Zod code like: z.object({ field: z.string().nullable().describe("...") })
7
7
  *
8
- * Uses _def.typeName instead of instanceof checks to work across different Zod module instances.
8
+ * Uses Zod 4 internals: _def.type (lowercase string like 'string', 'number', etc.)
9
9
  *
10
10
  * @example
11
11
  * const schema = z.object({
@@ -32,83 +32,74 @@ function zodSchemaToString(schema) {
32
32
  }
33
33
  return `z.object({\n${fields.join(',\n')}\n})`;
34
34
  }
35
- /**
36
- * Get the type name from a Zod type's internal definition.
37
- * This works across different Zod module instances unlike instanceof.
38
- */
35
+ /** Get the Zod 4 type name from _def.type (e.g. 'string', 'number', 'optional') */
39
36
  function getTypeName(zodType) {
40
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
- return zodType._def.typeName;
37
+ const type = zodType._def.type;
38
+ return typeof type === 'string' ? type : undefined;
42
39
  }
43
- /**
44
- * Recursively convert a Zod type to its code representation
45
- */
40
+ /** Recursively convert a Zod type to its code representation. */
46
41
  function zodTypeToCode(zodType) {
42
+ var _a;
47
43
  const description = zodType.description;
48
44
  const describeChain = description
49
45
  ? `.describe(${JSON.stringify(description)})`
50
46
  : '';
47
+ const def = zodType._def;
51
48
  const typeName = getTypeName(zodType);
52
- // Handle wrapper types first (they wrap inner types)
53
- if (typeName === 'ZodOptional') {
54
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
- const innerType = zodType._def.innerType;
56
- const inner = zodTypeToCode(innerType).replace(/\.describe\([^)]+\)$/, '');
49
+ // Wrapper types (unwrap inner type)
50
+ if (typeName === 'optional') {
51
+ const inner = zodTypeToCode(def.innerType).replace(/\.describe\([^)]+\)$/, '');
57
52
  return `${inner}.optional()${describeChain}`;
58
53
  }
59
- if (typeName === 'ZodNullable') {
60
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
61
- const innerType = zodType._def.innerType;
62
- const inner = zodTypeToCode(innerType).replace(/\.describe\([^)]+\)$/, '');
54
+ if (typeName === 'nullable') {
55
+ const inner = zodTypeToCode(def.innerType).replace(/\.describe\([^)]+\)$/, '');
63
56
  return `${inner}.nullable()${describeChain}`;
64
57
  }
65
- // Handle base types
66
- if (typeName === 'ZodString') {
58
+ // Primitives
59
+ if (typeName === 'string')
67
60
  return `z.string()${describeChain}`;
68
- }
69
- if (typeName === 'ZodNumber') {
61
+ if (typeName === 'number')
70
62
  return `z.number()${describeChain}`;
71
- }
72
- if (typeName === 'ZodBoolean') {
63
+ if (typeName === 'boolean')
73
64
  return `z.boolean()${describeChain}`;
74
- }
75
- if (typeName === 'ZodEnum') {
76
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
77
- const values = zodType._def.values;
65
+ // Enum: _def.entries is { [k]: k }
66
+ if (typeName === 'enum') {
67
+ const values = Object.keys(def.entries);
78
68
  const enumStr = values.map((v) => JSON.stringify(v)).join(', ');
79
69
  return `z.enum([${enumStr}])${describeChain}`;
80
70
  }
81
- if (typeName === 'ZodArray') {
82
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
83
- const elementType = zodType._def.type;
84
- const innerType = zodTypeToCode(elementType);
85
- return `z.array(${innerType})${describeChain}`;
71
+ // Array: _def.element is the element type
72
+ if (typeName === 'array') {
73
+ const inner = zodTypeToCode(def.element);
74
+ return `z.array(${inner})${describeChain}`;
86
75
  }
87
- if (typeName === 'ZodObject') {
88
- // Nested object - recurse
76
+ // Object: recurse into shape
77
+ if (typeName === 'object') {
89
78
  return zodSchemaToString(zodType);
90
79
  }
91
- if (typeName === 'ZodLiteral') {
92
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
93
- const value = zodType._def.value;
80
+ // Literal: _def.values is an array (e.g. ['foo'])
81
+ if (typeName === 'literal') {
82
+ const value = def.values[0];
94
83
  return `z.literal(${JSON.stringify(value)})${describeChain}`;
95
84
  }
96
- if (typeName === 'ZodUnion') {
97
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
98
- const options = zodType._def.options;
99
- const optionsStr = options.map((opt) => zodTypeToCode(opt)).join(', ');
85
+ // Union: _def.options is array of Zod types
86
+ if (typeName === 'union') {
87
+ const optionsStr = def.options
88
+ .map((opt) => zodTypeToCode(opt))
89
+ .join(', ');
100
90
  return `z.union([${optionsStr}])${describeChain}`;
101
91
  }
102
- if (typeName === 'ZodRecord') {
103
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
104
- const valueType = zodType._def.valueType;
105
- return `z.record(${zodTypeToCode(valueType)})${describeChain}`;
92
+ // Record: _def.keyType + _def.valueType (valueType may be undefined for single-arg z.record(keyType))
93
+ if (typeName === 'record') {
94
+ const innerType = ((_a = def.valueType) !== null && _a !== void 0 ? _a : def.keyType);
95
+ return `z.record(${zodTypeToCode(innerType)})${describeChain}`;
106
96
  }
107
- if (typeName === 'ZodTuple') {
108
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
109
- const items = zodType._def.items;
110
- const itemsStr = items.map((item) => zodTypeToCode(item)).join(', ');
97
+ // Tuple: _def.items is array of Zod types
98
+ if (typeName === 'tuple') {
99
+ const itemsStr = def.items
100
+ .map((item) => zodTypeToCode(item))
101
+ .join(', ');
111
102
  return `z.tuple([${itemsStr}])${describeChain}`;
112
103
  }
113
- throw new Error(`Unsupported Zod type: ${typeName} (keys: ${Object.keys(zodType._def).join(', ')})`);
104
+ throw new Error(`Unsupported Zod type: ${typeName} (keys: ${Object.keys(def).join(', ')})`);
114
105
  }
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-enable @typescript-eslint/no-explicit-any */
@@ -71,7 +71,7 @@ exports.notEmpty = notEmpty;
71
71
  * @param ignoreEmpty
72
72
  */
73
73
  function distinctBy(data, key, ignoreEmpty) {
74
- if (!data || data.length === 0) {
74
+ if (data.length === 0) {
75
75
  return data;
76
76
  }
77
77
  const hashSet = new Set();
@@ -28,6 +28,7 @@ function asyncForEach(array, callback, opt) {
28
28
  rem = rest;
29
29
  const proms = part.map((p, i) => callback(p, start + i, array));
30
30
  start += part.length;
31
+ // eslint-disable-next-line no-await-in-loop
31
32
  yield Promise.all(proms);
32
33
  }
33
34
  });
@@ -50,6 +51,7 @@ function asyncMap(array, callback, opt) {
50
51
  rem = rest;
51
52
  const proms = part.map((p, i) => callback(p, start + i, array));
52
53
  start += part.length;
54
+ // eslint-disable-next-line no-await-in-loop
53
55
  const res = yield Promise.all(proms);
54
56
  ret.push(...res);
55
57
  }
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.loadCsvAsJson = loadCsvAsJson;
4
4
  const math_1 = require("./math");
5
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
6
  function loadCsvAsJson(p) {
6
7
  const lines = p.fileData.split(/[\r]?\n/);
7
8
  let sep = ',';
@@ -54,9 +54,7 @@ exports.CSharpToJs = CSharpToJs;
54
54
  */
55
55
  const dateTimeToNearestMinute = (minutes, date) => {
56
56
  const coeff = 1000 * 60 * minutes;
57
- if (!date) {
58
- date = new Date();
59
- }
57
+ date !== null && date !== void 0 ? date : (date = new Date());
60
58
  const rounded = new Date(Math.round(date.getTime() / coeff) * coeff);
61
59
  return rounded;
62
60
  };
@@ -14,10 +14,12 @@ function runGenerator(iter, partialRun) {
14
14
  return __awaiter(this, void 0, void 0, function* () {
15
15
  let curr;
16
16
  do {
17
+ // eslint-disable-next-line no-await-in-loop
17
18
  curr = yield iter.next();
18
- if (!curr.value || curr.value.length === 0) {
19
+ if (curr.value.length === 0) {
19
20
  return;
20
21
  }
22
+ // eslint-disable-next-line no-await-in-loop
21
23
  yield partialRun(curr.value);
22
24
  } while (!curr.done);
23
25
  });
@@ -12,6 +12,7 @@ function groupBy(arr, getKey) {
12
12
  const ret = {};
13
13
  arr.forEach((item) => {
14
14
  const key = getKey(item);
15
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
15
16
  if (!ret[key]) {
16
17
  ret[key] = [];
17
18
  }
@@ -43,6 +44,7 @@ function groupByTwice(arr, getKey, getSubKey) {
43
44
  arr.forEach((item) => {
44
45
  const key = getKey(item);
45
46
  const subkey = getSubKey(item);
47
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
46
48
  if (!ret[key]) {
47
49
  ret[key] = {};
48
50
  }
@@ -2,7 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.memo = memo;
4
4
  const hashCode_1 = require("./hashCode");
5
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
6
  const memoData = {};
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
8
  function memo(func, ...args) {
7
9
  const hc = (0, hashCode_1.hashCode)(JSON.stringify(args));
8
10
  if (!memoData[hc]) {
@@ -27,7 +27,7 @@ export declare const objectAlphaSort: <T>(object: T, depthLeft?: number) => T;
27
27
  * @param entries Could be URLSearchParams
28
28
  * @returns
29
29
  */
30
- export declare function paramsToObject(entries: any): Record<string, string>;
30
+ export declare function paramsToObject(entries: Iterable<[string, string]>): Record<string, string>;
31
31
  /**
32
32
  * stringify an object of key values. Could be used to stringify a querystring url
33
33
  * @param obj
@@ -66,5 +66,5 @@ export declare const removeUndefValuesFromObjectAdditional: <T>(orig: Record<str
66
66
  * @returns
67
67
  */
68
68
  export declare const castStringlyObject: (orig: Record<string, string | string[] | undefined>) => Record<string, string>;
69
- export declare const isObject: (o: any) => any;
69
+ export declare const isObject: (o: unknown) => unknown;
70
70
  export declare const copy: <T>(v: T) => T;
@@ -35,6 +35,7 @@ const objectKeysToLowerCase = (origObj) => {
35
35
  }
36
36
  return Object.keys(origObj).reduce((newObj, key) => {
37
37
  const val = origObj[key];
38
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
39
  const newVal = typeof val === 'object'
39
40
  ? (0, exports.objectKeysToLowerCase)(val)
40
41
  : val;
@@ -67,13 +68,14 @@ const objectAlphaSort = (object, depthLeft = -1) => {
67
68
  return object;
68
69
  }
69
70
  if (object !== null && typeof object === 'object') {
70
- return Object.keys(object)
71
+ return (Object.keys(object)
71
72
  .sort((a, b) => (a.toLowerCase() < b.toLowerCase() ? -1 : 1))
73
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
72
74
  .reduce((result, key) => {
73
75
  //@ts-ignore
74
76
  result[key] = (0, exports.objectAlphaSort)(object[key], depthLeft - 1);
75
77
  return result;
76
- }, {});
78
+ }, {}));
77
79
  }
78
80
  else if (Array.isArray(object)) {
79
81
  //@ts-ignore
@@ -152,6 +154,7 @@ const removeUndefValuesFromObject = (orig) => {
152
154
  const ret = {};
153
155
  Object.entries(orig).forEach(([k, v]) => {
154
156
  if (v !== null && v !== undefined) {
157
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
155
158
  ret[k] = v;
156
159
  }
157
160
  });
@@ -14,7 +14,7 @@ const safeStringify = (obj, indent = 2) => {
14
14
  ? undefined // Duplicate reference found, discard key
15
15
  : cache.push(value) && value // Store value in our collection
16
16
  : value, indent);
17
- cache = null;
17
+ cache = [];
18
18
  return retVal;
19
19
  };
20
20
  exports.safeStringify = safeStringify;
@@ -68,8 +68,9 @@ const ToastIcon = ({ type }) => {
68
68
  }
69
69
  };
70
70
  const ToastItem = ({ toast }) => {
71
+ var _a;
71
72
  const [isPaused, setIsPaused] = (0, react_2.useState)(false);
72
- const remainingTime = (0, react_2.useRef)(toast.options.duration || 0);
73
+ const remainingTime = (0, react_2.useRef)((_a = toast.options.duration) !== null && _a !== void 0 ? _a : 0);
73
74
  const startTime = (0, react_2.useRef)(0);
74
75
  const timerId = (0, react_2.useRef)(null);
75
76
  (0, react_2.useEffect)(() => {
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.0.868",
2
+ "version": "0.0.870",
3
3
  "name": "ag-common",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
@@ -11,15 +11,15 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "@tailwindcss/postcss": "^4.1.18",
14
- "autoprefixer": "^10.4.23",
14
+ "autoprefixer": "^10.4.24",
15
15
  "class-variance-authority": "^0.7.1",
16
16
  "clsx": "^2.1.1",
17
17
  "cross-env": "^10.1.0",
18
18
  "eslint": "^9.39.2",
19
19
  "eslint-config-e7npm": "^0.1.31",
20
20
  "lucide-react": "^0.563.0",
21
- "react": "^19.2.3",
22
- "react-dom": "^19.2.3",
21
+ "react": "^19.2.4",
22
+ "react-dom": "^19.2.4",
23
23
  "tailwind-merge": "^3.4.0",
24
24
  "tailwindcss": "^4.1.18",
25
25
  "tailwindcss-animate": "^1.0.7",
@@ -27,17 +27,18 @@
27
27
  "typescript": "^5.9.3"
28
28
  },
29
29
  "devDependencies": {
30
- "@aws-sdk/client-acm": "^3.966.0",
31
- "@aws-sdk/client-apigatewaymanagementapi": "^3.966.0",
32
- "@aws-sdk/client-dynamodb": "^3.966.0",
33
- "@aws-sdk/client-s3": "^3.966.0",
34
- "@aws-sdk/client-ses": "^3.966.0",
35
- "@aws-sdk/client-sqs": "^3.966.0",
36
- "@aws-sdk/client-sts": "^3.966.0",
37
- "@aws-sdk/lib-dynamodb": "^3.966.0",
38
- "@aws-sdk/s3-presigned-post": "^3.966.0",
39
- "@azure/cosmos": "^4.9.0",
40
- "@google/genai": "^1.35.0",
30
+ "@aws-sdk/client-acm": "^3.983.0",
31
+ "@aws-sdk/client-apigatewaymanagementapi": "^3.983.0",
32
+ "@aws-sdk/client-dynamodb": "^3.983.0",
33
+ "@aws-sdk/client-s3": "^3.983.0",
34
+ "@aws-sdk/client-ses": "^3.983.0",
35
+ "@aws-sdk/client-sqs": "^3.983.0",
36
+ "@aws-sdk/client-sts": "^3.983.0",
37
+ "@aws-sdk/lib-dynamodb": "^3.983.0",
38
+ "@aws-sdk/s3-presigned-post": "^3.983.0",
39
+ "@aws-sdk/s3-request-presigner": "^3.983.0",
40
+ "@azure/cosmos": "^4.9.1",
41
+ "@google/genai": "^1.40.0",
41
42
  "@radix-ui/react-accordion": "^1.2.12",
42
43
  "@radix-ui/react-avatar": "^1.1.11",
43
44
  "@radix-ui/react-checkbox": "^1.3.3",
@@ -52,29 +53,29 @@
52
53
  "@radix-ui/react-slot": "^1.2.4",
53
54
  "@radix-ui/react-switch": "^1.2.6",
54
55
  "@radix-ui/react-toast": "^1.2.15",
55
- "@smithy/types": "^4.11.0",
56
- "@storybook/addon-docs": "^10.1.11",
57
- "@storybook/addon-links": "^10.1.11",
56
+ "@smithy/types": "^4.12.0",
57
+ "@storybook/addon-docs": "^10.2.6",
58
+ "@storybook/addon-links": "^10.2.6",
58
59
  "@storybook/addon-styling-webpack": "^3.0.0",
59
60
  "@storybook/addons": "^7.6.17",
60
- "@storybook/react-vite": "^10.1.11",
61
- "@storybook/react-webpack5": "^10.1.11",
61
+ "@storybook/react-vite": "^10.2.6",
62
+ "@storybook/react-webpack5": "^10.2.6",
62
63
  "@types/jsonwebtoken": "^9.0.10",
63
- "@types/node": "^25.0.3",
64
- "@types/react": "^19.2.7",
64
+ "@types/node": "^25.2.0",
65
+ "@types/react": "^19.2.11",
65
66
  "@types/react-dom": "^19.2.3",
66
- "@typescript-eslint/eslint-plugin": "^8.52.0",
67
- "@typescript-eslint/parser": "^8.52.0",
68
- "aws-cdk-lib": "^2.234.1",
67
+ "@typescript-eslint/eslint-plugin": "^8.54.0",
68
+ "@typescript-eslint/parser": "^8.54.0",
69
+ "aws-cdk-lib": "^2.237.1",
69
70
  "buffer": "^6.0.3",
70
- "eslint-plugin-storybook": "^10.1.11",
71
+ "eslint-plugin-storybook": "^10.2.6",
71
72
  "globstar": "^1.0.0",
72
73
  "jsonwebtoken": "^9.0.3",
73
- "jwks-rsa": "^3.2.0",
74
+ "jwks-rsa": "^3.2.2",
74
75
  "node-cache": "^5.1.2",
75
76
  "rimraf": "^6.1.2",
76
- "storybook": "^10.1.11",
77
- "zod": "^3.25.76"
77
+ "storybook": "^10.2.6",
78
+ "zod": "^4.3.6"
78
79
  },
79
80
  "files": [
80
81
  "dist/**/*",
@@ -83,10 +84,8 @@
83
84
  ],
84
85
  "scripts": {
85
86
  "preinstall": "npx only-allow pnpm",
86
- "format": "eslint src --fix && eslint stories --fix",
87
- "lint:tsc": "tsc --noEmit",
88
- "lint:eslint": "eslint src",
89
- "lint": "pnpm run /^lint:/",
87
+ "format": "eslint src --fix && eslint stories --fix && tsc --noEmit",
88
+ "lint": "eslint src && tsc --noEmit",
90
89
  "build": "rimraf dist && tsc -p tsconfig.build.json",
91
90
  "start": "cross-env BROWSER=none cross-env storybook dev -p 6006",
92
91
  "build-storybook": "storybook build -o docs --quiet",