Chapter 4 - Base Project Setup
This chapter explorescovers howeverything needed to setmake upthe yourbitbucket-pipelines.yml project managementoperational, and versionexplains controlwhat integration,the ensuringpipeline properdoes trackingand fromwhen. requirementOnce tocompleted, deployment.these configurations rarely need modification.
Initial4.1 ProjectRepository CreationSetup
SFDX Project SetupCreation
Create Basethe Projectbase Salesforce DX project structure:
# Create new SFDX project
sf project generate --name "your-project-name" --template standard
--namespace# "your_namespace"Navigate to project directory
cd your-project-name
# ifInitialize applicableGit repository
git init
git add .
git commit --default-package-dirm force-app"Initial SFDX project setup"
Required Project Structure
Your project should have this structure. Note the extra Config elements - we'll set these up here. They're used for the scratch org creation mostly.
your-project-name/
├── config/
│ └├── project-scratch-def.json
│ ├── packagestoinstall.txt
│ ├── permsets.txt
│ ├── codeanalyzer/
│ │ └── code-analyzer.yml
│ ├── sfdmu-currency/
│ ├── sfdmu-demodata/
│ └── payload.json.template.*
├── force-app/
│ └── main/
│ └── default/
├── scripts/
│pre-deploy-dependencies/
├── apex/scripts/
│ └├── soql/tests/
├── .forceignore
├── .gitignore
├── .sgdignore
├── bitbucket-pipelines.yml
├── package.json
└── sfdx-project.json
Essential Configuration Files Setup
.forceignore Essential- Entries
Exclude metadata from deployments:
# StandardList Salesforcefiles or directories below to ignore patternsthem when running force:source:push, force:source:pull, and force:source:status
# More information: https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_exclude_source.htm
# Package.xml and autogenerated package files
package.xml
package/**
# LWC configuration files
**/jsconfig.json
**/.eslintrc.json
**/.prettierrc# LWC Jest
**/__tests__/**
# Standard Elements that should never be retrieved
*.prettierignoreflexipages/LightningSalesConsole_UtilityBar**
# These metadata files are ignored when promoting (deploying)
**/.sfdxappMenus/**
**/.sfappSwitcher/**
**/.vscodefieldRestrictionRules/**
**/jsconfig.json
# Package directoriessettings/**
**/force-app/main/default/profilesAuthProvider/**
# User Access Policies error on Deploy due to a KI https://issues.salesforce.com/issue/a028c00000zKnmrAAC/undefined
**/force-app/main/default/useraccesspolicies/**
# These metadata files are ignored when pulling (retrieving) and are mostly things that are not deployable
*.appMenu
*.appSwitcher
*.rule
*.AuthProvider
*.featureParameters
# *.featureParametersInteger
# *.featureParametersBoolean
# Settings can cause issues
# *.settings
# Profiles are negated except the ones we want
# *.profile
**/profiles/**
!**/profiles/Admin*
!**/profiles/Read*
# Permissions on retrieve
*.sharingRules
**/sharingRules/**
*.profilePasswordPolicy
*.profileSessionSetting
# Permissions on deploy
**/profilePasswordPolicy/**
**/profileSessionSetting/**
# Translations
# .objectTranslations
# **/objectTranslations/**
# Project-Specific Exclusions
**/duplicateRules/**
.gitignore Essential- Entries
Exclude files from version control:
# Salesforce cache
.sf/
.sfdx/
.localdevserver/
# VS Code IDE
.vscode/
# System files
.DS_Storevscode/
*.log
.DS_Store
# Node modules
node_modules/
.sgdignore - Exclude from SGD delta deployments:
# Exclude profiles and permission sets from delta
**/profiles/**
**/permissionsets/**
# UAPs don't deploy well via MDAPI, and there's a KI for UAPs with Groups
**/useraccesspolicies/**
.sgddestrdignore - Tells SGD which files should never appear in destructive changes, even if deleted from the repo.
# Never auto-delete objects or their fields
force-app/main/default/objects/
# Never auto-delete permission sets
force-app/main/default/permissionsets/
Be conservative here. It is always safer to block a destructive change and apply it manually than to accidentally delete a field in production.
4.2 Bitbucket Repository Integration
Initial4.2.1 Create Bitbucket Repository Setup
In Bitbucket:Bitbucket workspace:
-- Create new
repositoryrepository:- Repository name:your-project-name
Linking
Link local project to Remoteremote:
Initialize Git Repository
cd your-project-name
git init
git add .
git commit -m "Initial project setup"
Link to Bitbucket
Bash
git remote add origin https://bitbucket.org/your-workspace/your-project-name.git
git push -u origin main
Branch4.2.2 ProtectionRepository RulesVariables Configuration
Repository variables are accessible by all pipelines and users with push permissions. Configure these in Repository Settings → Pipelines → Repository variables.
Core Authentication Variables
DEVHUB_TOKEN
Secured
SFDX authentication URL for Dev Hub org
force://PlatformCLI::...
ACCESS_TOKEN
Secured
Default authentication token for deployments
force://PlatformCLI::...
Notification & Communication
TEAMS_WEBHOOK
Secured
Microsoft Teams webhook URL for notifications
https://outlook.office.com/webhook/...
BB_EMAIL
Unsecured
Email for Bitbucket operations
[email protected]
BB_EMAIL_PASSWORD
Secured
Password for Bitbucket email account
••••••
Code Quality & Testing
SEV_THRESH
Unsecured
Code Analyzer severity threshold (1-3)
1
Scratch Org Management
SNAPSHOT_NAME
Unsecured
Name for scratch org snapshots
Client_Project_Snap
SF_DISABLE_SOURCE_MEMBER_POLLING
Unsecured
Disable source member polling for performance
TRUE
Setting Up Repository Variables
Navigate to Repository Settings:
Add Each Variable:
Security Best Practices:
4.3 Deployment Environments
Configure in Bitbucket Repository Settings:
Settings → Deployments. These are environment-specific variables and allow for example storing Salesforce login information.
ACCESS_TOKEN
Secured
Authentication URL
force://PlatformCLI::...
INSTANCE_URL
Unsecured
Salesforce instance URL
https://stuff--dev.sandbox.my.salesforce.com
TESTLEVEL
Unsecured
Test execution level for deployments
NoTestRun
4.4 Salesforce Environment Setup
Authentication Token Generation
For Salesforce Orgs
Generate SFDX Auth URL:
Branch# Permissions:Login main:to the target org
sf org login web --alias Requiretarget-org
pull# requestGenerate approvalsauth URL
sf org display --target-org Minimum approvers: 2target-org --verbose
Block# forceCopy pushesthe develop:"Sfdx -Auth RequireUrl" pull request approvals
- Minimum approvers: 1
- Block force pushesvalue
Project
force://PlatformCLI::5Aep861...::[email protected]
Use this complete string as the ACCESS_TOKEN value
Always mark as Secured
For Dev Hub
Enable sfdx-project.jsonConfiguration
Dev Hub in Production:
Generate Dev Hub Token:
{# "packageDirectories":Login [to {Production "path":org "force-app",(Dev "default":Hub)
true,sf "package":org "your-project-name",login "versionName":web "Version--alias 1.0",devhub "versionNumber":--set-default-dev-hub
"1.0.0.NEXT"# }Get ],auth "namespace":URL
"",sf "sourceApiVersion":org "60.0"display }--target-org devhub --verbose
Dev Hub Configuration
In your Production org:
Navigate to Setup → Dev Hub Enable "Enable Dev Hub" Enable "Enable Source Tracking in Developer and Developer Pro Sandboxes"4.5 Teams Webhook Configuration
Create Teams Webhook
In Microsoft Teams:
Configure Webhook:
Salesforce CI/CD Pipeline
Upload icon (optional)
Click Create
Copy the webhook URL
Add to Bitbucket:
TEAMS_WEBHOOK value
Always mark as Secured
4.6 Scratch Org Definition
Create config/project-scratch-def.json. BaseThe Configuration
documentation for scratch org features are listed here, and settings are here. Trailhead about Scratch orgs.
{
"orgName": "YourMy Project Name"Name Scratch Org",
"adminEmail":"[email protected]",
"country":"US",
"language":"en_US",
"description": "Scratch Org for project blablabla.",
"hasSampleData": true,
"edition": "Enterprise",
"features": [
"ContactsToMultipleAccounts",
"DebugApex",
"EnableSetPasswordInApi",
"EntityTranslation",
"Entitlements",
"ForceComPlatform",
"Interaction",
"FlowSites",
"FieldService:5",
"FieldServiceDispatcherUser:5",
"FieldServiceMobileExtension",
"FieldServiceMobileUser:5",
"FieldServiceSchedulingUser:5",
"LiveAgent",
"MarketingUser",
"SalesUser",
"SalesforceContentUser",
"StateAndCountryPicklist",
"RecordTypes",
"RefreshOnInvalidSession",
"ServiceCloud",
"ServiceUser"
],
"settings": {
"caseSettings": {
"closeCaseThroughStatusChange" : true
},
"CustomAddressFieldSettings": {
"enableCustomAddressField" : true
},
"userManagementSettings": {
"permsetsInFieldCreation": true,
"userAccessPoliciesEnabled" : true
},
"currencySettings":{
"enableMultiCurrency": true
},
"languageSettings": {
"enableTranslationWorkbench": true
},
"pathAssistantSettings": {
"pathAssistantEnabled": true
},
"lightningExperienceSettings": {
"enableS1DesktopEnabled": true,
"enableUsersAreLightningOnly": true,
"enableLexEndUsersNoSwitching": true
},
"mobileSettings": {
"enableS1EncryptedStoragePref2": false
},
"opportunitySettings": {
"enableOpportunityTeam": true
},
"quoteSettings": {
"enableQuote": true,
"enableQuotesWithoutOppEnabled": true
},
"securitySettings": {
"enableAdminLoginAsAnyUser": true,
"passwordPolicies": {
"enableSetPasswordInApi"expiration": "Never",
"historyRestriction": "0"
},
"sessionSettings": {
"sessionTimeout": "TwelveHours"
}
},
"sharingSettings": {
"enableAssetSharing": true
},
"fieldServiceSettings": {
"enableDocumentBuilder": true,
"enableWorkOrders": true,
"fieldServiceNotificationsOrgPref": true,
"fieldServiceOrgPref": true
},
"chatterSettings": {
"enableChatter": true
}
},
"objectSettings": {
"product2": {
"sharingModel": "read"
},
"account": {
"sharingModel": "read"
},
"asset": {
"sharingModel": "ControlledByParent"
},
"contact": {
"sharingModel": "Private"
}
}
}
Post-SetupPackage VerificationInstallation List
RunCreate theseconfig/packagestoinstall.txt:
# List package IDs to verifyinstall setup:
in scratch orgs
# One per line, comments start with #
04t000000000000AAA
04t000000000001AAA
Permission Set Assignment
Create config/permsets.txt:
# VerifyPermission SFDXsets projectto sfassign projectafter verifydeployment
# VerifyOne Gitper setupline
gitMyCustomPermissionSet
remoteAnotherPermissionSet
4.5 Code Quality Configuration
Code Analyzer Setup
Create config/codeanalyzer/code-analyzer.yml:
# ======================================================================
# VerifyCODE BitbucketANALYZER connection
git fetch originCONFIGURATION
# VerifyTo branchlearn protectionmore gitabout pushthis originconfiguration, visit:
# https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/guide/config-custom.html
# ======================================================================
# The absolute folder path to which all other path values in this configuration may be relative to.
# If unspecified, or if specified as null, then the value is automatically chosen to be the parent folder of your Code Analyzer
# configuration file if it exists, or the current working directory otherwise.
config_root: null
# Folder where to store log files. May be an absolute path or a path relative to config_root.
# If unspecified, or if specified as null, then the value is automatically chosen to be your machine's default temporary directory.
# log_folder: "./config/codeanalyzer/logs/"
# Level at which to log messages to log files.
# Possible values are:
# 1 or 'Error' - Includes only error messages in the log.
# 2 or 'Warn' - Includes warning and error messages in the log.
# 3 or 'Info' - Includes informative, warning, and error messages in the log.
# 4 or 'Debug' - Includes debug, informative, warning, and error messages in the log.
# 5 or 'Fine' - Includes fine detail, debug, informative, warning, and error messages in the log.
# If unspecified, or if specified as null, then the 'Debug' log level will be used.
log_level: 1
# Rule override settings of the format rules.{engine_name}.{rule_name}.{property_name} = {override_value} where:
# {engine_name} is the name of the engine containing the rule that you want to override.
# {rule_name} is the name of the rule that you want to override.
# {property_name} can either be:
# 'severity' - [Optional] The severity level value that you want to use to override the default severity level for the rule
# Possible values: 1 or 'Critical', 2 or 'High', 3 or 'Moderate', 4 or 'Low', 5 or 'Info'
# 'tags' - [Optional] The string array of tag values that you want to use to override the default tags for the rule
# ---- [Example usage]: ---------------------
# rules:
# eslint:
# sort-vars:
# severity: "Info"
# tags: ["Recommended", "Suggestion"]
# -------------------------------------------
rules:
# ======================================================================
# ESLINT ENGINE RULE OVERRIDES
# ======================================================================
eslint:
"@lwc/lwc-platform/no-aura":
severity: 3
tags:
- Recommended
- LWC
- ErrorProne
- JavaScript
"@lwc/lwc-platform/no-aura-libs":
severity: 3
tags:
- Recommended
- LWC
- ErrorProne
- JavaScript
"@lwc/lwc-platform/no-community-import":
severity: 3
tags:
- Recommended
- LWC
- ErrorProne
- JavaScript
"@lwc/lwc-platform/no-create-context-provider":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc-platform/no-deprecated-module-import":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc-platform/no-dynamic-import-identifier":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc-platform/no-inline-disable":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc-platform/no-interop":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc-platform/no-interop-create":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc-platform/no-interop-dispatch":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc-platform/no-interop-execute":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc-platform/no-interop-execute-privileged":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc-platform/no-interop-execute-raw-response":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc-platform/no-interop-get-event":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc-platform/no-interop-get-module":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc-platform/no-interop-is-external-definition":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc-platform/no-interop-load-definitions":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc-platform/no-interop-module-instrumentation":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc-platform/no-interop-module-storage":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc-platform/no-interop-register":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc-platform/no-interop-render":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc-platform/no-interop-sanitize":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc-platform/no-process-env":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc-platform/no-restricted-namespaces":
severity: 3
tags:
- Recommended
- LWC
- ErrorProne
- JavaScript
"@lwc/lwc-platform/no-site-import":
severity: 3
tags:
- Recommended
- LWC
- ErrorProne
- JavaScript
"@lwc/lwc-platform/no-wire-service":
severity: 3
tags:
- Recommended
- LWC
- ErrorProne
- JavaScript
"@lwc/lwc-platform/valid-dynamic-import-hint":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc/no-api-reassignments":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc/no-async-operation":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc/no-attributes-during-construction":
severity: 3
tags:
- Recommended
- LWC
- ErrorProne
- JavaScript
"@lwc/lwc/no-deprecated":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc/no-disallowed-lwc-imports":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc/no-document-query":
severity: 3
tags:
- Recommended
- LWC
- ErrorProne
- JavaScript
"@lwc/lwc/no-inner-html":
severity: 2
tags:
- Recommended
- LWC
- Security
- JavaScript
"@lwc/lwc/no-leading-uppercase-api-name":
severity: 3
tags:
- Recommended
- LWC
- ErrorProne
- JavaScript
"@lwc/lwc/no-template-children":
severity: 3
tags:
- Recommended
- LWC
- ErrorProne
- JavaScript
"@lwc/lwc/no-unexpected-wire-adapter-usages":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc/no-unknown-wire-adapters":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc/prefer-custom-event":
severity: 3
tags:
- Recommended
- LWC
- BestPractices
- JavaScript
"@lwc/lwc/valid-api":
severity: 3
tags:
- Recommended
- LWC
- ErrorProne
- JavaScript
"@lwc/lwc/valid-graphql-wire-adapter-callback-parameters":
severity: 3
tags:
- Recommended
- LWC
- ErrorProne
- JavaScript
"@lwc/lwc/valid-track":
severity: 3
tags:
- Recommended
- LWC
- ErrorProne
- JavaScript
"@lwc/lwc/valid-wire":
severity: 3
tags:
- Recommended
- LWC
- ErrorProne
- JavaScript
"@salesforce/lightning/valid-apex-method-invocation":
severity: 3
tags:
- Recommended
- LWC
- ErrorProne
- JavaScript
"@typescript-eslint/adjacent-overload-signatures":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/array-type":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/await-thenable":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/ban-ts-comment":
severity: 2
tags:
- Recommended
- ErrorProne
- TypeScript
"@typescript-eslint/ban-tslint-comment":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/class-literal-property-style":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/class-methods-use-this":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/consistent-generic-constructors":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/consistent-indexed-object-style":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/consistent-return":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/consistent-type-assertions":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/consistent-type-definitions":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/consistent-type-exports":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/consistent-type-imports":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/default-param-last":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/dot-notation":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/explicit-function-return-type":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/explicit-member-accessibility":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/explicit-module-boundary-types":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/init-declarations":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/max-params":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/member-ordering":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/method-signature-style":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/naming-convention":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-array-constructor":
severity: 3
tags:
- Recommended
- BestPractices
- TypeScript
"@typescript-eslint/no-array-delete":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-base-to-string":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-confusing-non-null-assertion":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-confusing-void-expression":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-deprecated":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-dupe-class-members":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-duplicate-enum-values":
severity: 2
tags:
- Recommended
- ErrorProne
- TypeScript
"@typescript-eslint/no-duplicate-type-constituents":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-dynamic-delete":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-empty-function":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-empty-object-type":
severity: 3
tags:
- Recommended
- BestPractices
- TypeScript
"@typescript-eslint/no-explicit-any":
severity: 3
tags:
- Recommended
- BestPractices
- TypeScript
"@typescript-eslint/no-extra-non-null-assertion":
severity: 2
tags:
- Recommended
- ErrorProne
- TypeScript
"@typescript-eslint/no-extraneous-class":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-floating-promises":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-for-in-array":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-implied-eval":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-import-type-side-effects":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-inferrable-types":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-invalid-this":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-invalid-void-type":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-loop-func":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-magic-numbers":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-meaningless-void-operator":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-misused-new":
severity: 2
tags:
- Recommended
- ErrorProne
- TypeScript
"@typescript-eslint/no-misused-promises":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-misused-spread":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-mixed-enums":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-namespace":
severity: 3
tags:
- Recommended
- BestPractices
- TypeScript
"@typescript-eslint/no-non-null-asserted-nullish-coalescing":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-non-null-asserted-optional-chain":
severity: 2
tags:
- Recommended
- ErrorProne
- TypeScript
"@typescript-eslint/no-non-null-assertion":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-redeclare":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-redundant-type-constituents":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-require-imports":
severity: 2
tags:
- Recommended
- ErrorProne
- TypeScript
"@typescript-eslint/no-restricted-imports":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-restricted-types":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-shadow":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-this-alias":
severity: 3
tags:
- Recommended
- BestPractices
- TypeScript
"@typescript-eslint/no-unnecessary-boolean-literal-compare":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-unnecessary-condition":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-unnecessary-parameter-property-assignment":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-unnecessary-qualifier":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-unnecessary-template-expression":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-unnecessary-type-arguments":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-unnecessary-type-assertion":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-unnecessary-type-constraint":
severity: 3
tags:
- Recommended
- BestPractices
- TypeScript
"@typescript-eslint/no-unnecessary-type-parameters":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-unsafe-argument":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-unsafe-assignment":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-unsafe-call":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-unsafe-declaration-merging":
severity: 2
tags:
- Recommended
- ErrorProne
- TypeScript
"@typescript-eslint/no-unsafe-enum-comparison":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-unsafe-function-type":
severity: 2
tags:
- Recommended
- ErrorProne
- TypeScript
"@typescript-eslint/no-unsafe-member-access":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-unsafe-return":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-unsafe-type-assertion":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-unsafe-unary-minus":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-unused-expressions":
severity: 3
tags:
- Recommended
- BestPractices
- TypeScript
"@typescript-eslint/no-unused-vars":
severity: 2
tags:
- Recommended
- ErrorProne
- TypeScript
"@typescript-eslint/no-use-before-define":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-useless-constructor":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/no-useless-empty-export":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/no-wrapper-object-types":
severity: 2
tags:
- Recommended
- ErrorProne
- TypeScript
"@typescript-eslint/non-nullable-type-assertion-style":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/only-throw-error":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/parameter-properties":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/prefer-as-const":
severity: 3
tags:
- Recommended
- BestPractices
- TypeScript
"@typescript-eslint/prefer-destructuring":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/prefer-enum-initializers":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/prefer-find":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/prefer-for-of":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/prefer-function-type":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/prefer-includes":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/prefer-literal-enum-member":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/prefer-namespace-keyword":
severity: 3
tags:
- Recommended
- BestPractices
- TypeScript
"@typescript-eslint/prefer-nullish-coalescing":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/prefer-optional-chain":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/prefer-promise-reject-errors":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/prefer-readonly":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/prefer-readonly-parameter-types":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/prefer-reduce-type-parameter":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/prefer-regexp-exec":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/prefer-return-this-type":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/prefer-string-starts-ends-with":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/promise-function-async":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/related-getter-setter-pairs":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/require-array-sort-compare":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/require-await":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/restrict-plus-operands":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/restrict-template-expressions":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/return-await":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/strict-boolean-expressions":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/switch-exhaustiveness-check":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/triple-slash-reference":
severity: 3
tags:
- Recommended
- BestPractices
- TypeScript
"@typescript-eslint/typedef":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/unbound-method":
severity: 2
tags:
- ErrorProne
- TypeScript
"@typescript-eslint/unified-signatures":
severity: 3
tags:
- BestPractices
- TypeScript
"@typescript-eslint/use-unknown-in-catch-callback-variable":
severity: 3
tags:
- BestPractices
- TypeScript
"accessor-pairs":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"array-callback-return":
severity: 2
tags:
- ErrorProne
- JavaScript
- TypeScript
"arrow-body-style":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"block-scoped-var":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"camelcase":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"capitalized-comments":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"class-methods-use-this":
severity: 3
tags:
- BestPractices
- JavaScript
"complexity":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"consistent-return":
severity: 3
tags:
- BestPractices
- JavaScript
"consistent-this":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"constructor-super":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
"curly":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"default-case":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"default-case-last":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"default-param-last":
severity: 3
tags:
- BestPractices
- JavaScript
"dot-notation":
severity: 3
tags:
- BestPractices
- JavaScript
"eqeqeq":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"for-direction":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"func-name-matching":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"func-names":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"func-style":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"getter-return":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
"grouped-accessor-pairs":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"guard-for-in":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"id-denylist":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"id-length":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"id-match":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"init-declarations":
severity: 3
tags:
- BestPractices
- JavaScript
"line-comment-position":
severity: 4
tags:
- CodeStyle
- JavaScript
- TypeScript
"logical-assignment-operators":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"max-classes-per-file":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"max-depth":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"max-lines":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"max-lines-per-function":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"max-nested-callbacks":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"max-params":
severity: 3
tags:
- BestPractices
- JavaScript
"max-statements":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"multiline-comment-style":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"new-cap":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-alert":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-array-constructor":
severity: 3
tags:
- BestPractices
- JavaScript
"no-async-promise-executor":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-await-in-loop":
severity: 2
tags:
- ErrorProne
- JavaScript
- TypeScript
"no-bitwise":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-caller":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-case-declarations":
severity: 3
tags:
- Recommended
- BestPractices
- JavaScript
- TypeScript
"no-class-assign":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
"no-compare-neg-zero":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-cond-assign":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-console":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-const-assign":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
"no-constant-binary-expression":
severity: 2
tags:
- ErrorProne
- JavaScript
- TypeScript
"no-constant-condition":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-constructor-return":
severity: 2
tags:
- ErrorProne
- JavaScript
- TypeScript
"no-continue":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-control-regex":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-debugger":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-delete-var":
severity: 3
tags:
- Recommended
- BestPractices
- JavaScript
- TypeScript
"no-div-regex":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-dupe-args":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
"no-dupe-class-members":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
"no-dupe-else-if":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-dupe-keys":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
"no-duplicate-case":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-duplicate-imports":
severity: 2
tags:
- ErrorProne
- JavaScript
- TypeScript
"no-else-return":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-empty":
severity: 3
tags:
- Recommended
- BestPractices
- JavaScript
- TypeScript
"no-empty-character-class":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-empty-function":
severity: 3
tags:
- BestPractices
- JavaScript
"no-empty-pattern":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-empty-static-block":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-eq-null":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-eval":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-ex-assign":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-extend-native":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-extra-bind":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-extra-boolean-cast":
severity: 3
tags:
- Recommended
- BestPractices
- JavaScript
- TypeScript
"no-extra-label":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-fallthrough":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-func-assign":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
"no-global-assign":
severity: 3
tags:
- Recommended
- BestPractices
- JavaScript
- TypeScript
"no-implicit-coercion":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-implicit-globals":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-implied-eval":
severity: 3
tags:
- BestPractices
- JavaScript
"no-import-assign":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
"no-inline-comments":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-inner-declarations":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-invalid-regexp":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-invalid-this":
severity: 3
tags:
- BestPractices
- JavaScript
"no-irregular-whitespace":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-iterator":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-label-var":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-labels":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-lone-blocks":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-lonely-if":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-loop-func":
severity: 3
tags:
- BestPractices
- JavaScript
"no-loss-of-precision":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-magic-numbers":
severity: 3
tags:
- BestPractices
- JavaScript
"no-misleading-character-class":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-multi-assign":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-multi-str":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-negated-condition":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-nested-ternary":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-new":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-new-func":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-new-native-nonconstructor":
severity: 2
tags:
- ErrorProne
- JavaScript
"no-new-symbol":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
"no-new-wrappers":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-nonoctal-decimal-escape":
severity: 3
tags:
- Recommended
- BestPractices
- JavaScript
- TypeScript
"no-obj-calls":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
"no-object-constructor":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-octal":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-octal-escape":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-param-reassign":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-plusplus":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-promise-executor-return":
severity: 2
tags:
- ErrorProne
- JavaScript
- TypeScript
"no-proto":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-prototype-builtins":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-redeclare":
severity: 3
tags:
- Recommended
- BestPractices
- JavaScript
"no-regex-spaces":
severity: 3
tags:
- Recommended
- BestPractices
- JavaScript
- TypeScript
"no-restricted-exports":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-restricted-globals":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-restricted-imports":
severity: 3
tags:
- BestPractices
- JavaScript
"no-restricted-properties":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-restricted-syntax":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-return-assign":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-script-url":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-self-assign":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-self-compare":
severity: 2
tags:
- ErrorProne
- JavaScript
- TypeScript
"no-sequences":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-setter-return":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
"no-shadow":
severity: 3
tags:
- BestPractices
- JavaScript
"no-shadow-restricted-names":
severity: 3
tags:
- Recommended
- BestPractices
- JavaScript
- TypeScript
"no-sparse-arrays":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-template-curly-in-string":
severity: 2
tags:
- ErrorProne
- JavaScript
- TypeScript
"no-ternary":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-this-before-super":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
"no-throw-literal":
severity: 3
tags:
- BestPractices
- JavaScript
"no-undef":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
"no-undef-init":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-undefined":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-underscore-dangle":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-unexpected-multiline":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-unmodified-loop-condition":
severity: 2
tags:
- ErrorProne
- JavaScript
- TypeScript
"no-unneeded-ternary":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-unreachable":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
"no-unreachable-loop":
severity: 2
tags:
- ErrorProne
- JavaScript
- TypeScript
"no-unsafe-finally":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-unsafe-negation":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
"no-unsafe-optional-chaining":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-unused-expressions":
severity: 3
tags:
- BestPractices
- JavaScript
"no-unused-labels":
severity: 3
tags:
- Recommended
- BestPractices
- JavaScript
- TypeScript
"no-unused-private-class-members":
severity: 2
tags:
- ErrorProne
- JavaScript
- TypeScript
"no-unused-vars":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
"no-use-before-define":
severity: 2
tags:
- ErrorProne
- JavaScript
"no-useless-backreference":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"no-useless-call":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-useless-catch":
severity: 3
tags:
- Recommended
- BestPractices
- JavaScript
- TypeScript
"no-useless-computed-key":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-useless-concat":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-useless-constructor":
severity: 3
tags:
- BestPractices
- JavaScript
"no-useless-escape":
severity: 3
tags:
- Recommended
- BestPractices
- JavaScript
- TypeScript
"no-useless-rename":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-useless-return":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-var":
severity: 3
tags:
- Recommended
- BestPractices
- JavaScript
- TypeScript
"no-void":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-warning-comments":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"no-with":
severity: 3
tags:
- Recommended
- BestPractices
- JavaScript
"object-shorthand":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"one-var":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"operator-assignment":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"prefer-arrow-callback":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"prefer-const":
severity: 3
tags:
- Recommended
- BestPractices
- JavaScript
- TypeScript
"prefer-destructuring":
severity: 3
tags:
- BestPractices
- JavaScript
"prefer-exponentiation-operator":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"prefer-named-capture-group":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"prefer-numeric-literals":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"prefer-object-has-own":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"prefer-object-spread":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"prefer-promise-reject-errors":
severity: 3
tags:
- BestPractices
- JavaScript
"prefer-regex-literals":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"prefer-rest-params":
severity: 3
tags:
- Recommended
- BestPractices
- JavaScript
- TypeScript
"prefer-spread":
severity: 3
tags:
- Recommended
- BestPractices
- JavaScript
- TypeScript
"prefer-template":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"radix":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"require-atomic-updates":
severity: 2
tags:
- ErrorProne
- JavaScript
- TypeScript
"require-await":
severity: 3
tags:
- BestPractices
- JavaScript
"require-unicode-regexp":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"require-yield":
severity: 3
tags:
- Recommended
- BestPractices
- JavaScript
- TypeScript
"sort-imports":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"sort-keys":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"sort-vars":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"strict":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"symbol-description":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"unicode-bom":
severity: 4
tags:
- CodeStyle
- JavaScript
- TypeScript
"use-isnan":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"valid-typeof":
severity: 2
tags:
- Recommended
- ErrorProne
- JavaScript
- TypeScript
"vars-on-top":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
"yoda":
severity: 3
tags:
- BestPractices
- JavaScript
- TypeScript
# ======================================================================
# RETIRE-JS ENGINE RULE OVERRIDES
# ======================================================================
retire-js:
"LibraryWithKnownCriticalSeverityVulnerability":
severity: 1
tags:
- Recommended
- Security
- JavaScript
"LibraryWithKnownHighSeverityVulnerability":
severity: 2
tags:
- Recommended
- Security
- JavaScript
"LibraryWithKnownMediumSeverityVulnerability":
severity: 3
tags:
- Recommended
- Security
- JavaScript
"LibraryWithKnownLowSeverityVulnerability":
severity: 4
tags:
- Recommended
- Security
- JavaScript
# ======================================================================
# REGEX ENGINE RULE OVERRIDES
# ======================================================================
regex:
"NoTrailingWhitespace":
severity: 5
tags:
- Recommended
- CodeStyle
- Apex
"AvoidTermsWithImplicitBias":
severity: 5
tags:
- Recommended
- BestPractices
"AvoidOldSalesforceApiVersions":
severity: 2
tags:
- Recommended
- Security
- XML
"AvoidGetHeapSizeInLoop":
severity: 2
tags:
- Recommended
- Performance
- Apex
"MinVersionForAbstractVirtualClassesWithPrivateMethod":
severity: 2
tags:
- Recommended
- BestPractices
- Apex
# ======================================================================
# CPD ENGINE RULE OVERRIDES
# ======================================================================
cpd:
"DetectCopyPasteForApex":
severity: 5
tags:
- Recommended
- Design
- Apex
"DetectCopyPasteForHtml":
severity: 5
tags:
- Design
- Html
"DetectCopyPasteForJavascript":
severity: 5
tags:
- Recommended
- Design
- Javascript
"DetectCopyPasteForTypescript":
severity: 5
tags:
- Recommended
- Design
- Typescript
"DetectCopyPasteForVisualforce":
severity: 5
tags:
- Recommended
- Design
- Visualforce
"DetectCopyPasteForXml":
severity: 5
tags:
- Design
- Xml
# ======================================================================
# PMD ENGINE RULE OVERRIDES
# ======================================================================
pmd:
"ApexAssertionsShouldIncludeMessage":
severity: 3
tags:
- BestPractices
- Apex
"ApexBadCrypto":
severity: 2
tags:
- Recommended
- Security
- Apex
"ApexCRUDViolation":
severity: 2
tags:
- Recommended
- Security
- Apex
"ApexCSRF":
severity: 1
tags:
- Recommended
- Security
- Apex
"ApexDangerousMethods":
severity: 3
tags:
- Recommended
- Security
- Apex
"ApexDoc":
severity: 4
tags:
- Recommended
- Documentation
- Apex
"ApexInsecureEndpoint":
severity: 2
tags:
- Recommended
- Security
- Apex
"ApexOpenRedirect":
severity: 2
tags:
- Recommended
- Security
- Apex
"ApexSharingViolations":
severity: 3
tags:
- Recommended
- Security
- Apex
"ApexSOQLInjection":
severity: 2
tags:
- Recommended
- Security
- Apex
"ApexSuggestUsingNamedCred":
severity: 2
tags:
- Recommended
- Security
- Apex
"ApexUnitTestClassShouldHaveAsserts":
severity: 3
tags:
- Recommended
- BestPractices
- Apex
"ApexUnitTestClassShouldHaveRunAs":
severity: 4
tags:
- Recommended
- BestPractices
- Apex
"ApexUnitTestMethodShouldHaveIsTestAnnotation":
severity: 2
tags:
- Recommended
- BestPractices
- Apex
"ApexUnitTestShouldNotUseSeeAllDataTrue":
severity: 2
tags:
- Recommended
- BestPractices
- Apex
"ApexXSSFromEscapeFalse":
severity: 2
tags:
- Recommended
- Security
- Apex
"ApexXSSFromURLParam":
severity: 2
tags:
- Recommended
- Security
- Apex
"AssignmentInOperand":
severity: 3
tags:
- CodeStyle
- JavaScript
"AvoidApiSessionId":
severity: 2
tags:
- AppExchange
- Security
- XML
"AvoidAuraWithLockerDisabled":
severity: 1
tags:
- AppExchange
- Security
- XML
"AvoidChangeProtectionUnprotected":
severity: 1
tags:
- AppExchange
- Security
- Apex
"AvoidConsoleStatements":
severity: 3
tags:
- Performance
- JavaScript
"AvoidCreateElementScriptLinkTag":
severity: 2
tags:
- AppExchange
- Security
- Visualforce
"AvoidDebugStatements":
severity: 4
tags:
- Recommended
- Performance
- Apex
"AvoidDeeplyNestedIfStmts":
severity: 3
tags:
- Recommended
- Design
- Apex
"AvoidDirectAccessTriggerMap":
severity: 3
tags:
- Recommended
- ErrorProne
- Apex
"AvoidDisableProtocolSecurityRemoteSiteSetting":
severity: 3
tags:
- AppExchange
- Security
- XML
"AvoidGetInstanceWithTaint":
severity: 3
tags:
- AppExchange
- Security
- Apex
"AvoidGlobalInstallUninstallHandlers":
severity: 1
tags:
- AppExchange
- Security
- Apex
"AvoidGlobalModifier":
severity: 3
tags:
- Recommended
- BestPractices
- Apex
"AvoidHardCodedCredentialsInAura":
severity: 2
tags:
- AppExchange
- Security
- HTML
"AvoidHardcodedCredentialsInFieldDecls":
severity: 3
tags:
- AppExchange
- Security
- Apex
"AvoidHardcodedCredentialsInHttpHeader":
severity: 3
tags:
- AppExchange
- Security
- Apex
"AvoidHardcodedCredentialsInSetPassword":
severity: 1
tags:
- AppExchange
- Security
- Apex
"AvoidHardcodedCredentialsInVarAssign":
severity: 3
tags:
- AppExchange
- Security
- Apex
"AvoidHardcodedCredentialsInVarDecls":
severity: 3
tags:
- AppExchange
- Security
- Apex
"AvoidHardcodedSecretsInVFAttrs":
severity: 2
tags:
- AppExchange
- Security
- Visualforce
"AvoidHardcodingId":
severity: 3
tags:
- Recommended
- ErrorProne
- Apex
"AvoidInlineStyles":
severity: 4
tags:
- BestPractices
- HTML
"AvoidInsecureHttpRemoteSiteSetting":
severity: 3
tags:
- AppExchange
- Security
- XML
"AvoidInvalidCrudContentDistribution":
severity: 3
tags:
- AppExchange
- Security
- Apex
"AvoidJavaScriptCustomObject":
severity: 2
tags:
- AppExchange
- Security
- XML
"AvoidJavaScriptHomePageComponent":
severity: 2
tags:
- AppExchange
- Security
- XML
"AvoidJavaScriptInUrls":
severity: 1
tags:
- AppExchange
- Security
- XML
"AvoidJavaScriptWebLink":
severity: 2
tags:
- AppExchange
- Security
- XML
"AvoidLmcIsExposedTrue":
severity: 2
tags:
- AppExchange
- Security
- XML
"AvoidLogicInTrigger":
severity: 3
tags:
- Recommended
- BestPractices
- Apex
"AvoidLwcBubblesComposedTrue":
severity: 3
tags:
- AppExchange
- Security
- JavaScript
"AvoidNonExistentAnnotations":
severity: 4
tags:
- Recommended
- ErrorProne
- Apex
"AvoidNonRestrictiveQueries":
severity: 4
tags:
- Recommended
- Performance
- Apex
"AvoidSControls":
severity: 1
tags:
- AppExchange
- Security
- XML
"AvoidSecurityEnforcedOldApiVersion":
severity: 3
tags:
- AppExchange
- Security
- Apex
"AvoidStatefulDatabaseResult":
severity: 3
tags:
- Recommended
- ErrorProne
- Apex
"AvoidTrailingComma":
severity: 2
tags:
- ErrorProne
- JavaScript
"AvoidUnauthorizedApiSessionIdInApex":
severity: 3
tags:
- AppExchange
- Security
- Apex
"AvoidUnauthorizedApiSessionIdInVisualforce":
severity: 3
tags:
- AppExchange
- Security
- Visualforce
"AvoidUnauthorizedGetSessionIdInApex":
severity: 3
tags:
- AppExchange
- Security
- Apex
"AvoidUnauthorizedGetSessionIdInVisualforce":
severity: 2
tags:
- AppExchange
- Security
- Visualforce
"AvoidUnescapedHtmlInAura":
severity: 2
tags:
- AppExchange
- Security
- HTML
"AvoidUnsafePasswordManagementUse":
severity: 1
tags:
- AppExchange
- Security
- Apex
"AvoidWithStatement":
severity: 2
tags:
- BestPractices
- JavaScript
"ClassNamingConventions":
severity: 3
tags:
- Recommended
- CodeStyle
- Apex
"CognitiveComplexity":
severity: 3
tags:
- Recommended
- Design
- Apex
"ConsistentReturn":
severity: 3
tags:
- BestPractices
- JavaScript
"CyclomaticComplexity":
severity: 3
tags:
- Recommended
- Design
- Apex
"DebugsShouldUseLoggingLevel":
severity: 4
tags:
- Recommended
- BestPractices
- Apex
"EagerlyLoadedDescribeSObjectResult":
severity: 2
tags:
- Recommended
- Performance
- Apex
"EmptyCatchBlock":
severity: 2
tags:
- Recommended
- ErrorProne
- Apex
"EmptyIfStmt":
severity: 3
tags:
- Recommended
- ErrorProne
- Apex
"EmptyStatementBlock":
severity: 3
tags:
- Recommended
- ErrorProne
- Apex
"EmptyTryOrFinallyBlock":
severity: 3
tags:
- Recommended
- ErrorProne
- Apex
"EmptyWhileStmt":
severity: 3
tags:
- Recommended
- ErrorProne
- Apex
"EqualComparison":
severity: 3
tags:
- ErrorProne
- JavaScript
"ExcessiveClassLength":
severity: 3
tags:
- Recommended
- Design
- Apex
"ExcessiveParameterList":
severity: 3
tags:
- Recommended
- Design
- Apex
"ExcessivePublicCount":
severity: 3
tags:
- Recommended
- Design
- Apex
"FieldDeclarationsShouldBeAtStart":
severity: 3
tags:
- Recommended
- CodeStyle
- Apex
"FieldNamingConventions":
severity: 3
tags:
- Recommended
- CodeStyle
- Apex
"ForLoopsMustUseBraces":
severity: 3
tags:
- Recommended
- CodeStyle
- Apex
"ForLoopsMustUseBraces-javascript":
severity: 3
tags:
- CodeStyle
- JavaScript
"FormalParameterNamingConventions":
severity: 3
tags:
- Recommended
- CodeStyle
- Apex
"GlobalVariable":
severity: 2
tags:
- BestPractices
- JavaScript
"IfElseStmtsMustUseBraces":
severity: 3
tags:
- Recommended
- CodeStyle
- Apex
"IfElseStmtsMustUseBraces-javascript":
severity: 3
tags:
- CodeStyle
- JavaScript
"IfStmtsMustUseBraces":
severity: 3
tags:
- Recommended
- CodeStyle
- Apex
"IfStmtsMustUseBraces-javascript":
severity: 3
tags:
- CodeStyle
- JavaScript
"InaccessibleAuraEnabledGetter":
severity: 3
tags:
- Recommended
- ErrorProne
- Apex
"InaccurateNumericLiteral":
severity: 3
tags:
- ErrorProne
- JavaScript
"LimitConnectedAppScope":
severity: 3
tags:
- AppExchange
- Security
- XML
"LoadCSSApexStylesheet":
severity: 2
tags:
- AppExchange
- Security
- Visualforce
"LoadCSSLinkHref":
severity: 2
tags:
- AppExchange
- Security
- Visualforce
"LoadJavaScriptHtmlScript":
severity: 2
tags:
- AppExchange
- Security
- Visualforce
"LoadJavaScriptIncludeScript":
severity: 2
tags:
- AppExchange
- Security
- Visualforce
"LocalVariableNamingConventions":
severity: 3
tags:
- Recommended
- CodeStyle
- Apex
"MethodNamingConventions":
severity: 3
tags:
- Recommended
- CodeStyle
- Apex
"MethodWithSameNameAsEnclosingClass":
severity: 3
tags:
- Recommended
- ErrorProne
- Apex
"MissingEncoding":
severity: 3
tags:
- BestPractices
- XML
"MistypedCDATASection":
severity: 3
tags:
- ErrorProne
- XML
"NcssConstructorCount":
severity: 4
tags:
- Recommended
- Design
- Apex
"NcssMethodCount":
severity: 4
tags:
- Recommended
- Design
- Apex
"NcssTypeCount":
severity: 4
tags:
- Design
- Apex
"NoElseReturn":
severity: 3
tags:
- CodeStyle
- JavaScript
"OneDeclarationPerLine":
severity: 3
tags:
- Recommended
- CodeStyle
- Apex
"OperationWithHighCostInLoop":
severity: 3
tags:
- Recommended
- Performance
- Apex
"OperationWithLimitsInLoop":
severity: 3
tags:
- Recommended
- Performance
- Apex
"OverrideBothEqualsAndHashcode":
severity: 2
tags:
- Recommended
- ErrorProne
- Apex
"PropertyNamingConventions":
severity: 3
tags:
- Recommended
- CodeStyle
- Apex
"ProtectSensitiveData":
severity: 3
tags:
- AppExchange
- Security
- XML
"QueueableWithoutFinalizer":
severity: 4
tags:
- Recommended
- BestPractices
- Apex
"ScopeForInVariable":
severity: 2
tags:
- BestPractices
- JavaScript
"StdCyclomaticComplexity":
severity: 3
tags:
- Design
- Apex
"TestMethodsMustBeInTestClasses":
severity: 3
tags:
- Recommended
- ErrorProne
- Apex
"TooManyFields":
severity: 3
tags:
- Recommended
- Design
- Apex
"UnnecessaryBlock":
severity: 3
tags:
- CodeStyle
- JavaScript
"UnnecessaryParentheses":
severity: 4
tags:
- CodeStyle
- JavaScript
"UnnecessaryTypeAttribute":
severity: 3
tags:
- BestPractices
- HTML
"UnreachableCode":
severity: 2
tags:
- CodeStyle
- JavaScript
"UnusedLocalVariable":
severity: 3
tags:
- Recommended
- BestPractices
- Apex
"UnusedMethod":
severity: 3
tags:
- Recommended
- Design
- Apex
"UseAltAttributeForImages":
severity: 3
tags:
- BestPractices
- HTML
"UseBaseWithParseInt":
severity: 2
tags:
- BestPractices
- JavaScript
"UseHttpsCallbackUrlConnectedApp":
severity: 3
tags:
- AppExchange
- Security
- XML
"VfCsrf":
severity: 2
tags:
- Recommended
- Security
- Visualforce
"VfHtmlStyleTagXss":
severity: 2
tags:
- Recommended
- Security
- Visualforce
"VfUnescapeEl":
severity: 2
tags:
- Recommended
- Security
- Visualforce
"WhileLoopsMustUseBraces":
severity: 3
tags:
- Recommended
- CodeStyle
- Apex
"WhileLoopsMustUseBraces-javascript":
severity: 3
tags:
- CodeStyle
- JavaScript
# ======================================================================
# SFGE ENGINE RULE OVERRIDES
# ======================================================================
sfge:
"ApexFlsViolation":
severity: 2
tags:
- DevPreview
- Security
- Apex
"ApexNullPointerException":
severity: 3
tags:
- DevPreview
- ErrorProne
- Apex
"AvoidDatabaseOperationInLoop":
severity: 2
tags:
- DevPreview
- Performance
- Apex
"AvoidMultipleMassSchemaLookups":
severity: 2
tags:
- DevPreview
- Performance
- Apex
"DatabaseOperationsMustUseWithSharing":
severity: 2
tags:
- DevPreview
- Security
- Apex
"MissingNullCheckOnSoqlVariable":
severity: 3
tags:
- DevPreview
- Performance
- Apex
"UnimplementedType":
severity: 4
tags:
- DevPreview
- Performance
- Apex
# Engine specific custom configuration settings of the format engines.{engine_name}.{property_name} = {value} where:
# {engine_name} is the name of the engine containing the setting that you want to override.
# {property_name} is the name of a property that you would like to override.
# Each engine may have its own set of properties available to help customize that particular engine's behavior.
engines:
# ======================================================================
# FLOW SCANNER ENGINE CONFIGURATION
# To learn more about this configuration, visit:
# https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/guide/engine-flow.html#flow-scanner-configuration-reference
# ======================================================================
flow:
# Whether to turn off the 'flow' engine so that it is not included when running Code Analyzer commands.
disable_engine: false
# Indicates the specific Python command to use for the 'Flow Scanner' engine.
# May be provided as the name of a command that exists on the path, or an absolute file path location.
# If unspecified, or specified as null, then an attempt will be made to automatically discover a Python command from your environment.
python_command: null
# ======================================================================
# ESLINT ENGINE CONFIGURATION
# To learn more about this configuration, visit:
# https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/guide/engine-eslint.html#eslint-configuration-reference
# ======================================================================
eslint:
# Whether to turn off the 'eslint' engine so that it is not included when running Code Analyzer commands.
disable_engine: false
# Your project's main --dry-runESLint JIRAconfiguration Configuration
file. CreateMay be an absolute path or anewpathproject
4.6 JIRA Integration
Project Setup
Create JIRA project with these issue typetypes:
Configure forworkflow Salesforcestates:
Required JIRA Workflow States
Backlog ->→ In Progress ->→ In Review ->→ Ready for Deploy ->→ Done
Bitbucket
main- protected, requires PR
developfeature/*hotfix/*Work Segmentation
Story Creation Rules
Stories should be:- Independent (can be deployed alone)- Small enoughConnect to be completed in 1-3 days- Tagged with proper metadata types- Linked to an Epic
Required Story Fields
Epic Link
Integration Setup
JIRA to Bitbucket Connection
Smart Commits Configuration
In Bitbucket:
Configure branch policies
Commit Message Format
[# Commit message format
git commit -m "PROJ-123]123: BriefAdd descriptionvalidation rule to Account object
- DetailedAdded changesrequired field validation
- ImpactUpdated ontest existing functionalityclasses
- RelatedReady configurationfor UAT testing"
Pipeline4.7 Configuration
Notification Get the bitbucket-pipelines.yml file
Integrate it and set up the variables
Automation RulesSetup
JIRAMicrosoft AutomationTeams Integration
Bitbucket Pipelines
Trigger on PR creation
Security and Access
Required Team Roles
Project Admin (JIRA + Bitbucket)
Access Matrix
Role | JIRA | Bitbucket | Salesforce
Project Admin | Admin| Admin | System Admin
Developer | Write| Write | Developer
QA | Write| Read | Read-only
Remember that this setup needs to be done only once per project, but maintaining the discipline of following these structures is crucial for successful CI/CD implementation.
The key to success is ensuring that:1. Every piece of work has a ticket2. Every commit links to a ticket3. Every deployment is traceable4. All changes are reviewable
This structured approach ensures thatin your project managementchannel
directly
config/ directory:
{
"type":"message",
"attachments":[
{
"contentType":"application/vnd.microsoft.card.adaptive",
"contentUrl":null,
"content":{
"$schema":"http://adaptivecards.io/schemas/adaptive-card.json",
"type":"AdaptiveCard",
"version": "1.4",
"body": [
{
"type": "Container",
"items": [
{
"type": "TextBlock",
"text": "$TITLE",
"weight": "Bolder",
"size": "Medium",
"color": "Good"
},
{
"type": "ColumnSet",
"columns": [
{
"type": "Column",
"width": "auto",
"items": [
{
"type": "Image",
"url": "https://cdn-icons-png.flaticon.com/512/1907/1907742.png",
"altText": "Pipeline Logo",
"size": "Small"
}
]
},
{
"type": "Column",
"width": "stretch",
"items": [
{
"type": "TextBlock",
"text": "Scratch Org Creation",
"weight": "Bolder",
"wrap": true
},
{
"type": "TextBlock",
"spacing": "None",
"text": "$STATUS on $BITBUCKET_BRANCH",
"isSubtle": true,
"wrap": true,
"color": "Good"
}
]
}
]
}
]
},
{
"type": "Container",
"items": [
{
"type": "TextBlock",
"text": "The Login URL for the login command is ",
"wrap": true
},
{
"type": "TextBlock",
"text": "$SF_SCRATCH_AUTH",
"wrap": true,
"spacing": "Small",
"fontType": "Monospace",
"isSubtle": true,
"color": "Dark",
"weight": "Bolder"
},
{
"type": "TextBlock",
"text": "Please login using the command in your deploymentterminal",
pipeline,"wrap": makingtrue
it},
easier{
"type": "TextBlock",
"text": "echo URL | sf org login sfdx-url --alias ALIAS --sfdx-url-stdin ",
"wrap": true,
"spacing": "Small",
"spacing": "Small",
"fontType": "Monospace",
"isSubtle": true,
"color": "Dark",
"weight": "Bolder"
},
{
"type": "TextBlock",
"text": "where URL is the URL above and ALIAS is your choice of alias to tracklog changesin.",
and"wrap": maintaintrue
quality},
throughout{
"type": "TextBlock",
"text": "If you prefer to use the developmentVSCode, lifecycle.please select",
"wrap": true,
"weight": "Bolder"
},
{
"type": "TextBlock",
"text": "'Authorize an Org using SessionId'",
"wrap": true
},
{
"type": "TextBlock",
"text": "and paste the following token.",
"wrap": true
},
{
"type": "TextBlock",
"text": "$SF_SCRATCH_TOKEN",
"wrap": true,
"spacing": "Small",
"spacing": "Small",
"fontType": "Monospace",
"isSubtle": true,
"color": "Dark",
"weight": "Bolder"
},
{
"type": "FactSet",
"facts": [
{
"title": "Status:",
"value": "Success"
}
]
}
]
}
]
}
}
]
}