@salesforce/templates 66.17.0-beta.2 → 66.17.0

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 (159) hide show
  1. package/lib/generators/lightningAppGenerator.js +7 -7
  2. package/lib/generators/lightningAppGenerator.js.map +1 -1
  3. package/lib/generators/uiBundleGenerator.d.ts +1 -0
  4. package/lib/generators/uiBundleGenerator.js +12 -0
  5. package/lib/generators/uiBundleGenerator.js.map +1 -1
  6. package/lib/generators/visualforceComponentGenerator.js +7 -2
  7. package/lib/generators/visualforceComponentGenerator.js.map +1 -1
  8. package/lib/generators/visualforcePageGenerator.js +5 -0
  9. package/lib/generators/visualforcePageGenerator.js.map +1 -1
  10. package/lib/i18n/i18n.d.ts +2 -0
  11. package/lib/i18n/i18n.js +2 -0
  12. package/lib/i18n/i18n.js.map +1 -1
  13. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/package-lock.json +1204 -998
  14. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/package-lock.json +1210 -1004
  15. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/package-lock.json +2166 -1676
  16. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/package-lock.json +2172 -1682
  17. package/lib/templates/uiBundles/angularbasic/package-lock.json +1204 -998
  18. package/lib/templates/uiBundles/reactbasic/package-lock.json +2166 -1676
  19. package/lib/templates/uiBundles/vuebasic/.forceignore +15 -0
  20. package/lib/templates/uiBundles/vuebasic/.graphqlrc.yml +2 -0
  21. package/lib/templates/uiBundles/vuebasic/.prettierignore +9 -0
  22. package/lib/templates/uiBundles/vuebasic/.prettierrc +11 -0
  23. package/lib/templates/uiBundles/vuebasic/README.md +43 -0
  24. package/lib/templates/uiBundles/vuebasic/_uibundle.uibundle-meta.xml +7 -0
  25. package/lib/templates/uiBundles/vuebasic/codegen.yml +95 -0
  26. package/lib/templates/uiBundles/vuebasic/components.json +19 -0
  27. package/lib/templates/uiBundles/vuebasic/eslint.config.js +110 -0
  28. package/lib/templates/uiBundles/vuebasic/index.html +12 -0
  29. package/lib/templates/uiBundles/vuebasic/package-lock.json +15489 -0
  30. package/lib/templates/uiBundles/vuebasic/package.json +72 -0
  31. package/lib/templates/uiBundles/vuebasic/playwright.config.ts +24 -0
  32. package/lib/templates/uiBundles/vuebasic/scripts/get-graphql-schema.mjs +71 -0
  33. package/lib/templates/uiBundles/vuebasic/scripts/rewrite-e2e-assets.mjs +23 -0
  34. package/lib/templates/uiBundles/vuebasic/src/App.vue +5 -0
  35. package/lib/templates/uiBundles/vuebasic/src/api/graphqlClient.ts +44 -0
  36. package/lib/templates/uiBundles/vuebasic/src/appLayout.vue +80 -0
  37. package/lib/templates/uiBundles/vuebasic/src/components/alerts/status-alert.vue +59 -0
  38. package/lib/templates/uiBundles/vuebasic/src/components/layouts/card-layout.vue +30 -0
  39. package/lib/templates/uiBundles/vuebasic/src/components/ui/alert/Alert.vue +21 -0
  40. package/lib/templates/uiBundles/vuebasic/src/components/ui/alert/AlertAction.vue +17 -0
  41. package/lib/templates/uiBundles/vuebasic/src/components/ui/alert/AlertDescription.vue +22 -0
  42. package/lib/templates/uiBundles/vuebasic/src/components/ui/alert/AlertTitle.vue +22 -0
  43. package/lib/templates/uiBundles/vuebasic/src/components/ui/alert/index.ts +25 -0
  44. package/lib/templates/uiBundles/vuebasic/src/components/ui/avatar/Avatar.vue +23 -0
  45. package/lib/templates/uiBundles/vuebasic/src/components/ui/avatar/AvatarFallback.vue +31 -0
  46. package/lib/templates/uiBundles/vuebasic/src/components/ui/avatar/AvatarImage.vue +16 -0
  47. package/lib/templates/uiBundles/vuebasic/src/components/ui/avatar/index.ts +3 -0
  48. package/lib/templates/uiBundles/vuebasic/src/components/ui/button/Button.vue +33 -0
  49. package/lib/templates/uiBundles/vuebasic/src/components/ui/button/index.ts +43 -0
  50. package/lib/templates/uiBundles/vuebasic/src/components/ui/card/Card.vue +29 -0
  51. package/lib/templates/uiBundles/vuebasic/src/components/ui/card/CardAction.vue +22 -0
  52. package/lib/templates/uiBundles/vuebasic/src/components/ui/card/CardContent.vue +17 -0
  53. package/lib/templates/uiBundles/vuebasic/src/components/ui/card/CardDescription.vue +17 -0
  54. package/lib/templates/uiBundles/vuebasic/src/components/ui/card/CardFooter.vue +22 -0
  55. package/lib/templates/uiBundles/vuebasic/src/components/ui/card/CardHeader.vue +22 -0
  56. package/lib/templates/uiBundles/vuebasic/src/components/ui/card/CardTitle.vue +22 -0
  57. package/lib/templates/uiBundles/vuebasic/src/components/ui/card/index.ts +7 -0
  58. package/lib/templates/uiBundles/vuebasic/src/components/ui/checkbox/Checkbox.vue +43 -0
  59. package/lib/templates/uiBundles/vuebasic/src/components/ui/checkbox/index.ts +1 -0
  60. package/lib/templates/uiBundles/vuebasic/src/components/ui/collapsible/Collapsible.vue +19 -0
  61. package/lib/templates/uiBundles/vuebasic/src/components/ui/collapsible/CollapsibleContent.vue +12 -0
  62. package/lib/templates/uiBundles/vuebasic/src/components/ui/collapsible/CollapsibleTrigger.vue +12 -0
  63. package/lib/templates/uiBundles/vuebasic/src/components/ui/collapsible/index.ts +3 -0
  64. package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/Dialog.vue +15 -0
  65. package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/DialogClose.vue +12 -0
  66. package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/DialogContent.vue +59 -0
  67. package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/DialogDescription.vue +31 -0
  68. package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/DialogFooter.vue +33 -0
  69. package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/DialogHeader.vue +17 -0
  70. package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/DialogOverlay.vue +31 -0
  71. package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/DialogPortal.vue +12 -0
  72. package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/DialogTitle.vue +26 -0
  73. package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/DialogTrigger.vue +12 -0
  74. package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/index.ts +10 -0
  75. package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenu.vue +19 -0
  76. package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +51 -0
  77. package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuContent.vue +47 -0
  78. package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuGroup.vue +12 -0
  79. package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuItem.vue +44 -0
  80. package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuLabel.vue +30 -0
  81. package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuPortal.vue +12 -0
  82. package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +21 -0
  83. package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +52 -0
  84. package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue +26 -0
  85. package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue +19 -0
  86. package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuSub.vue +19 -0
  87. package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue +37 -0
  88. package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +38 -0
  89. package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue +17 -0
  90. package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/index.ts +15 -0
  91. package/lib/templates/uiBundles/vuebasic/src/components/ui/field/Field.vue +27 -0
  92. package/lib/templates/uiBundles/vuebasic/src/components/ui/field/FieldContent.vue +22 -0
  93. package/lib/templates/uiBundles/vuebasic/src/components/ui/field/FieldDescription.vue +24 -0
  94. package/lib/templates/uiBundles/vuebasic/src/components/ui/field/FieldError.vue +48 -0
  95. package/lib/templates/uiBundles/vuebasic/src/components/ui/field/FieldGroup.vue +22 -0
  96. package/lib/templates/uiBundles/vuebasic/src/components/ui/field/FieldLabel.vue +24 -0
  97. package/lib/templates/uiBundles/vuebasic/src/components/ui/field/FieldLegend.vue +29 -0
  98. package/lib/templates/uiBundles/vuebasic/src/components/ui/field/FieldSeparator.vue +31 -0
  99. package/lib/templates/uiBundles/vuebasic/src/components/ui/field/FieldSet.vue +22 -0
  100. package/lib/templates/uiBundles/vuebasic/src/components/ui/field/FieldTitle.vue +22 -0
  101. package/lib/templates/uiBundles/vuebasic/src/components/ui/field/index.ts +33 -0
  102. package/lib/templates/uiBundles/vuebasic/src/components/ui/index.ts +115 -0
  103. package/lib/templates/uiBundles/vuebasic/src/components/ui/input/Input.vue +30 -0
  104. package/lib/templates/uiBundles/vuebasic/src/components/ui/input/index.ts +1 -0
  105. package/lib/templates/uiBundles/vuebasic/src/components/ui/label/Label.vue +29 -0
  106. package/lib/templates/uiBundles/vuebasic/src/components/ui/label/index.ts +1 -0
  107. package/lib/templates/uiBundles/vuebasic/src/components/ui/pagination/Pagination.vue +17 -0
  108. package/lib/templates/uiBundles/vuebasic/src/components/ui/pagination/PaginationContent.vue +15 -0
  109. package/lib/templates/uiBundles/vuebasic/src/components/ui/pagination/PaginationEllipsis.vue +23 -0
  110. package/lib/templates/uiBundles/vuebasic/src/components/ui/pagination/PaginationItem.vue +7 -0
  111. package/lib/templates/uiBundles/vuebasic/src/components/ui/pagination/PaginationLink.vue +31 -0
  112. package/lib/templates/uiBundles/vuebasic/src/components/ui/pagination/PaginationNext.vue +29 -0
  113. package/lib/templates/uiBundles/vuebasic/src/components/ui/pagination/PaginationPrevious.vue +29 -0
  114. package/lib/templates/uiBundles/vuebasic/src/components/ui/pagination/index.ts +7 -0
  115. package/lib/templates/uiBundles/vuebasic/src/components/ui/popover/Popover.vue +15 -0
  116. package/lib/templates/uiBundles/vuebasic/src/components/ui/popover/PopoverAnchor.vue +12 -0
  117. package/lib/templates/uiBundles/vuebasic/src/components/ui/popover/PopoverContent.vue +44 -0
  118. package/lib/templates/uiBundles/vuebasic/src/components/ui/popover/PopoverDescription.vue +17 -0
  119. package/lib/templates/uiBundles/vuebasic/src/components/ui/popover/PopoverHeader.vue +17 -0
  120. package/lib/templates/uiBundles/vuebasic/src/components/ui/popover/PopoverTitle.vue +14 -0
  121. package/lib/templates/uiBundles/vuebasic/src/components/ui/popover/PopoverTrigger.vue +12 -0
  122. package/lib/templates/uiBundles/vuebasic/src/components/ui/popover/index.ts +7 -0
  123. package/lib/templates/uiBundles/vuebasic/src/components/ui/select/Select.vue +15 -0
  124. package/lib/templates/uiBundles/vuebasic/src/components/ui/select/SelectContent.vue +65 -0
  125. package/lib/templates/uiBundles/vuebasic/src/components/ui/select/SelectGroup.vue +26 -0
  126. package/lib/templates/uiBundles/vuebasic/src/components/ui/select/SelectItem.vue +41 -0
  127. package/lib/templates/uiBundles/vuebasic/src/components/ui/select/SelectLabel.vue +26 -0
  128. package/lib/templates/uiBundles/vuebasic/src/components/ui/select/SelectScrollDownButton.vue +32 -0
  129. package/lib/templates/uiBundles/vuebasic/src/components/ui/select/SelectScrollUpButton.vue +32 -0
  130. package/lib/templates/uiBundles/vuebasic/src/components/ui/select/SelectSeparator.vue +24 -0
  131. package/lib/templates/uiBundles/vuebasic/src/components/ui/select/SelectTrigger.vue +45 -0
  132. package/lib/templates/uiBundles/vuebasic/src/components/ui/select/SelectValue.vue +12 -0
  133. package/lib/templates/uiBundles/vuebasic/src/components/ui/select/index.ts +10 -0
  134. package/lib/templates/uiBundles/vuebasic/src/components/ui/separator/Separator.vue +33 -0
  135. package/lib/templates/uiBundles/vuebasic/src/components/ui/separator/index.ts +1 -0
  136. package/lib/templates/uiBundles/vuebasic/src/components/ui/skeleton/Skeleton.vue +15 -0
  137. package/lib/templates/uiBundles/vuebasic/src/components/ui/skeleton/index.ts +1 -0
  138. package/lib/templates/uiBundles/vuebasic/src/components/ui/sonner/Sonner.vue +29 -0
  139. package/lib/templates/uiBundles/vuebasic/src/components/ui/sonner/index.ts +3 -0
  140. package/lib/templates/uiBundles/vuebasic/src/components/ui/spinner/Spinner.vue +17 -0
  141. package/lib/templates/uiBundles/vuebasic/src/components/ui/spinner/index.ts +1 -0
  142. package/lib/templates/uiBundles/vuebasic/src/composables/useAsyncData.ts +69 -0
  143. package/lib/templates/uiBundles/vuebasic/src/lib/utils.ts +6 -0
  144. package/lib/templates/uiBundles/vuebasic/src/main.ts +6 -0
  145. package/lib/templates/uiBundles/vuebasic/src/pages/Home.vue +10 -0
  146. package/lib/templates/uiBundles/vuebasic/src/pages/NotFound.vue +18 -0
  147. package/lib/templates/uiBundles/vuebasic/src/router-utils.ts +32 -0
  148. package/lib/templates/uiBundles/vuebasic/src/router.ts +40 -0
  149. package/lib/templates/uiBundles/vuebasic/src/styles/global.css +134 -0
  150. package/lib/templates/uiBundles/vuebasic/src/test/setup.ts +1 -0
  151. package/lib/templates/uiBundles/vuebasic/tsconfig.json +45 -0
  152. package/lib/templates/uiBundles/vuebasic/tsconfig.node.json +13 -0
  153. package/lib/templates/uiBundles/vuebasic/ui-bundle.json +7 -0
  154. package/lib/templates/uiBundles/vuebasic/vite-env.d.ts +14 -0
  155. package/lib/templates/uiBundles/vuebasic/vite.config.ts +106 -0
  156. package/lib/templates/uiBundles/vuebasic/vitest-env.d.ts +2 -0
  157. package/lib/utils/constants.d.ts +1 -1
  158. package/lib/utils/constants.js +1 -1
  159. package/package.json +2 -1
@@ -0,0 +1,15 @@
1
+ # List files or directories below to ignore them when running force:source:push, force:source:pull, and force:source:status
2
+ # More information: https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_exclude_source.htm
3
+ #
4
+
5
+ package.xml
6
+
7
+ # LWC configuration files
8
+ **/jsconfig.json
9
+ **/.eslintrc.json
10
+
11
+ # LWC Jest
12
+ **/__tests__/**
13
+
14
+ node_modules/
15
+ .DS_Store
@@ -0,0 +1,2 @@
1
+ schema: '../../../../../schema.graphql'
2
+ documents: 'src/**/*.{graphql,js,ts,jsx,tsx,vue}'
@@ -0,0 +1,9 @@
1
+ node_modules
2
+ dist
3
+ build
4
+ .vite
5
+ coverage
6
+ *.min.js
7
+ *.min.css
8
+ *.map
9
+ package-lock.json
@@ -0,0 +1,11 @@
1
+ {
2
+ "semi": true,
3
+ "trailingComma": "es5",
4
+ "singleQuote": true,
5
+ "printWidth": 80,
6
+ "tabWidth": 2,
7
+ "useTabs": false,
8
+ "bracketSpacing": true,
9
+ "arrowParens": "avoid",
10
+ "endOfLine": "lf"
11
+ }
@@ -0,0 +1,43 @@
1
+ # Base Vue App
2
+
3
+ Base Vue App is a template application that demonstrates how to build a Vue UI Bundle on the Salesforce platform with Vite, TypeScript, Tailwind, shadcn-vue, and the Salesforce UI Bundle SDK. It provides a minimal shell (home, 404), routing, and GraphQL codegen support so feature apps can extend it via the patches pipeline.
4
+
5
+ This UI Bundle lives inside an SFDX project. The project root is the directory that contains `force-app/` and `sfdx-project.json`. Run the commands in the sections below from the paths indicated.
6
+
7
+ ## Table of contents
8
+
9
+ - [Run (development)](#run-development)
10
+ - [Build](#build)
11
+ - [Test](#test)
12
+
13
+ ## Run (development)
14
+
15
+ From the UI Bundle directory (`force-app/main/default/uiBundles/base-vue-app`):
16
+
17
+ ```bash
18
+ npm install
19
+ npm run dev
20
+ ```
21
+
22
+ This starts the Vite dev server (e.g. http://localhost:5173). Use `npm run dev:design` to run in design mode.
23
+
24
+ ## Build
25
+
26
+ From the UI Bundle directory:
27
+
28
+ ```bash
29
+ npm install
30
+ npm run build
31
+ ```
32
+
33
+ The production build is written to `dist/` inside the UI Bundle folder.
34
+
35
+ ## Test
36
+
37
+ From the UI Bundle directory:
38
+
39
+ ```bash
40
+ npm run test # unit tests (Vitest)
41
+ npm run build:e2e # build for end-to-end
42
+ npx playwright test # end-to-end tests (Playwright)
43
+ ```
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <UIBundle xmlns="http://soap.sforce.com/2006/04/metadata">
3
+ <masterLabel><%= masterLabel %></masterLabel>
4
+ <description>A Salesforce UI Bundle.</description>
5
+ <isActive>true</isActive>
6
+ <version>1</version>
7
+ </UIBundle>
@@ -0,0 +1,95 @@
1
+ schema: '../../../../../schema.graphql'
2
+ documents: 'src/**/*.{graphql,ts,tsx,vue}'
3
+ generates:
4
+ src/api/graphql-operations-types.ts:
5
+ plugins:
6
+ - 'graphql-codegen-typescript-operation-types'
7
+ - 'typescript-operations'
8
+ config:
9
+ onlyOperationTypes: true
10
+ skipTypename: true
11
+ preResolveTypes: true
12
+ scalars:
13
+ # String-serialized scalars
14
+ JSON:
15
+ input: 'string'
16
+ output: 'string'
17
+ Date:
18
+ input: 'string'
19
+ output: 'string'
20
+ DateTime:
21
+ input: 'string'
22
+ output: 'string'
23
+ Time:
24
+ input: 'string'
25
+ output: 'string'
26
+ Email:
27
+ input: 'string'
28
+ output: 'string'
29
+ Url:
30
+ input: 'string'
31
+ output: 'string'
32
+ PhoneNumber:
33
+ input: 'string'
34
+ output: 'string'
35
+ Picklist:
36
+ input: 'string'
37
+ output: 'string'
38
+ MultiPicklist:
39
+ input: 'string'
40
+ output: 'string'
41
+ TextArea:
42
+ input: 'string'
43
+ output: 'string'
44
+ LongTextArea:
45
+ input: 'string'
46
+ output: 'string'
47
+ RichTextArea:
48
+ input: 'string'
49
+ output: 'string'
50
+ EncryptedString:
51
+ input: 'string'
52
+ output: 'string'
53
+ Base64:
54
+ input: 'string'
55
+ output: 'string'
56
+ IdOrRef:
57
+ input: 'string'
58
+ output: 'string'
59
+ # BigDecimal-serialized scalars (accepts number or string, returns number)
60
+ Currency:
61
+ input: 'number | string'
62
+ output: 'number'
63
+ BigDecimal:
64
+ input: 'number | string'
65
+ output: 'number'
66
+ Double:
67
+ input: 'number | string'
68
+ output: 'number'
69
+ Percent:
70
+ input: 'number | string'
71
+ output: 'number'
72
+ Longitude:
73
+ input: 'number | string'
74
+ output: 'number'
75
+ Latitude:
76
+ input: 'number | string'
77
+ output: 'number'
78
+ # Integer-like scalars
79
+ Long:
80
+ input: 'number'
81
+ output: 'number'
82
+ BigInteger:
83
+ input: 'number'
84
+ output: 'number'
85
+ Short:
86
+ input: 'number'
87
+ output: 'number'
88
+ Byte:
89
+ input: 'number'
90
+ output: 'number'
91
+ Char:
92
+ input: 'number'
93
+ output: 'number'
94
+ overwrite: true
95
+ ignoreNoDocuments: true
@@ -0,0 +1,19 @@
1
+ {
2
+ "$schema": "https://shadcn-vue.com/schema.json",
3
+ "style": "new-york",
4
+ "typescript": true,
5
+ "tailwind": {
6
+ "config": "",
7
+ "css": "src/styles/global.css",
8
+ "baseColor": "neutral",
9
+ "cssVariables": true
10
+ },
11
+ "iconLibrary": "lucide",
12
+ "aliases": {
13
+ "components": "@/components",
14
+ "utils": "@/lib/utils",
15
+ "ui": "@/components/ui",
16
+ "lib": "@/lib",
17
+ "composables": "@/composables"
18
+ }
19
+ }
@@ -0,0 +1,110 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { dirname } from 'node:path';
5
+ import js from '@eslint/js';
6
+ import tseslint from 'typescript-eslint';
7
+ import pluginVue from 'eslint-plugin-vue';
8
+ import vueTsConfig from '@vue/eslint-config-typescript';
9
+ import globals from 'globals';
10
+ import graphqlPlugin from '@graphql-eslint/eslint-plugin';
11
+
12
+ const __dirname = dirname(fileURLToPath(import.meta.url));
13
+ const schemaPath = resolve(__dirname, '../../../../../schema.graphql');
14
+ const schemaExists = existsSync(schemaPath);
15
+
16
+ const config = [
17
+ // Global ignores
18
+ {
19
+ ignores: [
20
+ 'build/**/*',
21
+ 'dist/**/*',
22
+ 'coverage/**/*',
23
+ 'src/api/graphql-operations-types.ts',
24
+ ],
25
+ },
26
+ js.configs.recommended,
27
+ ...pluginVue.configs['flat/recommended'],
28
+ ...vueTsConfig(),
29
+ // Main TypeScript/Vue files
30
+ {
31
+ files: ['**/*.{ts,vue}'],
32
+ languageOptions: {
33
+ ecmaVersion: 'latest',
34
+ sourceType: 'module',
35
+ globals: {
36
+ ...globals.browser,
37
+ process: 'readonly',
38
+ },
39
+ },
40
+ rules: {
41
+ '@typescript-eslint/no-unused-vars': [
42
+ 'error',
43
+ {
44
+ argsIgnorePattern: '^_',
45
+ varsIgnorePattern: '^_',
46
+ caughtErrorsIgnorePattern: '^_',
47
+ ignoreRestSiblings: true,
48
+ },
49
+ ],
50
+ '@typescript-eslint/explicit-function-return-type': 'off',
51
+ '@typescript-eslint/explicit-module-boundary-types': 'off',
52
+ '@typescript-eslint/no-explicit-any': 'off',
53
+ // Base app ships single-word component files (Home.vue, App.vue) mirroring
54
+ // the React template's page naming; allow them.
55
+ 'vue/multi-word-component-names': 'off',
56
+ },
57
+ },
58
+ // Test files
59
+ {
60
+ files: [
61
+ '**/*.test.{ts,tsx}',
62
+ '**/test/**/*.{ts,tsx}',
63
+ 'src/test/**/*.{ts,tsx}',
64
+ ],
65
+ languageOptions: {
66
+ globals: {
67
+ ...globals.browser,
68
+ ...globals.node,
69
+ global: 'writable',
70
+ },
71
+ },
72
+ rules: {
73
+ '@typescript-eslint/no-explicit-any': 'off',
74
+ },
75
+ },
76
+ ];
77
+
78
+ // Only add GraphQL rules when schema exists (e.g. after graphql:schema).
79
+ // In CI or when schema is not checked in, skip so lint succeeds.
80
+ if (schemaExists) {
81
+ config.push(
82
+ {
83
+ files: ['**/*.{ts,vue}'],
84
+ processor: graphqlPlugin.processor,
85
+ },
86
+ {
87
+ files: ['**/*.graphql'],
88
+ languageOptions: {
89
+ parser: graphqlPlugin.parser,
90
+ parserOptions: {
91
+ graphQLConfig: {
92
+ schema: '../../../../../schema.graphql',
93
+ },
94
+ },
95
+ },
96
+ plugins: {
97
+ '@graphql-eslint': graphqlPlugin,
98
+ },
99
+ rules: {
100
+ '@graphql-eslint/no-anonymous-operations': 'error',
101
+ '@graphql-eslint/no-duplicate-fields': 'error',
102
+ '@graphql-eslint/known-fragment-names': 'error',
103
+ '@graphql-eslint/no-undefined-variables': 'error',
104
+ '@graphql-eslint/no-unused-variables': 'error',
105
+ },
106
+ }
107
+ );
108
+ }
109
+
110
+ export default config;
@@ -0,0 +1,12 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Welcome to Vue App</title>
7
+ </head>
8
+ <body>
9
+ <div id="app"></div>
10
+ <script type="module" src="src/main.ts"></script>
11
+ </body>
12
+ </html>