chore: Changes to enable internal cypress dashboard (#26626)
> Pull Request Template > > Use this template to quickly create a well written pull request. Delete all quotes before creating the pull request. > ## Description > Add a TL;DR when description is extra long (helps content team) > > Please include a summary of the changes and which issue has been fixed. Please also include relevant motivation > and context. List any dependencies that are required for this change > > Links to Notion, Figma or any other documents that might be relevant to the PR > > #### PR fixes following issue(s) Fixes # (issue number) > if no issue exists, please create an issue and ask the maintainers about this first > > #### Media > A video or a GIF is preferred. when using Loom, don’t embed because it looks like it’s a GIF. instead, just link to the video > > #### Type of change > Please delete options that are not relevant. - Bug fix (non-breaking change which fixes an issue) - New feature (non-breaking change which adds functionality) - Breaking change (fix or feature that would cause existing functionality to not work as expected) - Chore (housekeeping or task changes that don't impact user perception) - This change requires a documentation update > > > ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [ ] Manual - [ ] JUnit - [ ] Jest - [ ] Cypress > > #### Test Plan > Add Testsmith test cases links that relate to this PR > > #### Issues raised during DP testing > Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR) > > > ## Checklist: #### Dev activity - [ ] My code follows the style guidelines of this project - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed
This commit is contained in:
parent
8640c27d37
commit
edbbefd979
61
.github/workflows/ci-test-custom-script.yml
vendored
61
.github/workflows/ci-test-custom-script.yml
vendored
|
|
@ -239,6 +239,42 @@ jobs:
|
|||
- run: |
|
||||
echo "BROWSER_PATH=$(which chrome)" >> $GITHUB_ENV
|
||||
|
||||
- name: Save Git values
|
||||
# pass env variables from this step to other steps
|
||||
# using GitHub Actions environment file
|
||||
# https://docs.github.com/en/actions/learn-github-actions/workflow-commands-for-github-actions#environment-files
|
||||
run: |
|
||||
PR_NUMBER=${{ inputs.pr }}
|
||||
echo COMMIT_INFO_BRANCH=$(git rev-parse --abbrev-ref HEAD) >> $GITHUB_ENV
|
||||
echo COMMIT_INFO_MESSAGE=OkToTest run on PR# ${{ inputs.pr }} >> $GITHUB_ENV
|
||||
echo COMMIT_INFO_EMAIL=$(git show -s --pretty=%ae) >> $GITHUB_ENV
|
||||
echo COMMIT_INFO_AUTHOR=$(git show -s --pretty=%an) >> $GITHUB_ENV
|
||||
echo COMMIT_INFO_SHA=$(git show -s --pretty=%H) >> $GITHUB_ENV
|
||||
echo COMMIT_INFO_TIMESTAMP=$(git show -s --pretty=%ct) >> $GITHUB_ENV
|
||||
echo COMMIT_INFO_REMOTE=$(git config --get remote.origin.url) >> $GITHUB_ENV
|
||||
# delete the .git folder afterwords to use the environment values
|
||||
rm -rf .git
|
||||
|
||||
- name: Show Git values
|
||||
run: |
|
||||
echo Branch $COMMIT_INFO_BRANCH
|
||||
echo Message $COMMIT_INFO_MESSAGE
|
||||
echo Email $COMMIT_INFO_EMAIL
|
||||
echo Author $COMMIT_INFO_AUTHOR
|
||||
echo SHA $COMMIT_INFO_SHA
|
||||
echo Timestamp $COMMIT_INFO_TIMESTAMP
|
||||
echo Remote $COMMIT_INFO_REMOTE
|
||||
|
||||
- name: Set Commit Message
|
||||
env:
|
||||
EVENT_COMMITS: ${{ toJson(github.event.commits[0].message) }}
|
||||
run: |
|
||||
if [[ ${{ inputs.pr }} -ne 0 ]]; then
|
||||
echo "COMMIT_INFO_MESSAGE=${{ env.COMMIT_INFO_MESSAGE }}" >> $GITHUB_ENV
|
||||
else
|
||||
echo "COMMIT_INFO_MESSAGE=$(echo \"${{ env.EVENT_COMMITS }}\" | awk -F '\\\\n' '{print $1}' | sed 's/^\"//')" >> $GITHUB_ENV
|
||||
fi
|
||||
|
||||
- name: Run the cypress test
|
||||
if: steps.run_result.outputs.run_result != 'success' && steps.run_result.outputs.run_result != 'failedtest'
|
||||
id: cypress_test
|
||||
|
|
@ -292,6 +328,18 @@ jobs:
|
|||
CYPRESS_CONFIG_FILE: cypress_ci_custom.config.ts
|
||||
CYPRESS_HEADLESS: "true"
|
||||
CYPRESS_BROWSER: ${{ env.BROWSER_PATH }}
|
||||
RUNID: ${{ github.run_id }}
|
||||
ATTEMPT_NUMBER: ${{ github.run_attempt }}
|
||||
REPOSITORY: ${{ github.repository }}
|
||||
COMMITTER: ${{ env.COMMIT_INFO_AUTHOR }}
|
||||
TAG: ${{ github.event_name }}
|
||||
BRANCH: ${{ env.COMMIT_INFO_BRANCH }}
|
||||
CYPRESS_DB_USER: ${{ secrets.CYPRESS_DB_USER }}
|
||||
CYPRESS_DB_HOST: ${{ secrets.CYPRESS_DB_HOST }}
|
||||
CYPRESS_DB_NAME: ${{ secrets.CYPRESS_DB_NAME }}
|
||||
CYPRESS_DB_PWD: ${{ secrets.CYPRESS_DB_PWD }}
|
||||
CYPRESS_S3_ACCESS: ${{ secrets.CYPRESS_S3_ACCESS }}
|
||||
CYPRESS_S3_SECRET: ${{ secrets.CYPRESS_S3_SECRET }}
|
||||
with:
|
||||
install: false
|
||||
working-directory: app/client
|
||||
|
|
@ -347,6 +395,19 @@ jobs:
|
|||
CYPRESS_CONFIG_FILE: cypress_ci.config.ts
|
||||
CYPRESS_HEADLESS: "true"
|
||||
CYPRESS_BROWSER: ${{ env.BROWSER_PATH }}
|
||||
RUNID: ${{ github.run_id }}
|
||||
ATTEMPT_NUMBER: ${{ github.run_attempt }}
|
||||
REPOSITORY: ${{ github.repository }}
|
||||
COMMITTER: ${{ env.COMMIT_INFO_AUTHOR }}
|
||||
TAG: ${{ github.event_name }}
|
||||
BRANCH: ${{ env.COMMIT_INFO_BRANCH }}
|
||||
THIS_RUNNER: ${{ strategy.job-index }}
|
||||
CYPRESS_DB_USER: ${{ secrets.CYPRESS_DB_USER }}
|
||||
CYPRESS_DB_HOST: ${{ secrets.CYPRESS_DB_HOST }}
|
||||
CYPRESS_DB_NAME: ${{ secrets.CYPRESS_DB_NAME }}
|
||||
CYPRESS_DB_PWD: ${{ secrets.CYPRESS_DB_PWD }}
|
||||
CYPRESS_S3_ACCESS: ${{ secrets.CYPRESS_S3_ACCESS }}
|
||||
CYPRESS_S3_SECRET: ${{ secrets.CYPRESS_S3_SECRET }}
|
||||
with:
|
||||
install: false
|
||||
working-directory: app/client
|
||||
|
|
|
|||
26
.github/workflows/ci-test.yml
vendored
26
.github/workflows/ci-test.yml
vendored
|
|
@ -363,6 +363,19 @@ jobs:
|
|||
APPSMITH_GOOGLE_MAPS_API_KEY: ${{ secrets.APPSMITH_GOOGLE_MAPS_API_KEY }}
|
||||
COMMIT_INFO_MESSAGE: ${{ env.COMMIT_INFO_MESSAGE }}
|
||||
CYPRESS_VERIFY_TIMEOUT: 100000
|
||||
RUNID: ${{ github.run_id }}
|
||||
ATTEMPT_NUMBER: ${{ github.run_attempt }}
|
||||
REPOSITORY: ${{ github.repository }}
|
||||
COMMITTER: ${{ env.COMMIT_INFO_AUTHOR }}
|
||||
TAG: ${{ github.event_name }}
|
||||
BRANCH: ${{ env.COMMIT_INFO_BRANCH }}
|
||||
THIS_RUNNER: ${{ strategy.job-index }}
|
||||
CYPRESS_DB_USER: ${{ secrets.CYPRESS_DB_USER }}
|
||||
CYPRESS_DB_HOST: ${{ secrets.CYPRESS_DB_HOST }}
|
||||
CYPRESS_DB_NAME: ${{ secrets.CYPRESS_DB_NAME }}
|
||||
CYPRESS_DB_PWD: ${{ secrets.CYPRESS_DB_PWD }}
|
||||
CYPRESS_S3_ACCESS: ${{ secrets.CYPRESS_S3_ACCESS }}
|
||||
CYPRESS_S3_SECRET: ${{ secrets.CYPRESS_S3_SECRET }}
|
||||
with:
|
||||
browser: ${{ env.BROWSER_PATH }}
|
||||
record: true
|
||||
|
|
@ -442,6 +455,19 @@ jobs:
|
|||
APPSMITH_DISABLE_TELEMETRY: true
|
||||
APPSMITH_GOOGLE_MAPS_API_KEY: ${{ secrets.APPSMITH_GOOGLE_MAPS_API_KEY }}
|
||||
COMMIT_INFO_MESSAGE: ${{ env.COMMIT_INFO_MESSAGE }}
|
||||
RUNID: ${{ github.run_id }}
|
||||
ATTEMPT_NUMBER: ${{ github.run_attempt }}
|
||||
REPOSITORY: ${{ github.repository }}
|
||||
COMMITTER: ${{ env.COMMIT_INFO_AUTHOR }}
|
||||
TAG: ${{ github.event_name }}
|
||||
BRANCH: ${{ env.COMMIT_INFO_BRANCH }}
|
||||
THIS_RUNNER: ${{ strategy.job-index }}
|
||||
CYPRESS_DB_USER: ${{ secrets.CYPRESS_DB_USER }}
|
||||
CYPRESS_DB_HOST: ${{ secrets.CYPRESS_DB_HOST }}
|
||||
CYPRESS_DB_NAME: ${{ secrets.CYPRESS_DB_NAME }}
|
||||
CYPRESS_DB_PWD: ${{ secrets.CYPRESS_DB_PWD }}
|
||||
CYPRESS_S3_ACCESS: ${{ secrets.CYPRESS_S3_ACCESS }}
|
||||
CYPRESS_S3_SECRET: ${{ secrets.CYPRESS_S3_SECRET }}
|
||||
with:
|
||||
browser: ${{ env.BROWSER_PATH }}
|
||||
record: true
|
||||
|
|
|
|||
1
.github/workflows/upgrade-appsmith-tests.yml
vendored
1
.github/workflows/upgrade-appsmith-tests.yml
vendored
|
|
@ -122,3 +122,4 @@ jobs:
|
|||
- name: Check ci-test set status
|
||||
if: needs.ci-test.result != 'success'
|
||||
run: exit 1
|
||||
|
||||
|
|
@ -11,6 +11,7 @@ const {
|
|||
addMatchImageSnapshotPlugin,
|
||||
} = require("cypress-image-snapshot/plugin");
|
||||
const { tagify } = require("cypress-tags");
|
||||
const { cypressHooks } = require("../scripts/cypress-hooks");
|
||||
// ***********************************************************
|
||||
// This example plugins/index.js can be used to load plugins
|
||||
//
|
||||
|
|
@ -44,6 +45,9 @@ module.exports = (on, config) => {
|
|||
|
||||
on("file:preprocessor", tagify(config));
|
||||
addMatchImageSnapshotPlugin(on, config);
|
||||
if (process.env["RUNID"]) {
|
||||
cypressHooks(on, config);
|
||||
}
|
||||
|
||||
on("before:browser:launch", (browser = {}, launchOptions) => {
|
||||
/*
|
||||
|
|
|
|||
224
app/client/cypress/scripts/cypress-hooks.js
Normal file
224
app/client/cypress/scripts/cypress-hooks.js
Normal file
|
|
@ -0,0 +1,224 @@
|
|||
const { Client } = require("pg");
|
||||
const os = require("os");
|
||||
const AWS = require("aws-sdk");
|
||||
const fs = require("fs");
|
||||
|
||||
exports.cypressHooks = cypressHooks;
|
||||
|
||||
// This function will helps to check and get env variables
|
||||
function getEnvValue(varName, { required = true }) {
|
||||
if (required && process.env[varName] === undefined) {
|
||||
throw Error(
|
||||
`Please check some or all the following ENV variables are not set properly [ RUNID, ATTEMPT_NUMBER, REPOSITORY, COMMITTER, TAG, BRANCH, THIS_RUNNER, CYPRESS_DB_USER, CYPRESS_DB_HOST, CYPRESS_DB_NAME, CYPRESS_DB_PWD, CYPRESS_S3_ACCESS, CYPRESS_S3_SECRET ].`,
|
||||
);
|
||||
}
|
||||
const value =
|
||||
process.env[varName] === undefined ? "Cypress test" : process.env[varName];
|
||||
return value;
|
||||
}
|
||||
|
||||
//This is to setup the db client
|
||||
function configureDbClient() {
|
||||
const dbConfig = {
|
||||
user: getEnvValue("CYPRESS_DB_USER", { required: true }),
|
||||
host: getEnvValue("CYPRESS_DB_HOST", { required: true }),
|
||||
database: getEnvValue("CYPRESS_DB_NAME", { required: true }),
|
||||
password: getEnvValue("CYPRESS_DB_PWD", { required: true }),
|
||||
port: 5432,
|
||||
ssl: true,
|
||||
keepalives: 0,
|
||||
};
|
||||
|
||||
const dbClient = new Client(dbConfig);
|
||||
dbClient.connect();
|
||||
|
||||
return dbClient;
|
||||
}
|
||||
|
||||
// This is to setup the AWS client
|
||||
AWS.config.update({ region: "ap-south-1" });
|
||||
const s3 = new AWS.S3({
|
||||
credentials: {
|
||||
accessKeyId: getEnvValue("CYPRESS_S3_ACCESS", { required: true }),
|
||||
secretAccessKey: getEnvValue("CYPRESS_S3_SECRET", { required: true }),
|
||||
},
|
||||
});
|
||||
|
||||
// This is to upload files to s3 when required
|
||||
function uploadToS3(filePath, key) {
|
||||
const fileContent = fs.readFileSync(filePath);
|
||||
|
||||
const params = {
|
||||
Bucket: "appsmith-internal-cy-db",
|
||||
Key: key,
|
||||
Body: fileContent,
|
||||
};
|
||||
return s3.upload(params).promise();
|
||||
}
|
||||
|
||||
async function cypressHooks(on, config) {
|
||||
const dbClient = configureDbClient();
|
||||
const runData = {
|
||||
commitMsg: getEnvValue("COMMIT_INFO_MESSAGE", { required: false }),
|
||||
workflowId: getEnvValue("RUNID", { required: true }),
|
||||
attempt: getEnvValue("ATTEMPT_NUMBER", { required: true }),
|
||||
os: os.type(),
|
||||
repo: getEnvValue("REPOSITORY", { required: true }),
|
||||
committer: getEnvValue("COMMITTER", { required: true }),
|
||||
type: getEnvValue("TAG", { required: true }),
|
||||
branch: getEnvValue("BRANCH", { required: true }),
|
||||
};
|
||||
const matrix = {
|
||||
matrixId: getEnvValue("THIS_RUNNER", { required: true }),
|
||||
matrixStatus: "started",
|
||||
};
|
||||
|
||||
const specData = {};
|
||||
|
||||
await on("before:run", async (runDetails) => {
|
||||
runData.browser = runDetails.browser.name;
|
||||
try {
|
||||
const runResponse = await dbClient.query(
|
||||
`INSERT INTO public.attempt ("workflowId", "attempt", "browser", "os", "repo", "committer", "type", "commitMsg", "branch")
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)
|
||||
ON CONFLICT ("workflowId", attempt) DO NOTHING
|
||||
RETURNING id;`,
|
||||
[
|
||||
runData.workflowId,
|
||||
runData.attempt,
|
||||
runData.browser,
|
||||
runData.os,
|
||||
runData.repo,
|
||||
runData.committer,
|
||||
runData.type,
|
||||
runData.commitMsg,
|
||||
runData.branch,
|
||||
],
|
||||
);
|
||||
|
||||
if (runResponse.rows.length > 0) {
|
||||
runData.attemptId = runResponse.rows[0].id; // Save the inserted attempt ID for later updates
|
||||
} else {
|
||||
const res = await dbClient.query(
|
||||
`SELECT id FROM public.attempt WHERE "workflowId" = $1 AND attempt = $2`,
|
||||
[runData.workflowId, runData.attempt],
|
||||
);
|
||||
runData.attemptId = res.rows[0].id;
|
||||
}
|
||||
|
||||
const matrixResponse = await dbClient.query(
|
||||
`INSERT INTO public.matrix ("workflowId", "matrixId", "status", "attemptId")
|
||||
VALUES ($1, $2, $3, $4)
|
||||
ON CONFLICT ("matrixId", "attemptId") DO NOTHING
|
||||
RETURNING id;`,
|
||||
[
|
||||
runData.workflowId,
|
||||
matrix.matrixId,
|
||||
matrix.matrixStatus,
|
||||
runData.attemptId,
|
||||
],
|
||||
);
|
||||
matrix.id = matrixResponse.rows[0].id; // Save the inserted matrix ID for later updates
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
});
|
||||
|
||||
await on("before:spec", async (spec) => {
|
||||
specData.name = spec.relative;
|
||||
specData.matrixId = matrix.id;
|
||||
try {
|
||||
const specResponse = await dbClient.query(
|
||||
'INSERT INTO public.specs ("name", "matrixId") VALUES ($1, $2) RETURNING id',
|
||||
[specData.name, matrix.id],
|
||||
);
|
||||
specData.specId = specResponse.rows[0].id; // Save the inserted spec ID for later updates
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
});
|
||||
|
||||
await on("after:spec", async (spec, results) => {
|
||||
specData.testCount = results.stats.tests;
|
||||
specData.passes = results.stats.passes;
|
||||
specData.failed = results.stats.failures;
|
||||
specData.pending = results.stats.pending;
|
||||
specData.skipped = results.stats.skipped;
|
||||
specData.status = results.stats.failures > 0 ? "fail" : "pass";
|
||||
|
||||
try {
|
||||
await dbClient.query(
|
||||
'UPDATE public.specs SET "testCount" = $1, "passes" = $2, "failed" = $3, "skipped" = $4, "pending" = $5, "status" = $6 WHERE id = $7',
|
||||
[
|
||||
results.stats.tests,
|
||||
results.stats.passes,
|
||||
results.stats.failures,
|
||||
results.stats.skipped,
|
||||
results.stats.pending,
|
||||
specData.status,
|
||||
specData.specId,
|
||||
],
|
||||
);
|
||||
for (const test of results.tests) {
|
||||
const testResponse = await dbClient.query(
|
||||
`INSERT INTO public.tests ("name", "specId", "status", "retries", "retryData") VALUES ($1, $2, $3, $4, $5) RETURNING id`,
|
||||
[
|
||||
test.title[1],
|
||||
specData.specId,
|
||||
test.state,
|
||||
test.attempts.length,
|
||||
JSON.stringify(test.attempts),
|
||||
],
|
||||
);
|
||||
if (
|
||||
test.attempts.some((attempt) => attempt.state === "failed") &&
|
||||
results.screenshots
|
||||
) {
|
||||
const out = results.screenshots.filter(
|
||||
(scr) => scr.testId === test.testId,
|
||||
);
|
||||
console.log("Uploading screenshots...");
|
||||
for (const scr of out) {
|
||||
const key = `${testResponse.rows[0].id}_${specData.specId}_${
|
||||
scr.testAttemptIndex + 1
|
||||
}`;
|
||||
Promise.all([uploadToS3(scr.path, key)]).catch((error) => {
|
||||
console.log("Error in uploading screenshots:", error);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
results.tests.some((test) =>
|
||||
test.attempts.some((attempt) => attempt.state === "failed"),
|
||||
) &&
|
||||
results.video
|
||||
) {
|
||||
console.log("Uploading video...");
|
||||
const key = `${specData.specId}`;
|
||||
Promise.all([uploadToS3(results.video, key)]).catch((error) => {
|
||||
console.log("Error in uploading video:", error);
|
||||
});
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
});
|
||||
|
||||
on("after:run", async (runDetails) => {
|
||||
try {
|
||||
await dbClient.query(
|
||||
`UPDATE public.matrix SET "status" = $1 WHERE id = $2`,
|
||||
["done", matrix.id],
|
||||
);
|
||||
await dbClient.query(
|
||||
`UPDATE public.attempt SET "endTime" = $1 WHERE "id" = $2`,
|
||||
[new Date(), runData.attemptId],
|
||||
);
|
||||
await dbClient.end();
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -83,6 +83,7 @@
|
|||
"algoliasearch": "^4.2.0",
|
||||
"assert-never": "^1.2.1",
|
||||
"astring": "^1.7.5",
|
||||
"aws-sdk": "^2.1443.0",
|
||||
"axios": "^0.27.2",
|
||||
"classnames": "^2.3.1",
|
||||
"clsx": "^1.2.1",
|
||||
|
|
@ -138,6 +139,7 @@
|
|||
"normalizr": "^3.3.0",
|
||||
"object-hash": "^3.0.0",
|
||||
"path-to-regexp": "^6.2.0",
|
||||
"pg": "^8.11.3",
|
||||
"popper.js": "^1.15.0",
|
||||
"prismjs": "^1.27.0",
|
||||
"proxy-memoize": "^1.2.0",
|
||||
|
|
|
|||
|
|
@ -9946,6 +9946,7 @@ __metadata:
|
|||
algoliasearch: ^4.2.0
|
||||
assert-never: ^1.2.1
|
||||
astring: ^1.7.5
|
||||
aws-sdk: ^2.1443.0
|
||||
axios: ^0.27.2
|
||||
babel-plugin-lodash: ^3.3.4
|
||||
babel-plugin-module-resolver: ^4.1.0
|
||||
|
|
@ -10041,6 +10042,7 @@ __metadata:
|
|||
normalizr: ^3.3.0
|
||||
object-hash: ^3.0.0
|
||||
path-to-regexp: ^6.2.0
|
||||
pg: ^8.11.3
|
||||
plop: ^3.1.1
|
||||
popper.js: ^1.15.0
|
||||
postinstall-postinstall: ^2.1.0
|
||||
|
|
@ -10526,6 +10528,24 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"aws-sdk@npm:^2.1443.0":
|
||||
version: 2.1443.0
|
||||
resolution: "aws-sdk@npm:2.1443.0"
|
||||
dependencies:
|
||||
buffer: 4.9.2
|
||||
events: 1.1.1
|
||||
ieee754: 1.1.13
|
||||
jmespath: 0.16.0
|
||||
querystring: 0.2.0
|
||||
sax: 1.2.1
|
||||
url: 0.10.3
|
||||
util: ^0.12.4
|
||||
uuid: 8.0.0
|
||||
xml2js: 0.5.0
|
||||
checksum: 494124cded48679ec449bfa1cee54db969141639414b71fd984d519f5cc4904b614a023339ad17f58f89d5ca45e038d9bc89b22bdd4e5b02b138eb0d800162f7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"aws-sign2@npm:~0.7.0":
|
||||
version: 0.7.0
|
||||
resolution: "aws-sign2@npm:0.7.0"
|
||||
|
|
@ -11501,6 +11521,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"buffer-writer@npm:2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "buffer-writer@npm:2.0.0"
|
||||
checksum: 11736b48bb75106c52ca8ec9f025e7c1b3b25ce31875f469d7210eabd5c576c329e34f6b805d4a8d605ff3f0db1e16342328802c4c963e9c826b0e43a4e631c2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"buffer-xor@npm:^1.0.3":
|
||||
version: 1.0.3
|
||||
resolution: "buffer-xor@npm:1.0.3"
|
||||
|
|
@ -11508,6 +11535,17 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"buffer@npm:4.9.2":
|
||||
version: 4.9.2
|
||||
resolution: "buffer@npm:4.9.2"
|
||||
dependencies:
|
||||
base64-js: ^1.0.2
|
||||
ieee754: ^1.1.4
|
||||
isarray: ^1.0.0
|
||||
checksum: 8801bc1ba08539f3be70eee307a8b9db3d40f6afbfd3cf623ab7ef41dffff1d0a31de0addbe1e66e0ca5f7193eeb667bfb1ecad3647f8f1b0750de07c13295c3
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"buffer@npm:^5.5.0, buffer@npm:^5.6.0":
|
||||
version: 5.7.1
|
||||
resolution: "buffer@npm:5.7.1"
|
||||
|
|
@ -15415,7 +15453,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"events@npm:^1.1.1":
|
||||
"events@npm:1.1.1, events@npm:^1.1.1":
|
||||
version: 1.1.1
|
||||
resolution: "events@npm:1.1.1"
|
||||
checksum: 40431eb005cc4c57861b93d44c2981a49e7feb99df84cf551baed299ceea4444edf7744733f6a6667e942af687359b1f4a87ec1ec4f21d5127dac48a782039b9
|
||||
|
|
@ -17622,6 +17660,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ieee754@npm:1.1.13":
|
||||
version: 1.1.13
|
||||
resolution: "ieee754@npm:1.1.13"
|
||||
checksum: 102df1ba662e316e6160f7ce29c7c7fa3e04f2014c288336c5a9ff40bbcc2a27d209fa2a81ebfb33f28b1941021343d30e9ad8ee85a2d61f79f5936c35edc33d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ieee754@npm:^1.1.13, ieee754@npm:^1.1.4, ieee754@npm:^1.2.1":
|
||||
version: 1.2.1
|
||||
resolution: "ieee754@npm:1.2.1"
|
||||
|
|
@ -18509,6 +18554,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"isarray@npm:^1.0.0, isarray@npm:~1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "isarray@npm:1.0.0"
|
||||
checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"isarray@npm:^2.0.5":
|
||||
version: 2.0.5
|
||||
resolution: "isarray@npm:2.0.5"
|
||||
|
|
@ -18516,13 +18568,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"isarray@npm:~1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "isarray@npm:1.0.0"
|
||||
checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"isbinaryfile@npm:^4.0.8":
|
||||
version: 4.0.10
|
||||
resolution: "isbinaryfile@npm:4.0.10"
|
||||
|
|
@ -19732,6 +19777,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"jmespath@npm:0.16.0":
|
||||
version: 0.16.0
|
||||
resolution: "jmespath@npm:0.16.0"
|
||||
checksum: 2d602493a1e4addfd1350ac8c9d54b1b03ed09e305fd863bab84a4ee1f52868cf939dd1a08c5cdea29ce9ba8f86875ebb458b6ed45dab3e1c3f2694503fb2fd9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"joi@npm:^17.3.0":
|
||||
version: 17.9.2
|
||||
resolution: "joi@npm:17.9.2"
|
||||
|
|
@ -22270,6 +22322,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"packet-reader@npm:1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "packet-reader@npm:1.0.0"
|
||||
checksum: 0b7516f0cbf3e322aad591bed29ba544220088c53943145c0d9121a6f59182ad811f7fd6785a8979a34356aca69d97653689029964c5998dc02645633d88ffd7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"paging-algorithm@npm:^1.0.1":
|
||||
version: 1.0.1
|
||||
resolution: "paging-algorithm@npm:1.0.1"
|
||||
|
|
@ -22581,6 +22640,89 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pg-cloudflare@npm:^1.1.1":
|
||||
version: 1.1.1
|
||||
resolution: "pg-cloudflare@npm:1.1.1"
|
||||
checksum: 32aac06b5dc4588bbf78801b6267781bc7e13be672009df949d08e9627ba9fdc26924916665d4de99d47f9b0495301930547488dad889d826856976c7b3f3731
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pg-connection-string@npm:^2.6.2":
|
||||
version: 2.6.2
|
||||
resolution: "pg-connection-string@npm:2.6.2"
|
||||
checksum: 22265882c3b6f2320785378d0760b051294a684989163d5a1cde4009e64e84448d7bf67d9a7b9e7f69440c3ee9e2212f9aa10dd17ad6773f6143c6020cebbcb5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pg-int8@npm:1.0.1":
|
||||
version: 1.0.1
|
||||
resolution: "pg-int8@npm:1.0.1"
|
||||
checksum: a1e3a05a69005ddb73e5f324b6b4e689868a447c5fa280b44cd4d04e6916a344ac289e0b8d2695d66e8e89a7fba023affb9e0e94778770ada5df43f003d664c9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pg-pool@npm:^3.6.1":
|
||||
version: 3.6.1
|
||||
resolution: "pg-pool@npm:3.6.1"
|
||||
peerDependencies:
|
||||
pg: ">=8.0"
|
||||
checksum: 8a6513e6f74a794708c9dd16d2ccda0debadc56435ec2582de2b2e35b01315550c5dab8a0a9a2a16f4adce45523228f5739940fb7687ec7e9c300f284eb08fd1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pg-protocol@npm:^1.6.0":
|
||||
version: 1.6.0
|
||||
resolution: "pg-protocol@npm:1.6.0"
|
||||
checksum: e12662d2de2011e0c3a03f6a09f435beb1025acdc860f181f18a600a5495dc38a69d753bbde1ace279c8c442536af9c1a7c11e1d0fe3fad3aa1348b28d9d2683
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pg-types@npm:^2.1.0":
|
||||
version: 2.2.0
|
||||
resolution: "pg-types@npm:2.2.0"
|
||||
dependencies:
|
||||
pg-int8: 1.0.1
|
||||
postgres-array: ~2.0.0
|
||||
postgres-bytea: ~1.0.0
|
||||
postgres-date: ~1.0.4
|
||||
postgres-interval: ^1.1.0
|
||||
checksum: bf4ec3f594743442857fb3a8dfe5d2478a04c98f96a0a47365014557cbc0b4b0cee01462c79adca863b93befbf88f876299b75b72c665b5fb84a2c94fbd10316
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pg@npm:^8.11.3":
|
||||
version: 8.11.3
|
||||
resolution: "pg@npm:8.11.3"
|
||||
dependencies:
|
||||
buffer-writer: 2.0.0
|
||||
packet-reader: 1.0.0
|
||||
pg-cloudflare: ^1.1.1
|
||||
pg-connection-string: ^2.6.2
|
||||
pg-pool: ^3.6.1
|
||||
pg-protocol: ^1.6.0
|
||||
pg-types: ^2.1.0
|
||||
pgpass: 1.x
|
||||
peerDependencies:
|
||||
pg-native: ">=3.0.1"
|
||||
dependenciesMeta:
|
||||
pg-cloudflare:
|
||||
optional: true
|
||||
peerDependenciesMeta:
|
||||
pg-native:
|
||||
optional: true
|
||||
checksum: 8af9468b8969fa0d73a6b349216c8cbc953d938fcae5594f2d24043060e9226a072c8085fc4230172b5576fcab4c39c8563c655f271dc2a9209b6ad5370cafe5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"pgpass@npm:1.x":
|
||||
version: 1.0.5
|
||||
resolution: "pgpass@npm:1.0.5"
|
||||
dependencies:
|
||||
split2: ^4.1.0
|
||||
checksum: 947ac096c031eebdf08d989de2e9f6f156b8133d6858c7c2c06c041e1e71dda6f5f3bad3c0ec1e96a09497bbc6ef89e762eefe703b5ef9cb2804392ec52ec400
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"picocolors@npm:^0.2.1":
|
||||
version: 0.2.1
|
||||
resolution: "picocolors@npm:0.2.1"
|
||||
|
|
@ -23632,6 +23774,36 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"postgres-array@npm:~2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "postgres-array@npm:2.0.0"
|
||||
checksum: 0e1e659888147c5de579d229a2d95c0d83ebdbffc2b9396d890a123557708c3b758a0a97ed305ce7f58edfa961fa9f0bbcd1ea9f08b6e5df73322e683883c464
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"postgres-bytea@npm:~1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "postgres-bytea@npm:1.0.0"
|
||||
checksum: d844ae4ca7a941b70e45cac1261a73ee8ed39d72d3d74ab1d645248185a1b7f0ac91a3c63d6159441020f4e1f7fe64689ac56536a307b31cef361e5187335090
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"postgres-date@npm:~1.0.4":
|
||||
version: 1.0.7
|
||||
resolution: "postgres-date@npm:1.0.7"
|
||||
checksum: 5745001d47e51cd767e46bcb1710649cd705d91a24d42fa661c454b6dcbb7353c066a5047983c90a626cd3bbfea9e626cc6fa84a35ec57e5bbb28b49f78e13ed
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"postgres-interval@npm:^1.1.0":
|
||||
version: 1.2.0
|
||||
resolution: "postgres-interval@npm:1.2.0"
|
||||
dependencies:
|
||||
xtend: ^4.0.0
|
||||
checksum: 746b71f93805ae33b03528e429dc624706d1f9b20ee81bf743263efb6a0cd79ae02a642a8a480dbc0f09547b4315ab7df6ce5ec0be77ed700bac42730f5c76b2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"postinstall-postinstall@npm:^2.1.0":
|
||||
version: 2.1.0
|
||||
resolution: "postinstall-postinstall@npm:2.1.0"
|
||||
|
|
@ -23968,6 +24140,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"punycode@npm:1.3.2":
|
||||
version: 1.3.2
|
||||
resolution: "punycode@npm:1.3.2"
|
||||
checksum: b8807fd594b1db33335692d1f03e8beeddde6fda7fbb4a2e32925d88d20a3aa4cd8dcc0c109ccaccbd2ba761c208dfaaada83007087ea8bfb0129c9ef1b99ed6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"punycode@npm:^1.3.2, punycode@npm:^1.4.1":
|
||||
version: 1.4.1
|
||||
resolution: "punycode@npm:1.4.1"
|
||||
|
|
@ -24087,6 +24266,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"querystring@npm:0.2.0":
|
||||
version: 0.2.0
|
||||
resolution: "querystring@npm:0.2.0"
|
||||
checksum: 8258d6734f19be27e93f601758858c299bdebe71147909e367101ba459b95446fbe5b975bf9beb76390156a592b6f4ac3a68b6087cea165c259705b8b4e56a69
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"querystringify@npm:^2.1.1":
|
||||
version: 2.2.0
|
||||
resolution: "querystringify@npm:2.2.0"
|
||||
|
|
@ -26407,6 +26593,20 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"sax@npm:1.2.1":
|
||||
version: 1.2.1
|
||||
resolution: "sax@npm:1.2.1"
|
||||
checksum: 8dca7d5e1cd7d612f98ac50bdf0b9f63fbc964b85f0c4e2eb271f8b9b47fd3bf344c4d6a592e69ecf726d1485ca62cd8a52e603bbc332d18a66af25a9a1045ad
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"sax@npm:>=0.6.0, sax@npm:~1.2.4":
|
||||
version: 1.2.4
|
||||
resolution: "sax@npm:1.2.4"
|
||||
checksum: d3df7d32b897a2c2f28e941f732c71ba90e27c24f62ee918bd4d9a8cfb3553f2f81e5493c7f0be94a11c1911b643a9108f231dd6f60df3fa9586b5d2e3e9e1fe
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"sax@npm:~1.1.1":
|
||||
version: 1.1.6
|
||||
resolution: "sax@npm:1.1.6"
|
||||
|
|
@ -26414,13 +26614,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"sax@npm:~1.2.4":
|
||||
version: 1.2.4
|
||||
resolution: "sax@npm:1.2.4"
|
||||
checksum: d3df7d32b897a2c2f28e941f732c71ba90e27c24f62ee918bd4d9a8cfb3553f2f81e5493c7f0be94a11c1911b643a9108f231dd6f60df3fa9586b5d2e3e9e1fe
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"saxes@npm:^5.0.1":
|
||||
version: 5.0.1
|
||||
resolution: "saxes@npm:5.0.1"
|
||||
|
|
@ -27212,6 +27405,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"split2@npm:^4.1.0":
|
||||
version: 4.2.0
|
||||
resolution: "split2@npm:4.2.0"
|
||||
checksum: 05d54102546549fe4d2455900699056580cca006c0275c334611420f854da30ac999230857a85fdd9914dc2109ae50f80fda43d2a445f2aa86eccdc1dfce779d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"sprintf-js@npm:~1.0.2":
|
||||
version: 1.0.3
|
||||
resolution: "sprintf-js@npm:1.0.3"
|
||||
|
|
@ -29220,6 +29420,16 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"url@npm:0.10.3":
|
||||
version: 0.10.3
|
||||
resolution: "url@npm:0.10.3"
|
||||
dependencies:
|
||||
punycode: 1.3.2
|
||||
querystring: 0.2.0
|
||||
checksum: 7b83ddb106c27bf9bde8629ccbe8d26e9db789c8cda5aa7db72ca2c6f9b8a88a5adf206f3e10db78e6e2d042b327c45db34c7010c1bf0d9908936a17a2b57d05
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"url@npm:~0.11.0":
|
||||
version: 0.11.1
|
||||
resolution: "url@npm:0.11.1"
|
||||
|
|
@ -29381,6 +29591,15 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"uuid@npm:8.0.0":
|
||||
version: 8.0.0
|
||||
resolution: "uuid@npm:8.0.0"
|
||||
bin:
|
||||
uuid: dist/bin/uuid
|
||||
checksum: 56d4e23aa7ac26fa2db6bd1778db34cb8c9f5a10df1770a27167874bf6705fc8f14a4ac414af58a0d96c7653b2bd4848510b29d1c2ef8c91ccb17429c1872b5e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"uuid@npm:^3.2.1":
|
||||
version: 3.4.0
|
||||
resolution: "uuid@npm:3.4.0"
|
||||
|
|
@ -30483,6 +30702,16 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"xml2js@npm:0.5.0":
|
||||
version: 0.5.0
|
||||
resolution: "xml2js@npm:0.5.0"
|
||||
dependencies:
|
||||
sax: ">=0.6.0"
|
||||
xmlbuilder: ~11.0.0
|
||||
checksum: 1aa71d62e5bc2d89138e3929b9ea46459157727759cbc62ef99484b778641c0cd21fb637696c052d901a22f82d092a3e740a16b4ce218e81ac59b933535124ea
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"xmlbuilder@npm:^10.0.0":
|
||||
version: 10.1.1
|
||||
resolution: "xmlbuilder@npm:10.1.1"
|
||||
|
|
@ -30497,6 +30726,13 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"xmlbuilder@npm:~11.0.0":
|
||||
version: 11.0.1
|
||||
resolution: "xmlbuilder@npm:11.0.1"
|
||||
checksum: 7152695e16f1a9976658215abab27e55d08b1b97bca901d58b048d2b6e106b5af31efccbdecf9b07af37c8377d8e7e821b494af10b3a68b0ff4ae60331b415b0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"xmlchars@npm:^2.2.0":
|
||||
version: 2.2.0
|
||||
resolution: "xmlchars@npm:2.2.0"
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user