Skip to content

Commit da2b340

Browse files
authored
Merge pull request #1610 from jetstreamapp/feat/canvas-app
Introduce Canvas App
2 parents 1f65f3d + 7704670 commit da2b340

144 files changed

Lines changed: 12523 additions & 630 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/sfdx-ci.yml

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
name: SFDX CI
2+
on:
3+
push:
4+
branches:
5+
- main
6+
paths:
7+
- "apps-sfdx/**"
8+
pull_request:
9+
paths:
10+
- "apps-sfdx/**"
11+
12+
concurrency:
13+
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && github.sha || github.ref }}
14+
cancel-in-progress: true
15+
16+
permissions:
17+
contents: read
18+
19+
jobs:
20+
test-managed-package:
21+
runs-on: ubuntu-latest
22+
timeout-minutes: 60
23+
24+
steps:
25+
- uses: actions/checkout@v6
26+
name: Checkout
27+
28+
- name: Install Salesforce CLI
29+
run: npm install -g @salesforce/cli
30+
31+
- name: Decode JWT key
32+
run: echo "${{ secrets.SFDX_JWT_KEY_BASE64 }}" | base64 --decode > server.key
33+
34+
- name: Authenticate to Dev Hub
35+
run: |
36+
sf org login jwt \
37+
--client-id ${{ secrets.SFDX_CONSUMER_KEY }} \
38+
--jwt-key-file server.key \
39+
--username ${{ secrets.SFDX_DEVHUB_USERNAME }} \
40+
--set-default-dev-hub \
41+
--alias devhub
42+
43+
- name: Create Scratch Org
44+
run: |
45+
sf org create scratch \
46+
--definition-file apps-sfdx/config/project-scratch-def.json \
47+
--set-default \
48+
--alias ci-scratch \
49+
--no-track-source \
50+
--duration-days 1 \
51+
--wait 10
52+
53+
- name: Deploy Source
54+
working-directory: apps-sfdx
55+
run: sf project deploy start --source-dir canvas-app/jetstream
56+
57+
- name: Run Apex Tests
58+
run: |
59+
sf apex run test \
60+
--test-level RunLocalTests \
61+
--wait 10 \
62+
--result-format human \
63+
--code-coverage
64+
65+
- name: Delete Scratch Org
66+
if: always()
67+
run: sf org delete scratch --no-prompt --target-org ci-scratch || true
68+
69+
- name: Remove key file
70+
if: always()
71+
run: rm -f server.key

.nxignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
dist/
2+
apps-sfdx/

.vscode/launch.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,14 @@
5151
"sourceMaps": true,
5252
"restart": true,
5353
"skipFiles": ["<node_internals>/**"]
54+
},
55+
{
56+
"name": "Launch Apex Replay Debugger",
57+
"type": "apex-replay",
58+
"request": "launch",
59+
"logFile": "${command:AskForLogFileName}",
60+
"stopOnEntry": true,
61+
"trace": true
5462
}
5563
]
5664
}

.vscode/settings.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@
2121
"**/node_modules/**": true,
2222
"dist": true,
2323
"logs": true,
24-
"tmp": true
24+
"tmp": true,
25+
"**/node_modules": true,
26+
"**/.sf": true,
27+
"**/.sfdx": true
2528
},
2629
"files.watcherExclude": {
2730
"**/.git": true,
@@ -30,7 +33,9 @@
3033
"**/.DS_Store": true,
3134
"**/node_modules/**": true,
3235
"**/monaco/vs/**": true,
33-
"apps/api/src/assets/js": true
36+
"apps/api/src/assets/js": true,
37+
"**/.sf": true,
38+
"**/.sfdx": true
3439
},
3540
"[typescript]": {
3641
"editor.defaultFormatter": "esbenp.prettier-vscode"

apps-sfdx/.forceignore

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
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+
package.xml
5+
6+
# LWC configuration files
7+
**/jsconfig.json
8+
**/.eslintrc.json
9+
10+
# LWC Jest
11+
**/__tests__/**
12+
13+
**/*.md
14+
**/.gitignore
15+
**/.gitkeep
16+
17+
**/*PasswordPolicy*
18+
**/*SessionSetting*
19+
**/appMenus/**
20+
**/appSwitcher/**
21+
**/customindex/**
22+
**/objectTranslations/**
23+
**/profiles/**
24+
**/settings/**

apps-sfdx/.prettierignore

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# List files or directories below to ignore them when running prettier
2+
# More information: https://prettier.io/docs/en/ignore.html
3+
#
4+
5+
**/staticresources/**
6+
.localdevserver
7+
.sfdx
8+
.sf
9+
.vscode
10+
11+
coverage/

apps-sfdx/.prettierrc

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"trailingComma": "none",
3+
"singleQuote": true,
4+
"printWidth": 140,
5+
"plugins": ["prettier-plugin-apex", "@prettier/plugin-xml"],
6+
"overrides": [
7+
{
8+
"files": "**/lwc/**/*.html",
9+
"options": { "parser": "lwc" }
10+
},
11+
{
12+
"files": "*.{cmp,page,component}",
13+
"options": { "parser": "html" }
14+
}
15+
]
16+
}

apps-sfdx/.vscode/settings.json

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
{
2+
"editor.rulers": [140],
3+
"editor.tabSize": 2,
4+
"editor.formatOnSave": true,
5+
"editor.codeActionsOnSave": {
6+
"source.organizeImports": "explicit"
7+
},
8+
"files.exclude": {
9+
"**/.git": true,
10+
"**/.svn": true,
11+
"**/.hg": true,
12+
"**/.DS_Store": true,
13+
"**/.classpath": true,
14+
"**/.project": true,
15+
"**/.settings": true,
16+
"**/.factorypath": true
17+
},
18+
"search.exclude": {
19+
"apps/api/src/assets/js": true,
20+
"**/monaco/vs/**": true,
21+
"**/node_modules/**": true,
22+
"dist": true,
23+
"logs": true,
24+
"tmp": true,
25+
"**/node_modules": true,
26+
"**/.sf": true,
27+
"**/.sfdx": true
28+
},
29+
"files.watcherExclude": {
30+
"**/.git": true,
31+
"**/.svn": true,
32+
"**/.hg": true,
33+
"**/.DS_Store": true,
34+
"**/node_modules/**": true,
35+
"**/monaco/vs/**": true,
36+
"apps/api/src/assets/js": true,
37+
"**/.sf": true,
38+
"**/.sfdx": true
39+
},
40+
"[typescript]": {
41+
"editor.defaultFormatter": "esbenp.prettier-vscode"
42+
},
43+
"[json]": {
44+
"editor.defaultFormatter": "esbenp.prettier-vscode"
45+
},
46+
"[markdown]": {
47+
"editor.defaultFormatter": "esbenp.prettier-vscode"
48+
},
49+
"[html]": {
50+
"editor.defaultFormatter": "esbenp.prettier-vscode"
51+
},
52+
"[javascript]": {
53+
"editor.defaultFormatter": "esbenp.prettier-vscode"
54+
},
55+
"[typescriptreact]": {
56+
"editor.defaultFormatter": "esbenp.prettier-vscode"
57+
},
58+
"[javascriptreact]": {
59+
"editor.defaultFormatter": "esbenp.prettier-vscode"
60+
},
61+
"[xml]": {
62+
"editor.defaultFormatter": "esbenp.prettier-vscode"
63+
},
64+
"editor.tabCompletion": "on",
65+
"editor.defaultFormatter": "esbenp.prettier-vscode",
66+
"git.branchProtection": ["main", "release"],
67+
"eslint.useFlatConfig": true,
68+
"workbench.colorCustomizations": {
69+
"activityBar.activeBackground": "#032D60",
70+
"activityBar.activeBorder": "#1B96FF",
71+
"activityBar.background": "#032D60",
72+
"activityBar.foreground": "#e7e7e7",
73+
"activityBar.inactiveForeground": "#e7e7e799",
74+
"activityBarBadge.background": "#1B96FF",
75+
"activityBarBadge.foreground": "#ffffff",
76+
"statusBar.background": "#032D60",
77+
"statusBar.foreground": "#e7e7e7",
78+
"statusBarItem.hoverBackground": "#0B5CAB",
79+
"titleBar.activeBackground": "#032D60",
80+
"titleBar.activeForeground": "#e7e7e7",
81+
"titleBar.inactiveBackground": "#032D6099",
82+
"titleBar.inactiveForeground": "#e7e7e799",
83+
"sash.hoverBorder": "#1B96FF",
84+
"statusBarItem.remoteBackground": "#0B5CAB",
85+
"statusBarItem.remoteForeground": "#e7e7e7",
86+
"commandCenter.border": "#e7e7e799"
87+
},
88+
"xml.preferences.showSchemaDocumentationType": "none"
89+
}

apps-sfdx/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Jetstream for Salesforce
2+
3+
Navigating to the full screen version of Jetstream:
4+
5+
`/jetstream/JetstreamApp.app`
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<AppMenu xmlns="http://soap.sforce.com/2006/04/metadata">
3+
<appMenuItems>
4+
<name>standard__Platform</name>
5+
<type>CustomApplication</type>
6+
</appMenuItems>
7+
<appMenuItems>
8+
<name>standard__Sales</name>
9+
<type>CustomApplication</type>
10+
</appMenuItems>
11+
<appMenuItems>
12+
<name>standard__Service</name>
13+
<type>CustomApplication</type>
14+
</appMenuItems>
15+
<appMenuItems>
16+
<name>standard__Marketing</name>
17+
<type>CustomApplication</type>
18+
</appMenuItems>
19+
<appMenuItems>
20+
<name>standard__ServiceConsole</name>
21+
<type>CustomApplication</type>
22+
</appMenuItems>
23+
<appMenuItems>
24+
<name>standard__AppLauncher</name>
25+
<type>CustomApplication</type>
26+
</appMenuItems>
27+
<appMenuItems>
28+
<name>standard__Community</name>
29+
<type>CustomApplication</type>
30+
</appMenuItems>
31+
<appMenuItems>
32+
<name>standard__Sites</name>
33+
<type>CustomApplication</type>
34+
</appMenuItems>
35+
<appMenuItems>
36+
<name>standard__Chatter</name>
37+
<type>CustomApplication</type>
38+
</appMenuItems>
39+
<appMenuItems>
40+
<name>standard__Content</name>
41+
<type>CustomApplication</type>
42+
</appMenuItems>
43+
<appMenuItems>
44+
<name>standard__LightningSales</name>
45+
<type>CustomApplication</type>
46+
</appMenuItems>
47+
<appMenuItems>
48+
<name>standard__AllTabSet</name>
49+
<type>CustomApplication</type>
50+
</appMenuItems>
51+
<appMenuItems>
52+
<name>CPQIntegrationUserApp</name>
53+
<type>ConnectedApp</type>
54+
</appMenuItems>
55+
<appMenuItems>
56+
<name>standard__LightningBolt</name>
57+
<type>CustomApplication</type>
58+
</appMenuItems>
59+
<appMenuItems>
60+
<name>standard__SalesforceCMS</name>
61+
<type>CustomApplication</type>
62+
</appMenuItems>
63+
<appMenuItems>
64+
<name>standard__SalesCloudMobile</name>
65+
<type>CustomApplication</type>
66+
</appMenuItems>
67+
<appMenuItems>
68+
<name>standard__Approvals</name>
69+
<type>CustomApplication</type>
70+
</appMenuItems>
71+
<appMenuItems>
72+
<name>standard__Shield</name>
73+
<type>CustomApplication</type>
74+
</appMenuItems>
75+
<appMenuItems>
76+
<name>standard__MSJApp</name>
77+
<type>CustomApplication</type>
78+
</appMenuItems>
79+
<appMenuItems>
80+
<name>Jetstream_Canvas</name>
81+
<type>ExternalClientApplication</type>
82+
</appMenuItems>
83+
<appMenuItems>
84+
<name>Jetstream</name>
85+
<type>CustomApplication</type>
86+
</appMenuItems>
87+
</AppMenu>

0 commit comments

Comments
 (0)