@salesforce/templates 66.17.0-beta.3 → 66.17.1
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.
- package/lib/generators/lightningAppGenerator.js +7 -7
- package/lib/generators/lightningAppGenerator.js.map +1 -1
- package/lib/generators/uiBundleGenerator.d.ts +1 -0
- package/lib/generators/uiBundleGenerator.js +12 -0
- package/lib/generators/uiBundleGenerator.js.map +1 -1
- package/lib/generators/visualforceComponentGenerator.js +2 -2
- package/lib/generators/visualforceComponentGenerator.js.map +1 -1
- package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/package-lock.json +674 -831
- package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/package-lock.json +680 -837
- package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/package-lock.json +1765 -1639
- package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/package-lock.json +1771 -1645
- package/lib/templates/uiBundles/angularbasic/package-lock.json +674 -831
- package/lib/templates/uiBundles/reactbasic/package-lock.json +1765 -1639
- package/lib/templates/uiBundles/vuebasic/.forceignore +15 -0
- package/lib/templates/uiBundles/vuebasic/.graphqlrc.yml +2 -0
- package/lib/templates/uiBundles/vuebasic/.prettierignore +9 -0
- package/lib/templates/uiBundles/vuebasic/.prettierrc +11 -0
- package/lib/templates/uiBundles/vuebasic/README.md +43 -0
- package/lib/templates/uiBundles/vuebasic/_uibundle.uibundle-meta.xml +7 -0
- package/lib/templates/uiBundles/vuebasic/codegen.yml +95 -0
- package/lib/templates/uiBundles/vuebasic/components.json +19 -0
- package/lib/templates/uiBundles/vuebasic/eslint.config.js +110 -0
- package/lib/templates/uiBundles/vuebasic/index.html +12 -0
- package/lib/templates/uiBundles/vuebasic/package-lock.json +15489 -0
- package/lib/templates/uiBundles/vuebasic/package.json +72 -0
- package/lib/templates/uiBundles/vuebasic/playwright.config.ts +24 -0
- package/lib/templates/uiBundles/vuebasic/scripts/get-graphql-schema.mjs +71 -0
- package/lib/templates/uiBundles/vuebasic/scripts/rewrite-e2e-assets.mjs +23 -0
- package/lib/templates/uiBundles/vuebasic/src/App.vue +5 -0
- package/lib/templates/uiBundles/vuebasic/src/api/graphqlClient.ts +44 -0
- package/lib/templates/uiBundles/vuebasic/src/appLayout.vue +80 -0
- package/lib/templates/uiBundles/vuebasic/src/components/alerts/status-alert.vue +59 -0
- package/lib/templates/uiBundles/vuebasic/src/components/layouts/card-layout.vue +30 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/alert/Alert.vue +21 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/alert/AlertAction.vue +17 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/alert/AlertDescription.vue +22 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/alert/AlertTitle.vue +22 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/alert/index.ts +25 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/avatar/Avatar.vue +23 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/avatar/AvatarFallback.vue +31 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/avatar/AvatarImage.vue +16 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/avatar/index.ts +3 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/button/Button.vue +33 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/button/index.ts +43 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/card/Card.vue +29 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/card/CardAction.vue +22 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/card/CardContent.vue +17 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/card/CardDescription.vue +17 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/card/CardFooter.vue +22 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/card/CardHeader.vue +22 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/card/CardTitle.vue +22 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/card/index.ts +7 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/checkbox/Checkbox.vue +43 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/checkbox/index.ts +1 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/collapsible/Collapsible.vue +19 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/collapsible/CollapsibleContent.vue +12 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/collapsible/CollapsibleTrigger.vue +12 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/collapsible/index.ts +3 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/Dialog.vue +15 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/DialogClose.vue +12 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/DialogContent.vue +59 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/DialogDescription.vue +31 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/DialogFooter.vue +33 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/DialogHeader.vue +17 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/DialogOverlay.vue +31 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/DialogPortal.vue +12 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/DialogTitle.vue +26 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/DialogTrigger.vue +12 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dialog/index.ts +10 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenu.vue +19 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +51 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuContent.vue +47 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuGroup.vue +12 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuItem.vue +44 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuLabel.vue +30 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuPortal.vue +12 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +21 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +52 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue +26 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue +19 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuSub.vue +19 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue +37 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +38 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue +17 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/dropdown-menu/index.ts +15 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/field/Field.vue +27 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/field/FieldContent.vue +22 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/field/FieldDescription.vue +24 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/field/FieldError.vue +48 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/field/FieldGroup.vue +22 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/field/FieldLabel.vue +24 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/field/FieldLegend.vue +29 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/field/FieldSeparator.vue +31 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/field/FieldSet.vue +22 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/field/FieldTitle.vue +22 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/field/index.ts +33 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/index.ts +115 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/input/Input.vue +30 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/input/index.ts +1 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/label/Label.vue +29 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/label/index.ts +1 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/pagination/Pagination.vue +17 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/pagination/PaginationContent.vue +15 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/pagination/PaginationEllipsis.vue +23 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/pagination/PaginationItem.vue +7 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/pagination/PaginationLink.vue +31 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/pagination/PaginationNext.vue +29 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/pagination/PaginationPrevious.vue +29 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/pagination/index.ts +7 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/popover/Popover.vue +15 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/popover/PopoverAnchor.vue +12 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/popover/PopoverContent.vue +44 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/popover/PopoverDescription.vue +17 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/popover/PopoverHeader.vue +17 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/popover/PopoverTitle.vue +14 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/popover/PopoverTrigger.vue +12 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/popover/index.ts +7 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/select/Select.vue +15 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/select/SelectContent.vue +65 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/select/SelectGroup.vue +26 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/select/SelectItem.vue +41 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/select/SelectLabel.vue +26 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/select/SelectScrollDownButton.vue +32 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/select/SelectScrollUpButton.vue +32 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/select/SelectSeparator.vue +24 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/select/SelectTrigger.vue +45 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/select/SelectValue.vue +12 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/select/index.ts +10 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/separator/Separator.vue +33 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/separator/index.ts +1 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/skeleton/Skeleton.vue +15 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/skeleton/index.ts +1 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/sonner/Sonner.vue +29 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/sonner/index.ts +3 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/spinner/Spinner.vue +17 -0
- package/lib/templates/uiBundles/vuebasic/src/components/ui/spinner/index.ts +1 -0
- package/lib/templates/uiBundles/vuebasic/src/composables/useAsyncData.ts +69 -0
- package/lib/templates/uiBundles/vuebasic/src/lib/utils.ts +6 -0
- package/lib/templates/uiBundles/vuebasic/src/main.ts +6 -0
- package/lib/templates/uiBundles/vuebasic/src/pages/Home.vue +10 -0
- package/lib/templates/uiBundles/vuebasic/src/pages/NotFound.vue +18 -0
- package/lib/templates/uiBundles/vuebasic/src/router-utils.ts +32 -0
- package/lib/templates/uiBundles/vuebasic/src/router.ts +40 -0
- package/lib/templates/uiBundles/vuebasic/src/styles/global.css +134 -0
- package/lib/templates/uiBundles/vuebasic/src/test/setup.ts +1 -0
- package/lib/templates/uiBundles/vuebasic/tsconfig.json +45 -0
- package/lib/templates/uiBundles/vuebasic/tsconfig.node.json +13 -0
- package/lib/templates/uiBundles/vuebasic/ui-bundle.json +7 -0
- package/lib/templates/uiBundles/vuebasic/vite-env.d.ts +14 -0
- package/lib/templates/uiBundles/vuebasic/vite.config.ts +106 -0
- package/lib/templates/uiBundles/vuebasic/vitest-env.d.ts +2 -0
- package/lib/utils/constants.d.ts +1 -1
- package/lib/utils/constants.js +1 -1
- package/package.json +3 -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,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,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>
|