@salesforce/webapp-template-feature-react-global-search-experimental 1.3.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.
Files changed (111) hide show
  1. package/LICENSE.txt +82 -0
  2. package/README.md +415 -0
  3. package/dist/.a4drules/build-validation.md +81 -0
  4. package/dist/.a4drules/code-quality.md +150 -0
  5. package/dist/.a4drules/graphql/tools/knowledge/lds-explore-graphql-schema.md +227 -0
  6. package/dist/.a4drules/graphql/tools/knowledge/lds-generate-graphql-mutationquery.md +211 -0
  7. package/dist/.a4drules/graphql/tools/knowledge/lds-generate-graphql-readquery.md +185 -0
  8. package/dist/.a4drules/graphql/tools/knowledge/lds-guide-graphql.md +205 -0
  9. package/dist/.a4drules/graphql/tools/schemas/shared.graphqls +1150 -0
  10. package/dist/.a4drules/graphql.md +98 -0
  11. package/dist/.a4drules/images.md +13 -0
  12. package/dist/.a4drules/react.md +361 -0
  13. package/dist/.a4drules/react_image_processing.md +45 -0
  14. package/dist/.a4drules/typescript.md +224 -0
  15. package/dist/.forceignore +15 -0
  16. package/dist/.husky/pre-commit +4 -0
  17. package/dist/.prettierignore +11 -0
  18. package/dist/.prettierrc +17 -0
  19. package/dist/CHANGELOG.md +11 -0
  20. package/dist/README.md +18 -0
  21. package/dist/config/project-scratch-def.json +13 -0
  22. package/dist/force-app/main/default/webapplications/feature-react-global-search/.prettierignore +9 -0
  23. package/dist/force-app/main/default/webapplications/feature-react-global-search/.prettierrc +11 -0
  24. package/dist/force-app/main/default/webapplications/feature-react-global-search/eslint.config.js +113 -0
  25. package/dist/force-app/main/default/webapplications/feature-react-global-search/feature-react-global-search.webapplication-meta.xml +7 -0
  26. package/dist/force-app/main/default/webapplications/feature-react-global-search/index.html +13 -0
  27. package/dist/force-app/main/default/webapplications/feature-react-global-search/package.json +42 -0
  28. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/api/graphql-operations-types.ts +127 -0
  29. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/api/objectInfoService.ts +229 -0
  30. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/api/utils/query/highRevenueAccountsQuery.graphql +29 -0
  31. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/app.tsx +13 -0
  32. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/appLayout.tsx +9 -0
  33. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/assets/icons/book.svg +3 -0
  34. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/assets/icons/copy.svg +4 -0
  35. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/assets/icons/rocket.svg +3 -0
  36. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/assets/icons/star.svg +3 -0
  37. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/assets/images/codey-1.png +0 -0
  38. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/assets/images/codey-2.png +0 -0
  39. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/assets/images/codey-3.png +0 -0
  40. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/assets/images/vibe-codey.svg +194 -0
  41. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/FiltersPanel.tsx +373 -0
  42. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/LoadingFallback.tsx +61 -0
  43. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/SearchResultCard.tsx +127 -0
  44. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/alerts/status-alert.tsx +45 -0
  45. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/detail/DetailFields.tsx +57 -0
  46. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/detail/DetailHeader.tsx +42 -0
  47. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/filters/FilterField.tsx +54 -0
  48. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/filters/FilterInput.tsx +55 -0
  49. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/filters/FilterSelect.tsx +72 -0
  50. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/forms/filters-form.tsx +114 -0
  51. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/forms/submit-button.tsx +47 -0
  52. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/layout/card-layout.tsx +19 -0
  53. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/search/ResultCardFields.tsx +71 -0
  54. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/search/SearchHeader.tsx +23 -0
  55. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/search/SearchPagination.tsx +162 -0
  56. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/search/SearchResultsPanel.tsx +184 -0
  57. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/shared/GlobalSearchInput.tsx +110 -0
  58. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/ui/alert.tsx +65 -0
  59. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/ui/button.tsx +56 -0
  60. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/ui/card.tsx +77 -0
  61. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/ui/field.tsx +111 -0
  62. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/ui/index.ts +71 -0
  63. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/ui/input.tsx +19 -0
  64. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/ui/label.tsx +19 -0
  65. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/ui/pagination.tsx +99 -0
  66. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/ui/select.tsx +151 -0
  67. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/ui/skeleton.tsx +7 -0
  68. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/ui/spinner.tsx +21 -0
  69. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/ui/table.tsx +114 -0
  70. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/components/ui/tabs.tsx +115 -0
  71. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/constants.ts +36 -0
  72. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/features/global-search/index.ts +65 -0
  73. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/hooks/form.tsx +208 -0
  74. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/hooks/useObjectSearchData.ts +419 -0
  75. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/hooks/useRecordDetail.ts +127 -0
  76. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/lib/utils.ts +6 -0
  77. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/pages/About.tsx +12 -0
  78. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/pages/DetailPage.tsx +128 -0
  79. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/pages/GlobalSearch.tsx +173 -0
  80. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/pages/Home.tsx +13 -0
  81. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/pages/NotFound.tsx +18 -0
  82. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/routes.tsx +50 -0
  83. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/styles/global.css +108 -0
  84. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/types/filters/filters.ts +122 -0
  85. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/types/filters/picklist.ts +32 -0
  86. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/types/objectInfo/objectInfo.ts +166 -0
  87. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/types/search/searchResults.ts +228 -0
  88. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/utils/apiUtils.ts +125 -0
  89. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/utils/cacheUtils.ts +76 -0
  90. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/utils/debounce.ts +89 -0
  91. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/utils/fieldUtils.ts +186 -0
  92. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/utils/fieldValueExtractor.ts +67 -0
  93. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/utils/filterUtils.ts +32 -0
  94. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/utils/formUtils.ts +130 -0
  95. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/utils/paginationUtils.ts +49 -0
  96. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/utils/recordUtils.ts +75 -0
  97. package/dist/force-app/main/default/webapplications/feature-react-global-search/src/utils/sanitizationUtils.ts +49 -0
  98. package/dist/force-app/main/default/webapplications/feature-react-global-search/tsconfig.json +36 -0
  99. package/dist/force-app/main/default/webapplications/feature-react-global-search/tsconfig.node.json +13 -0
  100. package/dist/force-app/main/default/webapplications/feature-react-global-search/vite-env.d.ts +1 -0
  101. package/dist/force-app/main/default/webapplications/feature-react-global-search/vite.config.ts +82 -0
  102. package/dist/force-app/main/default/webapplications/feature-react-global-search/vitest-env.d.ts +2 -0
  103. package/dist/force-app/main/default/webapplications/feature-react-global-search/vitest.config.ts +11 -0
  104. package/dist/force-app/main/default/webapplications/feature-react-global-search/vitest.setup.ts +1 -0
  105. package/dist/force-app/main/default/webapplications/feature-react-global-search/webapplication.json +7 -0
  106. package/dist/jest.config.js +6 -0
  107. package/dist/package.json +37 -0
  108. package/dist/scripts/apex/hello.apex +10 -0
  109. package/dist/scripts/soql/account.soql +6 -0
  110. package/dist/sfdx-project.json +12 -0
  111. package/package.json +32 -0
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Sanitization Utilities
3
+ *
4
+ * Utility functions for sanitizing user input to prevent injection attacks.
5
+ * These utilities provide basic sanitization for filter values.
6
+ */
7
+
8
+ /**
9
+ * Sanitizes a string value by removing potentially dangerous characters
10
+ * and trimming whitespace.
11
+ *
12
+ * This is a basic sanitization - for production, consider using a library like DOMPurify for more
13
+ * comprehensive sanitization.
14
+ * Also, note this is NOT an end-to-end security control.
15
+ * Client-side sanitization can be bypassed by any attacker using `curl` or Postman.
16
+ * To prevent injection attacks (SOSL Injection, XSS):
17
+ * 1. The BACKEND (Salesforce API) handles SOSL injection if parameters are passed correctly.
18
+ * 2. React handles XSS automatically when rendering variables in JSX (e.g., <div>{value}</div>).
19
+ * Do not rely on this function for end-to-end security enforcement.
20
+ *
21
+ * @param value - The string value to sanitize
22
+ * @returns Sanitized string value
23
+ *
24
+ * @remarks
25
+ * - Removes control characters (except newlines, tabs, carriage returns)
26
+ * - Trims leading/trailing whitespace
27
+ * - Limits length to prevent DoS attacks (default: 1000 characters)
28
+ * - Preserves alphanumeric, spaces, and common punctuation
29
+ *
30
+ * @example
31
+ * ```tsx
32
+ * const sanitized = sanitizeFilterValue(userInput);
33
+ * ```
34
+ */
35
+ export function sanitizeFilterValue(value: string, maxLength: number = 1000): string {
36
+ if (typeof value !== "string") {
37
+ return "";
38
+ }
39
+
40
+ let sanitized = value.trim();
41
+
42
+ if (sanitized.length > maxLength) {
43
+ sanitized = sanitized.substring(0, maxLength);
44
+ }
45
+
46
+ sanitized = sanitized.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, "");
47
+
48
+ return sanitized;
49
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "useDefineForClassFields": true,
5
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
6
+ "module": "ESNext",
7
+ "skipLibCheck": true,
8
+
9
+ /* Bundler mode */
10
+ "moduleResolution": "bundler",
11
+ "allowImportingTsExtensions": true,
12
+ "resolveJsonModule": true,
13
+ "isolatedModules": true,
14
+ "noEmit": true,
15
+ "jsx": "react-jsx",
16
+
17
+ /* Linting */
18
+ "strict": true,
19
+ "noUnusedLocals": true,
20
+ "noUnusedParameters": true,
21
+ "noFallthroughCasesInSwitch": true,
22
+
23
+ /* Path mapping */
24
+ "baseUrl": ".",
25
+ "paths": {
26
+ "@/*": ["./src/*"],
27
+ "@api/*": ["./src/api/*"],
28
+ "@components/*": ["./src/components/*"],
29
+ "@utils/*": ["./src/utils/*"],
30
+ "@styles/*": ["./src/styles/*"],
31
+ "@assets/*": ["./src/assets/*"]
32
+ }
33
+ },
34
+ "include": ["src", "vite-env.d.ts", "vitest-env.d.ts"],
35
+ "references": [{ "path": "./tsconfig.node.json" }]
36
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "compilerOptions": {
3
+ "composite": true,
4
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
5
+ "skipLibCheck": true,
6
+ "module": "ESNext",
7
+ "moduleResolution": "bundler",
8
+ "allowSyntheticDefaultImports": true,
9
+ "strict": true,
10
+ "outDir": "./build"
11
+ },
12
+ "include": ["vite.config.ts"]
13
+ }
@@ -0,0 +1 @@
1
+ /// <reference types="vite/client" />
@@ -0,0 +1,82 @@
1
+ import { defineConfig } from 'vite';
2
+ import react from '@vitejs/plugin-react';
3
+ import path from 'path';
4
+ import { resolve } from 'path';
5
+ import tailwindcss from '@tailwindcss/vite';
6
+ import salesforce from '@salesforce/vite-plugin-webapp-experimental';
7
+
8
+ export default defineConfig(({ mode }) => {
9
+ return {
10
+ plugins: [tailwindcss(), react(), salesforce()],
11
+
12
+ // Build configuration for MPA
13
+ build: {
14
+ outDir: resolve(__dirname, 'dist'),
15
+ assetsDir: 'assets',
16
+ sourcemap: false,
17
+ },
18
+
19
+ // Resolve aliases (shared between build and test)
20
+ resolve: {
21
+ alias: {
22
+ '@': path.resolve(__dirname, './src'),
23
+ '@api': path.resolve(__dirname, './src/api'),
24
+ '@components': path.resolve(__dirname, './src/components'),
25
+ '@utils': path.resolve(__dirname, './src/utils'),
26
+ '@styles': path.resolve(__dirname, './src/styles'),
27
+ '@assets': path.resolve(__dirname, './src/assets'),
28
+ },
29
+ },
30
+
31
+ // Vitest configuration
32
+ test: {
33
+ // Override root for tests (build uses src/pages as root)
34
+ root: resolve(__dirname),
35
+
36
+ // Use jsdom environment for React component testing
37
+ environment: 'jsdom',
38
+
39
+ // Setup files to run before each test
40
+ setupFiles: ['./src/test/setup.ts'],
41
+
42
+ // Global test patterns
43
+ include: [
44
+ 'src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}',
45
+ 'src/**/__tests__/**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}',
46
+ ],
47
+
48
+ // Coverage configuration
49
+ coverage: {
50
+ provider: 'v8',
51
+ reporter: ['text', 'html', 'clover', 'json'],
52
+ exclude: [
53
+ 'node_modules/',
54
+ 'src/test/',
55
+ 'src/**/*.d.ts',
56
+ 'src/main.tsx',
57
+ 'src/vite-env.d.ts',
58
+ 'src/components/**/index.ts',
59
+ '**/*.config.ts',
60
+ 'build/',
61
+ 'dist/',
62
+ 'coverage/',
63
+ 'eslint.config.js',
64
+ ],
65
+ thresholds: {
66
+ global: {
67
+ branches: 85,
68
+ functions: 85,
69
+ lines: 85,
70
+ statements: 85,
71
+ },
72
+ },
73
+ },
74
+
75
+ // Test timeout
76
+ testTimeout: 10000,
77
+
78
+ // Globals for easier testing
79
+ globals: true,
80
+ },
81
+ };
82
+ });
@@ -0,0 +1,2 @@
1
+ /// <reference types="vitest" />
2
+ /// <reference types="@testing-library/jest-dom" />
@@ -0,0 +1,11 @@
1
+ import { defineConfig } from 'vitest/config';
2
+ import react from '@vitejs/plugin-react';
3
+
4
+ export default defineConfig({
5
+ plugins: [react()],
6
+ test: {
7
+ globals: true,
8
+ environment: 'jsdom',
9
+ setupFiles: './vitest.setup.ts',
10
+ },
11
+ });
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom/vitest';
@@ -0,0 +1,7 @@
1
+ {
2
+ "outputDir": "dist",
3
+ "routing": {
4
+ "trailingSlash": "never",
5
+ "fallback": "/index.html"
6
+ }
7
+ }
@@ -0,0 +1,6 @@
1
+ const { jestConfig } = require('@salesforce/sfdx-lwc-jest/config');
2
+
3
+ module.exports = {
4
+ ...jestConfig,
5
+ modulePathIgnorePatterns: ['<rootDir>/.localdevserver']
6
+ };
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "@salesforce/webapp-template-base-sfdx-project-experimental",
3
+ "version": "1.3.3",
4
+ "description": "Base SFDX project template",
5
+ "private": true,
6
+ "files": [
7
+ "dist"
8
+ ],
9
+ "scripts": {
10
+ "build": "echo 'No build required for base-sfdx-project'",
11
+ "clean": "echo 'No clean required for base-sfdx-project'",
12
+ "lint": "eslint **/{aura,lwc}/**/*.js",
13
+ "test": "npm run test:unit",
14
+ "test:unit": "sfdx-lwc-jest -- --passWithNoTests",
15
+ "test:unit:watch": "sfdx-lwc-jest --watch",
16
+ "test:unit:debug": "sfdx-lwc-jest --debug",
17
+ "test:unit:coverage": "sfdx-lwc-jest --coverage",
18
+ "prettier": "prettier --write \"**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,xml,yaml,yml}\"",
19
+ "prettier:verify": "prettier --check \"**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,xml,yaml,yml}\"",
20
+ "precommit": "lint-staged"
21
+ },
22
+ "devDependencies": {
23
+ "@lwc/eslint-plugin-lwc": "^2.0.0",
24
+ "@prettier/plugin-xml": "^3.2.2",
25
+ "@salesforce/eslint-config-lwc": "^3.2.3",
26
+ "@salesforce/eslint-plugin-aura": "^2.0.0",
27
+ "@salesforce/eslint-plugin-lightning": "^1.0.0",
28
+ "@salesforce/sfdx-lwc-jest": "^7.0.1",
29
+ "eslint": "8.57.1",
30
+ "eslint-plugin-import": "^2.25.4",
31
+ "eslint-plugin-jest": "^28.8.1",
32
+ "husky": "^9.1.5",
33
+ "lint-staged": "^15.1.0",
34
+ "prettier": "^3.1.0",
35
+ "prettier-plugin-apex": "^2.0.1"
36
+ }
37
+ }
@@ -0,0 +1,10 @@
1
+ // Use .apex files to store anonymous Apex.
2
+ // You can execute anonymous Apex in VS Code by selecting the
3
+ // apex text and running the command:
4
+ // SFDX: Execute Anonymous Apex with Currently Selected Text
5
+ // You can also execute the entire file by running the command:
6
+ // SFDX: Execute Anonymous Apex with Editor Contents
7
+
8
+ string tempvar = 'Enter_your_name_here';
9
+ System.debug('Hello World!');
10
+ System.debug('My name is ' + tempvar);
@@ -0,0 +1,6 @@
1
+ // Use .soql files to store SOQL queries.
2
+ // You can execute queries in VS Code by selecting the
3
+ // query text and running the command:
4
+ // SFDX: Execute SOQL Query with Currently Selected Text
5
+
6
+ SELECT Id, Name FROM Account
@@ -0,0 +1,12 @@
1
+ {
2
+ "packageDirectories": [
3
+ {
4
+ "path": "force-app",
5
+ "default": true
6
+ }
7
+ ],
8
+ "name": "MyProject",
9
+ "namespace": "",
10
+ "sfdcLoginUrl": "https://login.salesforce.com",
11
+ "sourceApiVersion": "66.0"
12
+ }
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@salesforce/webapp-template-feature-react-global-search-experimental",
3
+ "version": "1.3.3",
4
+ "description": "Global search feature for Salesforce objects with filtering and pagination",
5
+ "license": "ISC",
6
+ "author": "",
7
+ "type": "module",
8
+ "main": "index.js",
9
+ "files": [
10
+ "dist"
11
+ ],
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
15
+ "scripts": {
16
+ "dev": "cd dist/force-app/main/default/webapplications/feature-react-global-search && npm install && npm run dev",
17
+ "clean": "rm -rf dist",
18
+ "build": "npx tsx ../../cli/src/index.ts apply-patches packages/template/feature/feature-react-global-search packages/template/base-app/base-react-app packages/template/feature/feature-react-global-search/dist --reset --skip-dependency-changes",
19
+ "watch": "npx tsx ../../cli/src/index.ts watch-patches packages/template/feature/feature-react-global-search packages/template/base-app/base-react-app packages/template/feature/feature-react-global-search/dist"
20
+ },
21
+ "devDependencies": {
22
+ "@types/react": "^19.2.7",
23
+ "@types/react-dom": "^19.2.3",
24
+ "@types/react-router-dom": "^5.3.3",
25
+ "lucide-react": "^0.468.0",
26
+ "react-dom": "^19.2.1",
27
+ "react-router": "^7.10.1",
28
+ "react-router-dom": "^7.10.1",
29
+ "zod": "^3.24.1"
30
+ },
31
+ "gitHead": "80d16bc3ec3fc1ed55b8059f6389cf89eb464385"
32
+ }