@salesforce/webapp-template-app-react-sample-b2x-experimental 1.36.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 (96) hide show
  1. package/LICENSE.txt +82 -0
  2. package/dist/.a4drules/build-validation.md +81 -0
  3. package/dist/.a4drules/code-quality.md +150 -0
  4. package/dist/.a4drules/graphql/tools/knowledge/lds-explore-graphql-schema.md +227 -0
  5. package/dist/.a4drules/graphql/tools/knowledge/lds-generate-graphql-mutationquery.md +212 -0
  6. package/dist/.a4drules/graphql/tools/knowledge/lds-generate-graphql-readquery.md +185 -0
  7. package/dist/.a4drules/graphql/tools/knowledge/lds-guide-graphql.md +205 -0
  8. package/dist/.a4drules/graphql/tools/schemas/shared.graphqls +1150 -0
  9. package/dist/.a4drules/graphql.md +408 -0
  10. package/dist/.a4drules/images.md +13 -0
  11. package/dist/.a4drules/react.md +361 -0
  12. package/dist/.a4drules/react_image_processing.md +45 -0
  13. package/dist/.a4drules/skills/install-feature/SKILL.md +67 -0
  14. package/dist/.a4drules/skills/install-feature/scripts/copy-feature-assets.sh +36 -0
  15. package/dist/.a4drules/typescript.md +224 -0
  16. package/dist/.forceignore +15 -0
  17. package/dist/.husky/pre-commit +4 -0
  18. package/dist/.prettierignore +11 -0
  19. package/dist/.prettierrc +17 -0
  20. package/dist/CHANGELOG.md +533 -0
  21. package/dist/README.md +18 -0
  22. package/dist/config/project-scratch-def.json +13 -0
  23. package/dist/force-app/main/default/digitalExperienceConfigs/appreactsampleb2x1.digitalExperienceConfig +8 -0
  24. package/dist/force-app/main/default/digitalExperiences/site/appreactsampleb2x1/appreactsampleb2x1.digitalExperience-meta.xml +11 -0
  25. package/dist/force-app/main/default/digitalExperiences/site/appreactsampleb2x1/sfdc_cms__site/appreactsampleb2x1/_meta.json +5 -0
  26. package/dist/force-app/main/default/digitalExperiences/site/appreactsampleb2x1/sfdc_cms__site/appreactsampleb2x1/content.json +10 -0
  27. package/dist/force-app/main/default/networks/appreactsampleb2x.network +60 -0
  28. package/dist/force-app/main/default/package.xml +20 -0
  29. package/dist/force-app/main/default/sites/appreactsampleb2x.site +31 -0
  30. package/dist/force-app/main/default/webapplications/appreactsampleb2x/.graphqlrc.yml +2 -0
  31. package/dist/force-app/main/default/webapplications/appreactsampleb2x/.prettierignore +9 -0
  32. package/dist/force-app/main/default/webapplications/appreactsampleb2x/.prettierrc +11 -0
  33. package/dist/force-app/main/default/webapplications/appreactsampleb2x/appreactsampleb2x.webapplication-meta.xml +7 -0
  34. package/dist/force-app/main/default/webapplications/appreactsampleb2x/build/vite.config.d.ts +2 -0
  35. package/dist/force-app/main/default/webapplications/appreactsampleb2x/build/vite.config.js +94 -0
  36. package/dist/force-app/main/default/webapplications/appreactsampleb2x/codegen.yml +12 -0
  37. package/dist/force-app/main/default/webapplications/appreactsampleb2x/e2e/app.spec.ts +24 -0
  38. package/dist/force-app/main/default/webapplications/appreactsampleb2x/eslint.config.js +141 -0
  39. package/dist/force-app/main/default/webapplications/appreactsampleb2x/index.html +13 -0
  40. package/dist/force-app/main/default/webapplications/appreactsampleb2x/package-lock.json +12805 -0
  41. package/dist/force-app/main/default/webapplications/appreactsampleb2x/package.json +57 -0
  42. package/dist/force-app/main/default/webapplications/appreactsampleb2x/playwright.config.ts +24 -0
  43. package/dist/force-app/main/default/webapplications/appreactsampleb2x/scripts/get-graphql-schema.mjs +68 -0
  44. package/dist/force-app/main/default/webapplications/appreactsampleb2x/scripts/rewrite-e2e-assets.mjs +23 -0
  45. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/api/graphql-operations-types.ts +129 -0
  46. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/api/utils/accounts.ts +33 -0
  47. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/api/utils/query/highRevenueAccountsQuery.graphql +29 -0
  48. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/app.tsx +41 -0
  49. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/appLayout.tsx +161 -0
  50. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/assets/icons/book.svg +3 -0
  51. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/assets/icons/copy.svg +4 -0
  52. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/assets/icons/rocket.svg +3 -0
  53. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/assets/icons/star.svg +3 -0
  54. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/assets/images/codey-1.png +0 -0
  55. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/assets/images/codey-2.png +0 -0
  56. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/assets/images/codey-3.png +0 -0
  57. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/assets/images/vibe-codey.svg +194 -0
  58. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/components/ui/alert.tsx +65 -0
  59. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/components/ui/button.tsx +54 -0
  60. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/components/ui/card.tsx +77 -0
  61. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/components/ui/field.tsx +111 -0
  62. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/components/ui/index.ts +71 -0
  63. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/components/ui/input.tsx +19 -0
  64. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/components/ui/label.tsx +19 -0
  65. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/components/ui/pagination.tsx +99 -0
  66. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/components/ui/select.tsx +151 -0
  67. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/components/ui/skeleton.tsx +7 -0
  68. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/components/ui/spinner.tsx +26 -0
  69. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/components/ui/table.tsx +114 -0
  70. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/components/ui/tabs.tsx +115 -0
  71. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/lib/utils.ts +6 -0
  72. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/pages/About.tsx +8 -0
  73. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/pages/Application.tsx +101 -0
  74. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/pages/Dashboard.tsx +101 -0
  75. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/pages/HelpCenter.tsx +29 -0
  76. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/pages/Home.tsx +30 -0
  77. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/pages/Maintenance.tsx +132 -0
  78. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/pages/NotFound.tsx +14 -0
  79. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/pages/PropertyDetails.tsx +68 -0
  80. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/pages/PropertyListings.tsx +84 -0
  81. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/routes.tsx +62 -0
  82. package/dist/force-app/main/default/webapplications/appreactsampleb2x/src/styles/global.css +80 -0
  83. package/dist/force-app/main/default/webapplications/appreactsampleb2x/tsconfig.json +36 -0
  84. package/dist/force-app/main/default/webapplications/appreactsampleb2x/tsconfig.node.json +13 -0
  85. package/dist/force-app/main/default/webapplications/appreactsampleb2x/vite-env.d.ts +1 -0
  86. package/dist/force-app/main/default/webapplications/appreactsampleb2x/vite.config.ts +102 -0
  87. package/dist/force-app/main/default/webapplications/appreactsampleb2x/vitest-env.d.ts +2 -0
  88. package/dist/force-app/main/default/webapplications/appreactsampleb2x/vitest.config.ts +11 -0
  89. package/dist/force-app/main/default/webapplications/appreactsampleb2x/vitest.setup.ts +1 -0
  90. package/dist/force-app/main/default/webapplications/appreactsampleb2x/webapplication.json +7 -0
  91. package/dist/jest.config.js +6 -0
  92. package/dist/package.json +38 -0
  93. package/dist/scripts/apex/hello.apex +10 -0
  94. package/dist/scripts/soql/account.soql +6 -0
  95. package/dist/sfdx-project.json +12 -0
  96. package/package.json +28 -0
@@ -0,0 +1,80 @@
1
+ @import 'tailwindcss';
2
+
3
+ @layer base {
4
+ html,
5
+ body,
6
+ #root {
7
+ @apply min-h-screen;
8
+ }
9
+
10
+ body {
11
+ @apply antialiased bg-white;
12
+ }
13
+ }
14
+
15
+ @layer base {
16
+ :root {
17
+ color-scheme: light;
18
+ --background: oklch(0.985 0.002 247.858);
19
+ --foreground: oklch(0.145 0 0);
20
+ --card: oklch(1 0 0);
21
+ --card-foreground: oklch(0.145 0 0);
22
+ --popover: oklch(1 0 0);
23
+ --popover-foreground: oklch(0.145 0 0);
24
+ --primary: oklch(0.488 0.09 195.75);
25
+ --primary-foreground: oklch(0.985 0 0);
26
+ --secondary: oklch(0.97 0.01 195);
27
+ --secondary-foreground: oklch(0.205 0 0);
28
+ --muted: oklch(0.97 0.005 195);
29
+ --muted-foreground: oklch(0.556 0 0);
30
+ --accent: oklch(0.97 0.01 195);
31
+ --accent-foreground: oklch(0.205 0 0);
32
+ --destructive: oklch(0.577 0.245 27.325);
33
+ --destructive-foreground: oklch(0.985 0 0);
34
+ --border: oklch(0.922 0 0);
35
+ --input: oklch(0.922 0 0);
36
+ --ring: oklch(0.488 0.09 195.75);
37
+ --radius: 0.625rem;
38
+ --spacing: 0.25rem;
39
+ }
40
+ @media (prefers-reduced-motion: reduce) {
41
+ * {
42
+ animation-duration: 0.01ms !important;
43
+ animation-iteration-count: 1 !important;
44
+ transition-duration: 0.01ms !important;
45
+ scroll-behavior: auto !important;
46
+ }
47
+ }
48
+ * {
49
+ @apply border-[var(--border)];
50
+ }
51
+ body {
52
+ @apply bg-[var(--background)] text-[var(--foreground)] antialiased;
53
+ }
54
+ }
55
+
56
+ @theme inline {
57
+ --color-background: var(--background);
58
+ --color-foreground: var(--foreground);
59
+ --color-card: var(--card);
60
+ --color-card-foreground: var(--card-foreground);
61
+ --color-popover: var(--popover);
62
+ --color-popover-foreground: var(--popover-foreground);
63
+ --color-primary: var(--primary);
64
+ --color-primary-foreground: var(--primary-foreground);
65
+ --color-secondary: var(--secondary);
66
+ --color-secondary-foreground: var(--secondary-foreground);
67
+ --color-muted: var(--muted);
68
+ --color-muted-foreground: var(--muted-foreground);
69
+ --color-accent: var(--accent);
70
+ --color-accent-foreground: var(--accent-foreground);
71
+ --color-destructive: var(--destructive);
72
+ --color-border: var(--border);
73
+ --color-input: var(--input);
74
+ --color-ring: var(--ring);
75
+ --radius-sm: calc(var(--radius) - 4px);
76
+ --radius-md: calc(var(--radius) - 2px);
77
+ --radius-lg: var(--radius);
78
+ --radius-xl: calc(var(--radius) + 4px);
79
+ --spacing: var(--spacing);
80
+ }
@@ -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,102 @@
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
+ import codegen from 'vite-plugin-graphql-codegen';
8
+
9
+ export default defineConfig(({ mode }) => {
10
+ return {
11
+ // Ensure root base for e2e/static serve; plugin may override when deployed under a path
12
+ base: '/',
13
+ plugins: [
14
+ tailwindcss(),
15
+ react(),
16
+ salesforce(),
17
+ codegen({
18
+ // Path to the codegen config file
19
+ configFilePathOverride: resolve(__dirname, 'codegen.yml'),
20
+ // Run codegen on dev server start
21
+ runOnStart: true,
22
+ // Don't run codegen on build for now
23
+ runOnBuild: false,
24
+ // Enable file watcher during development
25
+ enableWatcher: true,
26
+ // Fail build if codegen errors
27
+ throwOnBuild: true,
28
+ }),
29
+ ],
30
+
31
+ // Build configuration for MPA
32
+ build: {
33
+ outDir: resolve(__dirname, 'dist'),
34
+ assetsDir: 'assets',
35
+ sourcemap: false,
36
+ },
37
+
38
+ // Resolve aliases (shared between build and test)
39
+ resolve: {
40
+ dedupe: ['react', 'react-dom'],
41
+ alias: {
42
+ '@': path.resolve(__dirname, './src'),
43
+ '@api': path.resolve(__dirname, './src/api'),
44
+ '@components': path.resolve(__dirname, './src/components'),
45
+ '@utils': path.resolve(__dirname, './src/utils'),
46
+ '@styles': path.resolve(__dirname, './src/styles'),
47
+ '@assets': path.resolve(__dirname, './src/assets'),
48
+ },
49
+ },
50
+
51
+ // Vitest configuration
52
+ test: {
53
+ // Override root for tests (build uses src/pages as root)
54
+ root: resolve(__dirname),
55
+
56
+ // Use jsdom environment for React component testing
57
+ environment: 'jsdom',
58
+
59
+ // Setup files to run before each test
60
+ setupFiles: ['./src/test/setup.ts'],
61
+
62
+ // Global test patterns
63
+ include: [
64
+ 'src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}',
65
+ 'src/**/__tests__/**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}',
66
+ ],
67
+
68
+ // Coverage configuration
69
+ coverage: {
70
+ provider: 'v8',
71
+ reporter: ['text', 'html', 'clover', 'json'],
72
+ exclude: [
73
+ 'node_modules/',
74
+ 'src/test/',
75
+ 'src/**/*.d.ts',
76
+ 'src/main.tsx',
77
+ 'src/vite-env.d.ts',
78
+ 'src/components/**/index.ts',
79
+ '**/*.config.ts',
80
+ 'build/',
81
+ 'dist/',
82
+ 'coverage/',
83
+ 'eslint.config.js',
84
+ ],
85
+ thresholds: {
86
+ global: {
87
+ branches: 85,
88
+ functions: 85,
89
+ lines: 85,
90
+ statements: 85,
91
+ },
92
+ },
93
+ },
94
+
95
+ // Test timeout
96
+ testTimeout: 10000,
97
+
98
+ // Globals for easier testing
99
+ globals: true,
100
+ },
101
+ };
102
+ });
@@ -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,38 @@
1
+ {
2
+ "name": "@salesforce/webapp-template-base-sfdx-project-experimental",
3
+ "version": "1.36.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:coverage": "npm run test",
15
+ "test:unit": "sfdx-lwc-jest -- --passWithNoTests",
16
+ "test:unit:watch": "sfdx-lwc-jest --watch",
17
+ "test:unit:debug": "sfdx-lwc-jest --debug",
18
+ "test:unit:coverage": "sfdx-lwc-jest --coverage",
19
+ "prettier": "prettier --write \"**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,xml,yaml,yml}\"",
20
+ "prettier:verify": "prettier --check \"**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,xml,yaml,yml}\"",
21
+ "precommit": "lint-staged"
22
+ },
23
+ "devDependencies": {
24
+ "@lwc/eslint-plugin-lwc": "^2.0.0",
25
+ "@prettier/plugin-xml": "^3.2.2",
26
+ "@salesforce/eslint-config-lwc": "^3.2.3",
27
+ "@salesforce/eslint-plugin-aura": "^2.0.0",
28
+ "@salesforce/eslint-plugin-lightning": "^1.0.0",
29
+ "@salesforce/sfdx-lwc-jest": "^7.0.1",
30
+ "eslint": "8.57.1",
31
+ "eslint-plugin-import": "^2.25.4",
32
+ "eslint-plugin-jest": "^28.8.1",
33
+ "husky": "^9.1.5",
34
+ "lint-staged": "^15.1.0",
35
+ "prettier": "^3.1.0",
36
+ "prettier-plugin-apex": "^2.0.1"
37
+ }
38
+ }
@@ -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,28 @@
1
+ {
2
+ "name": "@salesforce/webapp-template-app-react-sample-b2x-experimental",
3
+ "version": "1.36.3",
4
+ "description": "B2C sample app template with app shell",
5
+ "license": "SEE LICENSE IN LICENSE.txt",
6
+ "author": "",
7
+ "type": "module",
8
+ "main": "index.js",
9
+ "files": [
10
+ "dist"
11
+ ],
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
15
+ "scripts": {
16
+ "build": "npx tsx ../../cli/src/index.ts apply-patches packages/template/app/appreactsampleb2x packages/template/base-app/base-react-app packages/template/app/appreactsampleb2x/dist --reset --skip-dependency-changes",
17
+ "clean": "rm -rf dist",
18
+ "dev": "cd dist/force-app/main/default/webapplications/appreactsampleb2x && npm install && npm run dev",
19
+ "watch": "npx tsx ../../cli/src/index.ts watch-patches packages/template/app/appreactsampleb2x packages/template/base-app/base-react-app packages/template/app/appreactsampleb2x/dist"
20
+ },
21
+ "devDependencies": {
22
+ "@types/react": "^19.2.7",
23
+ "@types/react-dom": "^19.2.3",
24
+ "react-dom": "^19.2.1",
25
+ "react-router": "^7.10.1"
26
+ },
27
+ "gitHead": "7eef94f53086bb08b0545f5f61d3cbfed3fe0197"
28
+ }