Skip to content

Commit 9e05cf0

Browse files
committed
merge main
2 parents 2df4718 + 65bdedc commit 9e05cf0

File tree

953 files changed

+52752
-13254
lines changed

Some content is hidden

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

953 files changed

+52752
-13254
lines changed

.eslintrc.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,15 @@ const restrictedImportPaths = [
6666
"For 'ExpensiMark', please use '@libs/Parser' instead.",
6767
].join('\n'),
6868
},
69+
{
70+
name: 'lodash/memoize',
71+
message: "Please use '@src/libs/memoize' instead.",
72+
},
73+
{
74+
name: 'lodash',
75+
importNames: ['memoize'],
76+
message: "Please use '@src/libs/memoize' instead.",
77+
},
6978
];
7079

7180
const restrictedImportPatterns = [
@@ -97,7 +106,7 @@ module.exports = {
97106
'plugin:@typescript-eslint/recommended-type-checked',
98107
'plugin:@typescript-eslint/stylistic-type-checked',
99108
'plugin:you-dont-need-lodash-underscore/all',
100-
'prettier',
109+
'plugin:prettier/recommended',
101110
],
102111
plugins: ['@typescript-eslint', 'jsdoc', 'you-dont-need-lodash-underscore', 'react-native-a11y', 'react', 'testing-library', 'eslint-plugin-react-compiler'],
103112
ignorePatterns: ['lib/**'],

.github/.eslintrc.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@ module.exports = {
66
'@lwc/lwc/no-async-await': 'off',
77
'no-await-in-loop': 'off',
88
'no-restricted-syntax': ['error', 'ForInStatement', 'LabeledStatement', 'WithStatement'],
9+
'no-continue': 'off',
910
},
1011
};

.github/actions/composite/buildAndroidE2EAPK/action.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ runs:
5353
distribution: "oracle"
5454
java-version: "17"
5555

56-
- uses: ruby/setup-ruby@a05e47355e80e57b9a67566a813648fa67d92011
56+
- uses: ruby/setup-ruby@v1.187.0
5757
with:
5858
ruby-version: "2.7"
5959
bundler-cache: true
@@ -72,9 +72,11 @@ runs:
7272
- name: Build APK
7373
run: npm run ${{ inputs.PACKAGE_SCRIPT_NAME }}
7474
shell: bash
75+
env:
76+
RUBYOPT: '-rostruct'
7577

7678
- name: Upload APK
77-
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3
79+
uses: actions/upload-artifact@v4
7880
with:
7981
name: ${{ inputs.ARTIFACT_NAME }}
8082
path: ${{ inputs.APP_OUTPUT_PATH }}

.github/actions/composite/setupNode/action.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,15 @@ runs:
3131

3232
- name: Install root project node packages
3333
if: steps.cache-node-modules.outputs.cache-hit != 'true'
34-
uses: nick-fields/retry@v2
34+
uses: nick-fields/retry@3f757583fb1b1f940bc8ef4bf4734c8dc02a5847
3535
with:
3636
timeout_minutes: 30
3737
max_attempts: 3
3838
command: npm ci
3939

4040
- name: Install node packages for desktop submodule
4141
if: steps.cache-desktop-node-modules.outputs.cache-hit != 'true'
42-
uses: nick-fields/retry@v2
42+
uses: nick-fields/retry@3f757583fb1b1f940bc8ef4bf4734c8dc02a5847
4343
with:
4444
timeout_minutes: 30
4545
max_attempts: 3

.github/actions/javascript/authorChecklist/index.js

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17016,14 +17016,31 @@ const CONST = {
1701617016
STAGING_DEPLOY: 'StagingDeployCash',
1701717017
DEPLOY_BLOCKER: 'DeployBlockerCash',
1701817018
INTERNAL_QA: 'InternalQA',
17019+
HELP_WANTED: 'Help Wanted',
1701917020
},
17021+
ACTIONS: {
17022+
CREATED: 'created',
17023+
EDIT: 'edited',
17024+
},
17025+
EVENTS: {
17026+
ISSUE_COMMENT: 'issue_comment',
17027+
},
17028+
OPENAI_ROLES: {
17029+
USER: 'user',
17030+
ASSISTANT: 'assistant',
17031+
},
17032+
PROPOSAL_KEYWORD: 'Proposal',
17033+
OPENAI_THREAD_COMPLETED: 'completed',
1702017034
DATE_FORMAT_STRING: 'yyyy-MM-dd',
1702117035
PULL_REQUEST_REGEX: new RegExp(`${GITHUB_BASE_URL_REGEX.source}/.*/.*/pull/([0-9]+).*`),
1702217036
ISSUE_REGEX: new RegExp(`${GITHUB_BASE_URL_REGEX.source}/.*/.*/issues/([0-9]+).*`),
1702317037
ISSUE_OR_PULL_REQUEST_REGEX: new RegExp(`${GITHUB_BASE_URL_REGEX.source}/.*/.*/(?:pull|issues)/([0-9]+).*`),
1702417038
POLL_RATE: 10000,
1702517039
APP_REPO_URL: `https://github.com/${GIT_CONST.GITHUB_OWNER}/${GIT_CONST.APP_REPO}`,
1702617040
APP_REPO_GIT_URL: `[email protected]:${GIT_CONST.GITHUB_OWNER}/${GIT_CONST.APP_REPO}.git`,
17041+
NO_ACTION: 'NO_ACTION',
17042+
OPENAI_POLL_RATE: 1500,
17043+
OPENAI_POLL_TIMEOUT: 90000,
1702717044
};
1702817045
exports["default"] = CONST;
1702917046

@@ -17400,12 +17417,6 @@ class GithubUtils {
1740017417
})
1740117418
.then((response) => response.data.workflow_runs[0]?.id);
1740217419
}
17403-
/**
17404-
* Generate the well-formatted body of a production release.
17405-
*/
17406-
static getReleaseBody(pullRequests) {
17407-
return pullRequests.map((number) => `- ${this.getPullRequestURLFromNumber(number)}`).join('\r\n');
17408-
}
1740917420
/**
1741017421
* Generate the URL of an New Expensify pull request given the PR number.
1741117422
*/

.github/actions/javascript/awaitStagingDeploys/index.js

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12257,14 +12257,31 @@ const CONST = {
1225712257
STAGING_DEPLOY: 'StagingDeployCash',
1225812258
DEPLOY_BLOCKER: 'DeployBlockerCash',
1225912259
INTERNAL_QA: 'InternalQA',
12260+
HELP_WANTED: 'Help Wanted',
1226012261
},
12262+
ACTIONS: {
12263+
CREATED: 'created',
12264+
EDIT: 'edited',
12265+
},
12266+
EVENTS: {
12267+
ISSUE_COMMENT: 'issue_comment',
12268+
},
12269+
OPENAI_ROLES: {
12270+
USER: 'user',
12271+
ASSISTANT: 'assistant',
12272+
},
12273+
PROPOSAL_KEYWORD: 'Proposal',
12274+
OPENAI_THREAD_COMPLETED: 'completed',
1226112275
DATE_FORMAT_STRING: 'yyyy-MM-dd',
1226212276
PULL_REQUEST_REGEX: new RegExp(`${GITHUB_BASE_URL_REGEX.source}/.*/.*/pull/([0-9]+).*`),
1226312277
ISSUE_REGEX: new RegExp(`${GITHUB_BASE_URL_REGEX.source}/.*/.*/issues/([0-9]+).*`),
1226412278
ISSUE_OR_PULL_REQUEST_REGEX: new RegExp(`${GITHUB_BASE_URL_REGEX.source}/.*/.*/(?:pull|issues)/([0-9]+).*`),
1226512279
POLL_RATE: 10000,
1226612280
APP_REPO_URL: `https://github.com/${GIT_CONST.GITHUB_OWNER}/${GIT_CONST.APP_REPO}`,
1226712281
APP_REPO_GIT_URL: `[email protected]:${GIT_CONST.GITHUB_OWNER}/${GIT_CONST.APP_REPO}.git`,
12282+
NO_ACTION: 'NO_ACTION',
12283+
OPENAI_POLL_RATE: 1500,
12284+
OPENAI_POLL_TIMEOUT: 90000,
1226812285
};
1226912286
exports["default"] = CONST;
1227012287

@@ -12641,12 +12658,6 @@ class GithubUtils {
1264112658
})
1264212659
.then((response) => response.data.workflow_runs[0]?.id);
1264312660
}
12644-
/**
12645-
* Generate the well-formatted body of a production release.
12646-
*/
12647-
static getReleaseBody(pullRequests) {
12648-
return pullRequests.map((number) => `- ${this.getPullRequestURLFromNumber(number)}`).join('\r\n');
12649-
}
1265012661
/**
1265112662
* Generate the URL of an New Expensify pull request given the PR number.
1265212663
*/

.github/actions/javascript/checkDeployBlockers/index.js

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11540,14 +11540,31 @@ const CONST = {
1154011540
STAGING_DEPLOY: 'StagingDeployCash',
1154111541
DEPLOY_BLOCKER: 'DeployBlockerCash',
1154211542
INTERNAL_QA: 'InternalQA',
11543+
HELP_WANTED: 'Help Wanted',
1154311544
},
11545+
ACTIONS: {
11546+
CREATED: 'created',
11547+
EDIT: 'edited',
11548+
},
11549+
EVENTS: {
11550+
ISSUE_COMMENT: 'issue_comment',
11551+
},
11552+
OPENAI_ROLES: {
11553+
USER: 'user',
11554+
ASSISTANT: 'assistant',
11555+
},
11556+
PROPOSAL_KEYWORD: 'Proposal',
11557+
OPENAI_THREAD_COMPLETED: 'completed',
1154411558
DATE_FORMAT_STRING: 'yyyy-MM-dd',
1154511559
PULL_REQUEST_REGEX: new RegExp(`${GITHUB_BASE_URL_REGEX.source}/.*/.*/pull/([0-9]+).*`),
1154611560
ISSUE_REGEX: new RegExp(`${GITHUB_BASE_URL_REGEX.source}/.*/.*/issues/([0-9]+).*`),
1154711561
ISSUE_OR_PULL_REQUEST_REGEX: new RegExp(`${GITHUB_BASE_URL_REGEX.source}/.*/.*/(?:pull|issues)/([0-9]+).*`),
1154811562
POLL_RATE: 10000,
1154911563
APP_REPO_URL: `https://github.com/${GIT_CONST.GITHUB_OWNER}/${GIT_CONST.APP_REPO}`,
1155011564
APP_REPO_GIT_URL: `[email protected]:${GIT_CONST.GITHUB_OWNER}/${GIT_CONST.APP_REPO}.git`,
11565+
NO_ACTION: 'NO_ACTION',
11566+
OPENAI_POLL_RATE: 1500,
11567+
OPENAI_POLL_TIMEOUT: 90000,
1155111568
};
1155211569
exports["default"] = CONST;
1155311570

@@ -11924,12 +11941,6 @@ class GithubUtils {
1192411941
})
1192511942
.then((response) => response.data.workflow_runs[0]?.id);
1192611943
}
11927-
/**
11928-
* Generate the well-formatted body of a production release.
11929-
*/
11930-
static getReleaseBody(pullRequests) {
11931-
return pullRequests.map((number) => `- ${this.getPullRequestURLFromNumber(number)}`).join('\r\n');
11932-
}
1193311944
/**
1193411945
* Generate the URL of an New Expensify pull request given the PR number.
1193511946
*/

.github/actions/javascript/createOrUpdateStagingDeploy/index.js

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14352,14 +14352,31 @@ const CONST = {
1435214352
STAGING_DEPLOY: 'StagingDeployCash',
1435314353
DEPLOY_BLOCKER: 'DeployBlockerCash',
1435414354
INTERNAL_QA: 'InternalQA',
14355+
HELP_WANTED: 'Help Wanted',
1435514356
},
14357+
ACTIONS: {
14358+
CREATED: 'created',
14359+
EDIT: 'edited',
14360+
},
14361+
EVENTS: {
14362+
ISSUE_COMMENT: 'issue_comment',
14363+
},
14364+
OPENAI_ROLES: {
14365+
USER: 'user',
14366+
ASSISTANT: 'assistant',
14367+
},
14368+
PROPOSAL_KEYWORD: 'Proposal',
14369+
OPENAI_THREAD_COMPLETED: 'completed',
1435614370
DATE_FORMAT_STRING: 'yyyy-MM-dd',
1435714371
PULL_REQUEST_REGEX: new RegExp(`${GITHUB_BASE_URL_REGEX.source}/.*/.*/pull/([0-9]+).*`),
1435814372
ISSUE_REGEX: new RegExp(`${GITHUB_BASE_URL_REGEX.source}/.*/.*/issues/([0-9]+).*`),
1435914373
ISSUE_OR_PULL_REQUEST_REGEX: new RegExp(`${GITHUB_BASE_URL_REGEX.source}/.*/.*/(?:pull|issues)/([0-9]+).*`),
1436014374
POLL_RATE: 10000,
1436114375
APP_REPO_URL: `https://github.com/${GIT_CONST.GITHUB_OWNER}/${GIT_CONST.APP_REPO}`,
1436214376
APP_REPO_GIT_URL: `[email protected]:${GIT_CONST.GITHUB_OWNER}/${GIT_CONST.APP_REPO}.git`,
14377+
NO_ACTION: 'NO_ACTION',
14378+
OPENAI_POLL_RATE: 1500,
14379+
OPENAI_POLL_TIMEOUT: 90000,
1436314380
};
1436414381
exports["default"] = CONST;
1436514382

@@ -14954,12 +14971,6 @@ class GithubUtils {
1495414971
})
1495514972
.then((response) => response.data.workflow_runs[0]?.id);
1495614973
}
14957-
/**
14958-
* Generate the well-formatted body of a production release.
14959-
*/
14960-
static getReleaseBody(pullRequests) {
14961-
return pullRequests.map((number) => `- ${this.getPullRequestURLFromNumber(number)}`).join('\r\n');
14962-
}
1496314974
/**
1496414975
* Generate the URL of an New Expensify pull request given the PR number.
1496514976
*/

.github/actions/javascript/getArtifactInfo/index.js

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11501,14 +11501,31 @@ const CONST = {
1150111501
STAGING_DEPLOY: 'StagingDeployCash',
1150211502
DEPLOY_BLOCKER: 'DeployBlockerCash',
1150311503
INTERNAL_QA: 'InternalQA',
11504+
HELP_WANTED: 'Help Wanted',
1150411505
},
11506+
ACTIONS: {
11507+
CREATED: 'created',
11508+
EDIT: 'edited',
11509+
},
11510+
EVENTS: {
11511+
ISSUE_COMMENT: 'issue_comment',
11512+
},
11513+
OPENAI_ROLES: {
11514+
USER: 'user',
11515+
ASSISTANT: 'assistant',
11516+
},
11517+
PROPOSAL_KEYWORD: 'Proposal',
11518+
OPENAI_THREAD_COMPLETED: 'completed',
1150511519
DATE_FORMAT_STRING: 'yyyy-MM-dd',
1150611520
PULL_REQUEST_REGEX: new RegExp(`${GITHUB_BASE_URL_REGEX.source}/.*/.*/pull/([0-9]+).*`),
1150711521
ISSUE_REGEX: new RegExp(`${GITHUB_BASE_URL_REGEX.source}/.*/.*/issues/([0-9]+).*`),
1150811522
ISSUE_OR_PULL_REQUEST_REGEX: new RegExp(`${GITHUB_BASE_URL_REGEX.source}/.*/.*/(?:pull|issues)/([0-9]+).*`),
1150911523
POLL_RATE: 10000,
1151011524
APP_REPO_URL: `https://github.com/${GIT_CONST.GITHUB_OWNER}/${GIT_CONST.APP_REPO}`,
1151111525
APP_REPO_GIT_URL: `[email protected]:${GIT_CONST.GITHUB_OWNER}/${GIT_CONST.APP_REPO}.git`,
11526+
NO_ACTION: 'NO_ACTION',
11527+
OPENAI_POLL_RATE: 1500,
11528+
OPENAI_POLL_TIMEOUT: 90000,
1151211529
};
1151311530
exports["default"] = CONST;
1151411531

@@ -11885,12 +11902,6 @@ class GithubUtils {
1188511902
})
1188611903
.then((response) => response.data.workflow_runs[0]?.id);
1188711904
}
11888-
/**
11889-
* Generate the well-formatted body of a production release.
11890-
*/
11891-
static getReleaseBody(pullRequests) {
11892-
return pullRequests.map((number) => `- ${this.getPullRequestURLFromNumber(number)}`).join('\r\n');
11893-
}
1189411905
/**
1189511906
* Generate the URL of an New Expensify pull request given the PR number.
1189611907
*/

.github/actions/javascript/getDeployPullRequestList/getDeployPullRequestList.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,15 @@ async function run() {
4040
})
4141
).data.jobs.some((job) => job.name.startsWith('Build and deploy') && job.conclusion === 'success')
4242
) {
43+
console.log(`Deploy was not a success: ${lastSuccessfulDeploy.html_url}, looking at the next one`);
4344
lastSuccessfulDeploy = completedDeploys.shift();
4445
}
4546

46-
const priorTag = completedDeploys[0].head_branch;
47+
if (!lastSuccessfulDeploy) {
48+
throw new Error('Could not find a prior successful deploy');
49+
}
50+
51+
const priorTag = lastSuccessfulDeploy.head_branch;
4752
console.log(`Looking for PRs deployed to ${deployEnv} between ${priorTag} and ${inputTag}`);
4853
const prList = await GitUtils.getPullRequestsMergedBetween(priorTag ?? '', inputTag);
4954
console.log('Found the pull request list: ', prList);

.github/actions/javascript/getDeployPullRequestList/index.js

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11529,9 +11529,13 @@ async function run() {
1152911529
run_id: lastSuccessfulDeploy.id,
1153011530
filter: 'latest',
1153111531
})).data.jobs.some((job) => job.name.startsWith('Build and deploy') && job.conclusion === 'success')) {
11532+
console.log(`Deploy was not a success: ${lastSuccessfulDeploy.html_url}, looking at the next one`);
1153211533
lastSuccessfulDeploy = completedDeploys.shift();
1153311534
}
11534-
const priorTag = completedDeploys[0].head_branch;
11535+
if (!lastSuccessfulDeploy) {
11536+
throw new Error('Could not find a prior successful deploy');
11537+
}
11538+
const priorTag = lastSuccessfulDeploy.head_branch;
1153511539
console.log(`Looking for PRs deployed to ${deployEnv} between ${priorTag} and ${inputTag}`);
1153611540
const prList = await GitUtils_1.default.getPullRequestsMergedBetween(priorTag ?? '', inputTag);
1153711541
console.log('Found the pull request list: ', prList);
@@ -11631,14 +11635,31 @@ const CONST = {
1163111635
STAGING_DEPLOY: 'StagingDeployCash',
1163211636
DEPLOY_BLOCKER: 'DeployBlockerCash',
1163311637
INTERNAL_QA: 'InternalQA',
11638+
HELP_WANTED: 'Help Wanted',
11639+
},
11640+
ACTIONS: {
11641+
CREATED: 'created',
11642+
EDIT: 'edited',
11643+
},
11644+
EVENTS: {
11645+
ISSUE_COMMENT: 'issue_comment',
11646+
},
11647+
OPENAI_ROLES: {
11648+
USER: 'user',
11649+
ASSISTANT: 'assistant',
1163411650
},
11651+
PROPOSAL_KEYWORD: 'Proposal',
11652+
OPENAI_THREAD_COMPLETED: 'completed',
1163511653
DATE_FORMAT_STRING: 'yyyy-MM-dd',
1163611654
PULL_REQUEST_REGEX: new RegExp(`${GITHUB_BASE_URL_REGEX.source}/.*/.*/pull/([0-9]+).*`),
1163711655
ISSUE_REGEX: new RegExp(`${GITHUB_BASE_URL_REGEX.source}/.*/.*/issues/([0-9]+).*`),
1163811656
ISSUE_OR_PULL_REQUEST_REGEX: new RegExp(`${GITHUB_BASE_URL_REGEX.source}/.*/.*/(?:pull|issues)/([0-9]+).*`),
1163911657
POLL_RATE: 10000,
1164011658
APP_REPO_URL: `https://github.com/${GIT_CONST.GITHUB_OWNER}/${GIT_CONST.APP_REPO}`,
1164111659
APP_REPO_GIT_URL: `[email protected]:${GIT_CONST.GITHUB_OWNER}/${GIT_CONST.APP_REPO}.git`,
11660+
NO_ACTION: 'NO_ACTION',
11661+
OPENAI_POLL_RATE: 1500,
11662+
OPENAI_POLL_TIMEOUT: 90000,
1164211663
};
1164311664
exports["default"] = CONST;
1164411665

@@ -12233,12 +12254,6 @@ class GithubUtils {
1223312254
})
1223412255
.then((response) => response.data.workflow_runs[0]?.id);
1223512256
}
12236-
/**
12237-
* Generate the well-formatted body of a production release.
12238-
*/
12239-
static getReleaseBody(pullRequests) {
12240-
return pullRequests.map((number) => `- ${this.getPullRequestURLFromNumber(number)}`).join('\r\n');
12241-
}
1224212257
/**
1224312258
* Generate the URL of an New Expensify pull request given the PR number.
1224412259
*/

0 commit comments

Comments
 (0)