Merge branch 'develop' of https://github.com/Budibase/budibase into cypressTests
This commit is contained in:
commit
212bfd0193
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": "1.0.191-alpha.0",
|
"version": "1.0.192-alpha.5",
|
||||||
"npmClient": "yarn",
|
"npmClient": "yarn",
|
||||||
"packages": [
|
"packages": [
|
||||||
"packages/*"
|
"packages/*"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/backend-core",
|
"name": "@budibase/backend-core",
|
||||||
"version": "1.0.191-alpha.0",
|
"version": "1.0.192-alpha.5",
|
||||||
"description": "Budibase backend core libraries used in server and worker",
|
"description": "Budibase backend core libraries used in server and worker",
|
||||||
"main": "src/index.js",
|
"main": "src/index.js",
|
||||||
"author": "Budibase",
|
"author": "Budibase",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/bbui",
|
"name": "@budibase/bbui",
|
||||||
"description": "A UI solution used in the different Budibase projects.",
|
"description": "A UI solution used in the different Budibase projects.",
|
||||||
"version": "1.0.191-alpha.0",
|
"version": "1.0.192-alpha.5",
|
||||||
"license": "MPL-2.0",
|
"license": "MPL-2.0",
|
||||||
"svelte": "src/index.js",
|
"svelte": "src/index.js",
|
||||||
"module": "dist/bbui.es.js",
|
"module": "dist/bbui.es.js",
|
||||||
|
@ -38,7 +38,7 @@
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@adobe/spectrum-css-workflow-icons": "^1.2.1",
|
"@adobe/spectrum-css-workflow-icons": "^1.2.1",
|
||||||
"@budibase/string-templates": "^1.0.191-alpha.0",
|
"@budibase/string-templates": "^1.0.192-alpha.5",
|
||||||
"@spectrum-css/actionbutton": "^1.0.1",
|
"@spectrum-css/actionbutton": "^1.0.1",
|
||||||
"@spectrum-css/actiongroup": "^1.0.1",
|
"@spectrum-css/actiongroup": "^1.0.1",
|
||||||
"@spectrum-css/avatar": "^3.0.2",
|
"@spectrum-css/avatar": "^3.0.2",
|
||||||
|
|
|
@ -132,20 +132,34 @@ filterTests(['all'], () => {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
it("Should allow the editing of the application icon", () => {
|
it("Should allow the editing of the application icon and colour", () => {
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder`)
|
cy.visit(`${Cypress.config().baseUrl}/builder`)
|
||||||
|
cy.get(".appTable", { timeout: 2000})
|
||||||
cy.get(".appTable .name").eq(0).click()
|
.within(() => {
|
||||||
|
cy.get(".app-row-actions-icon").eq(0).click()
|
||||||
cy.get(".app-logo .edit-hover").should("exist").invoke("show").click()
|
})
|
||||||
|
cy.get(".spectrum-Menu").contains("Edit icon").click()
|
||||||
cy.customiseAppIcon()
|
// Select random icon
|
||||||
|
cy.get(".grid").within(() => {
|
||||||
cy.get(".app-logo")
|
cy.get(".icon-item").eq(Math.floor(Math.random() * 23) + 1).click()
|
||||||
|
})
|
||||||
|
// Select random colour
|
||||||
|
cy.get(".fill").click()
|
||||||
|
cy.get(".colors").within(() => {
|
||||||
|
cy.get(".color").eq(Math.floor(Math.random() * 33) + 1).click()
|
||||||
|
})
|
||||||
|
cy.intercept('**/applications/**').as('iconChange')
|
||||||
|
cy.get(".spectrum-Button").contains("Save").click({ force: true })
|
||||||
|
cy.wait("@iconChange")
|
||||||
|
cy.get("@iconChange").its('response.statusCode')
|
||||||
|
.should('eq', 200)
|
||||||
|
// Confirm icon has changed from default
|
||||||
|
// Confirm colour has been applied
|
||||||
|
cy.get(".appTable", { timeout: 2000})
|
||||||
.within(() => {
|
.within(() => {
|
||||||
cy.get('[aria-label]').eq(0).children()
|
cy.get('[aria-label]').eq(0).children()
|
||||||
.should('have.attr', 'xlink:href').and('not.contain', '#spectrum-icon-18-Apps')
|
.should('have.attr', 'xlink:href').and('not.contain', '#spectrum-icon-18-Apps')
|
||||||
cy.get(".app-icon")
|
cy.get(".title").children().children()
|
||||||
.should('have.attr', 'style').and('contains', 'color')
|
.should('have.attr', 'style').and('contains', 'color')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -259,6 +273,7 @@ filterTests(['all'], () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder`)
|
cy.visit(`${Cypress.config().baseUrl}/builder`)
|
||||||
|
cy.wait(1000)
|
||||||
cy.get(".appTable .name").eq(0).click()
|
cy.get(".appTable .name").eq(0).click()
|
||||||
cy.get(".spectrum-Tabs-item").contains("Settings").click()
|
cy.get(".spectrum-Tabs-item").contains("Settings").click()
|
||||||
cy.get(".spectrum-Tabs-item.is-selected").contains("Settings")
|
cy.get(".spectrum-Tabs-item.is-selected").contains("Settings")
|
||||||
|
@ -269,7 +284,7 @@ filterTests(['all'], () => {
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it("Should allow copying of the published application Id", () => {
|
xit("Should allow copying of the published application Id", () => {
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder`)
|
cy.visit(`${Cypress.config().baseUrl}/builder`)
|
||||||
cy.get(".appTable .app-row-actions").eq(0)
|
cy.get(".appTable .app-row-actions").eq(0)
|
||||||
.within(() => {
|
.within(() => {
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import filterTests from "../support/filterTests"
|
import filterTests from "../support/filterTests"
|
||||||
|
import { APP_TABLE_APP_NAME, DEPLOY_SUCCESS_MODAL } from "../support/interact";
|
||||||
const interact = require('../support/interact')
|
const interact = require('../support/interact')
|
||||||
|
|
||||||
filterTests(['all'], () => {
|
filterTests(['all'], () => {
|
||||||
|
@ -20,7 +21,6 @@ filterTests(['all'], () => {
|
||||||
|
|
||||||
cy.get(interact.APP_TABLE_ROW_ACTION).eq(0)
|
cy.get(interact.APP_TABLE_ROW_ACTION).eq(0)
|
||||||
.within(() => {
|
.within(() => {
|
||||||
cy.get(interact.SPECTRUM_BUTTON_TEMPLATE).contains("Preview")
|
|
||||||
cy.get(interact.SPECTRUM_BUTTON_TEMPLATE).contains("Edit").click({ force: true })
|
cy.get(interact.SPECTRUM_BUTTON_TEMPLATE).contains("Edit").click({ force: true })
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ filterTests(['all'], () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
//Verify that the app url is presented correctly to the user
|
//Verify that the app url is presented correctly to the user
|
||||||
cy.get(interact.DEPLOY_APP_MODAL)
|
cy.get(interact.DEPLOY_SUCCESS_MODAL)
|
||||||
.should("be.visible")
|
.should("be.visible")
|
||||||
.within(() => {
|
.within(() => {
|
||||||
let appUrl = Cypress.config().baseUrl + '/app/cypress-tests'
|
let appUrl = Cypress.config().baseUrl + '/app/cypress-tests'
|
||||||
|
@ -72,7 +72,7 @@ filterTests(['all'], () => {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
it("Should unpublish an application from the top navigation and reflect the status change", () => {
|
it("Should unpublish an application using the link and reflect the status change", () => {
|
||||||
//Assuming the previous test app exists and is published
|
//Assuming the previous test app exists and is published
|
||||||
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder`)
|
cy.visit(`${Cypress.config().baseUrl}/builder`)
|
||||||
|
@ -85,17 +85,11 @@ filterTests(['all'], () => {
|
||||||
|
|
||||||
cy.get(interact.APP_TABLE_ROW_ACTION).eq(0)
|
cy.get(interact.APP_TABLE_ROW_ACTION).eq(0)
|
||||||
.within(() => {
|
.within(() => {
|
||||||
cy.get(interact.SPECTRUM_BUTTON).contains("View app")
|
cy.get(interact.SPECTRUM_BUTTON).contains("View")
|
||||||
cy.get(interact.SPECTRUM_BUTTON).contains("Edit").click({ force: true })
|
cy.get(interact.APP_TABLE_APP_NAME).click({ force: true })
|
||||||
})
|
})
|
||||||
|
|
||||||
//The published status
|
cy.get(interact.SPECTRUM_LINK).contains('Unpublish').click();
|
||||||
cy.get(interact.DEPLOYMENT_TOP_GLOBE).should("exist")
|
|
||||||
.click({ force: true })
|
|
||||||
|
|
||||||
cy.get(interact.PUBLISH_POPOVER_MENU).should("be.visible")
|
|
||||||
cy.get("[data-cy='publish-popover-menu'] [data-cy='publish-popover-action']")
|
|
||||||
.click({ force : true })
|
|
||||||
|
|
||||||
cy.get(interact.UNPUBLISH_MODAL).should("be.visible")
|
cy.get(interact.UNPUBLISH_MODAL).should("be.visible")
|
||||||
.within(() => {
|
.within(() => {
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
import filterTests from "../support/filterTests"
|
|
||||||
const interact = require('../support/interact')
|
|
||||||
|
|
||||||
filterTests(['all'], () => {
|
|
||||||
context("Change Application Icon and Colour", () => {
|
|
||||||
before(() => {
|
|
||||||
cy.login()
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should change the icon and colour for an application", () => {
|
|
||||||
// Search for test application
|
|
||||||
cy.applicationInAppTable("Cypress Tests")
|
|
||||||
cy.get(".appTable")
|
|
||||||
.within(() => {
|
|
||||||
cy.get(interact.APP_ROW_ACTION).eq(0).click()
|
|
||||||
})
|
|
||||||
cy.get(interact.SPECTRUM_MENU).contains("Edit icon").click()
|
|
||||||
// Select random icon
|
|
||||||
cy.get(interact.GRID).within(() => {
|
|
||||||
cy.get(interact.ICON_ITEM).eq(Math.floor(Math.random() * 23) + 1).click()
|
|
||||||
})
|
|
||||||
// Select random colour
|
|
||||||
cy.get(interact.FILL).click()
|
|
||||||
cy.get(interact.COLOURSS).within(() => {
|
|
||||||
cy.get(interact.COLOUR).eq(Math.floor(Math.random() * 33) + 1).click()
|
|
||||||
})
|
|
||||||
cy.intercept('**/applications/**').as('iconChange')
|
|
||||||
cy.get(interact.SPECTRUM_BUTTON).contains("Save").click({ force: true })
|
|
||||||
cy.wait("@iconChange")
|
|
||||||
cy.get("@iconChange").its('response.statusCode')
|
|
||||||
.should('eq', 200)
|
|
||||||
cy.wait(1000)
|
|
||||||
// Confirm icon has changed from default
|
|
||||||
// Confirm colour has been applied - There is no default colour
|
|
||||||
cy.get(".appTable")
|
|
||||||
.within(() => {
|
|
||||||
cy.get(interact.AREA_LABEL).eq(0).children()
|
|
||||||
.should('have.attr', 'xlink:href').and('not.contain', '#spectrum-icon-18-Apps')
|
|
||||||
cy.get(interact.TITLE).children().children()
|
|
||||||
.should('have.attr', 'style').and('contains', 'color')
|
|
||||||
})
|
|
||||||
cy.deleteAllApps()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -1,56 +0,0 @@
|
||||||
import filterTests from "../../../support/filterTests"
|
|
||||||
|
|
||||||
filterTests(["all"], () => {
|
|
||||||
context("Verify HR Template Details", () => {
|
|
||||||
|
|
||||||
before(() => {
|
|
||||||
cy.login()
|
|
||||||
|
|
||||||
// Template navigation
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder/portal/apps/templates`)
|
|
||||||
|
|
||||||
// Filter HR Templates
|
|
||||||
cy.get(".template-category-filters").within(() => {
|
|
||||||
cy.get('[data-cy="HR"]').click()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should verify the details option for HR templates", () => {
|
|
||||||
cy.get(".template-grid").find(".template-card").its('length')
|
|
||||||
.then(len => {
|
|
||||||
for (let i = 0; i < len; i++) {
|
|
||||||
cy.get(".template-card").eq(i).within(() => {
|
|
||||||
const templateName = cy.get(".template-thumbnail-text")
|
|
||||||
templateName.invoke('text')
|
|
||||||
.then(templateNameText => {
|
|
||||||
const templateNameParsed = templateNameText.toLowerCase().replace(/\s+/g, '-')
|
|
||||||
|
|
||||||
if (templateNameText == "Job Application Tracker") {
|
|
||||||
// Template name should include 'applicant-tracking-system'
|
|
||||||
cy.get('a')
|
|
||||||
.should('have.attr', 'href').and('contain', 'applicant-tracking-system')
|
|
||||||
}
|
|
||||||
else if (templateNameText == "Job Portal App") {
|
|
||||||
// Template name should include 'job-portal'
|
|
||||||
const templateNameSplit = templateNameParsed.split('-app')[0]
|
|
||||||
cy.get('a')
|
|
||||||
.should('have.attr', 'href').and('contain', templateNameSplit)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
cy.get('a')
|
|
||||||
.should('have.attr', 'href').and('contain', templateNameParsed)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
// Verify correct status from Details link - 200
|
|
||||||
cy.get('a')
|
|
||||||
.then(link => {
|
|
||||||
cy.request(link.prop('href'))
|
|
||||||
.its('status')
|
|
||||||
.should('eq', 200)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -1,222 +0,0 @@
|
||||||
import filterTests from "../../../support/filterTests"
|
|
||||||
|
|
||||||
filterTests(["all"], () => {
|
|
||||||
context("Job Application Tracker Template Functionality", () => {
|
|
||||||
const templateName = "Job Application Tracker"
|
|
||||||
const templateNameParsed = templateName.toLowerCase().replace(/\s+/g, '-')
|
|
||||||
|
|
||||||
before(() => {
|
|
||||||
cy.login()
|
|
||||||
cy.deleteApp(templateName)
|
|
||||||
// Template navigation
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder/portal/apps/templates`, {
|
|
||||||
onBeforeLoad(win) {
|
|
||||||
cy.stub(win, 'open')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
cy.wait(2000)
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should create and publish app with Job Application Tracker template", () => {
|
|
||||||
// Select Job Application Tracker template
|
|
||||||
cy.get(".template-thumbnail-text")
|
|
||||||
.contains(templateName).parentsUntil(".template-grid").within(() => {
|
|
||||||
cy.get(".spectrum-Button").contains("Use template").click({ force: true })
|
|
||||||
})
|
|
||||||
|
|
||||||
// Confirm URL matches template name
|
|
||||||
const appUrl = cy.get(".app-server")
|
|
||||||
appUrl.invoke('text').then(appUrlText => {
|
|
||||||
expect(appUrlText).to.equal(`${Cypress.config().baseUrl}/app/` + templateNameParsed)
|
|
||||||
})
|
|
||||||
|
|
||||||
// Create App
|
|
||||||
cy.get(".spectrum-Dialog-grid").within(() => {
|
|
||||||
cy.get(".spectrum-Button").contains("Create app").click({ force: true })
|
|
||||||
})
|
|
||||||
|
|
||||||
// Publish App & Verify it opened
|
|
||||||
cy.wait(2000) // Wait for app to generate
|
|
||||||
cy.publishApp(true)
|
|
||||||
cy.window().its('open').should('be.calledOnce')
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should add active/inactive vacancies", () => {
|
|
||||||
// Visit published app
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/app/` + templateNameParsed)
|
|
||||||
|
|
||||||
// loop for active/inactive vacancies
|
|
||||||
for (let i = 0; i < 2; i++) {
|
|
||||||
// Vacancies section
|
|
||||||
cy.get(".links").contains("Vacancies").click({ force: true })
|
|
||||||
cy.get(".spectrum-Button").contains("Create New").click()
|
|
||||||
|
|
||||||
// Add inactive vacancy
|
|
||||||
// Title
|
|
||||||
cy.get('[data-name="Title"]').within(() => {
|
|
||||||
cy.get(".spectrum-Textfield").type("Tester")
|
|
||||||
})
|
|
||||||
|
|
||||||
// Closing Date
|
|
||||||
cy.get('[data-name="Closing date"]').within(() => {
|
|
||||||
cy.get('[aria-label=Calendar]').click({ force: true })
|
|
||||||
})
|
|
||||||
cy.get("[aria-current=date]").click()
|
|
||||||
|
|
||||||
// Department
|
|
||||||
cy.get('[data-name="Department"]').within(() => {
|
|
||||||
cy.get(".spectrum-Picker-label").click()
|
|
||||||
})
|
|
||||||
cy.get(".spectrum-Menu").find('li').its('length').then(len => {
|
|
||||||
cy.get(".spectrum-Menu-item").eq(Math.floor(Math.random() * len)).click()
|
|
||||||
})
|
|
||||||
|
|
||||||
// Employment Type
|
|
||||||
cy.get('[data-name="Employment type"]').within(() => {
|
|
||||||
cy.get(".spectrum-Picker-label").click()
|
|
||||||
})
|
|
||||||
cy.get(".spectrum-Menu").find('li').its('length').then(len => {
|
|
||||||
cy.get(".spectrum-Menu-item").eq(Math.floor(Math.random() * len)).click()
|
|
||||||
})
|
|
||||||
|
|
||||||
// Salary
|
|
||||||
cy.get('[data-name="Salary ($)"]').within(() => {
|
|
||||||
cy.get(".spectrum-Textfield").type(40000)
|
|
||||||
})
|
|
||||||
|
|
||||||
// Description
|
|
||||||
cy.get('[data-name="Description"]').within(() => {
|
|
||||||
cy.get(".spectrum-Textfield").type("description")
|
|
||||||
})
|
|
||||||
|
|
||||||
// Responsibilities
|
|
||||||
cy.get('[data-name="Responsibilities"]').within(() => {
|
|
||||||
cy.get(".spectrum-Textfield").type("Responsibilities")
|
|
||||||
})
|
|
||||||
|
|
||||||
// Requirements
|
|
||||||
cy.get('[data-name="Requirements"]').within(() => {
|
|
||||||
cy.get(".spectrum-Textfield").type("Requirements")
|
|
||||||
})
|
|
||||||
|
|
||||||
// Hiring manager
|
|
||||||
cy.get('[data-name="Hiring manager"]').within(() => {
|
|
||||||
cy.get(".spectrum-Picker-label").click()
|
|
||||||
})
|
|
||||||
cy.get(".spectrum-Menu").find('li').its('length').then(len => {
|
|
||||||
cy.get(".spectrum-Menu-item").eq(Math.floor(Math.random() * len)).click()
|
|
||||||
})
|
|
||||||
|
|
||||||
// Active
|
|
||||||
if (i == 0) {
|
|
||||||
cy.get('[data-name="Active"]').within(() => {
|
|
||||||
cy.get(".spectrum-Checkbox-box").click({ force: true })
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Location
|
|
||||||
cy.get('[data-name="Location"]').within(() => {
|
|
||||||
cy.get(".spectrum-Picker-label").click()
|
|
||||||
})
|
|
||||||
cy.get(".spectrum-Menu").find('li').its('length').then(len => {
|
|
||||||
cy.get(".spectrum-Menu-item").eq(Math.floor(Math.random() * len)).click()
|
|
||||||
})
|
|
||||||
|
|
||||||
// Save vacancy
|
|
||||||
cy.get(".spectrum-Button").contains("Save").click({ force: true })
|
|
||||||
cy.wait(1000)
|
|
||||||
|
|
||||||
// Check table was updated
|
|
||||||
cy.get('[data-name="Vacancies Table"]').eq(i).should('contain', 'Tester')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
xit("should filter applications by stage", () => {
|
|
||||||
// Visit published app
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/app/` + templateNameParsed)
|
|
||||||
cy.wait(1000)
|
|
||||||
|
|
||||||
// Applications section
|
|
||||||
cy.get(".links").contains("Applications").click({ force: true })
|
|
||||||
cy.wait(1000)
|
|
||||||
|
|
||||||
// Filter by stage - Confirm table updates
|
|
||||||
cy.get(".spectrum-Picker").contains("Filter by stage").click({ force: true })
|
|
||||||
cy.get(".spectrum-Menu").find('li').its('length').then(len => {
|
|
||||||
for (let i = 1; i < len; i++) {
|
|
||||||
cy.get(".spectrum-Menu-item").eq(i).click()
|
|
||||||
const stage = cy.get(".spectrum-Picker-label")
|
|
||||||
stage.invoke('text').then(stageText => {
|
|
||||||
if (stageText == "1st interview") {
|
|
||||||
cy.get(".placeholder").should('contain', 'No rows found')
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
cy.get(".spectrum-Table-row").should('contain', stageText)
|
|
||||||
}
|
|
||||||
cy.get(".spectrum-Picker").contains(stageText).click({ force: true })
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
xit("should edit an application", () => {
|
|
||||||
// Switch application from not hired to hired
|
|
||||||
// Visit published app
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/app/` + templateNameParsed)
|
|
||||||
cy.wait(1000)
|
|
||||||
|
|
||||||
// Not Hired section
|
|
||||||
cy.get(".links").contains("Not hired").click({ force: true })
|
|
||||||
cy.wait(500)
|
|
||||||
|
|
||||||
// View application
|
|
||||||
cy.get(".spectrum-Table").within(() => {
|
|
||||||
cy.get(".spectrum-Button").contains("View").click({ force: true })
|
|
||||||
cy.wait(500)
|
|
||||||
})
|
|
||||||
|
|
||||||
// Update value for 'Staged'
|
|
||||||
cy.get('[data-name="Stage"]').within(() => {
|
|
||||||
cy.get(".spectrum-Picker-label").click()
|
|
||||||
})
|
|
||||||
cy.get(".spectrum-Menu").within(() => {
|
|
||||||
cy.get(".spectrum-Menu-item").contains("Hired").click()
|
|
||||||
})
|
|
||||||
|
|
||||||
// Save application
|
|
||||||
cy.get(".spectrum-Button").contains("Save").click({ force: true })
|
|
||||||
cy.wait(500)
|
|
||||||
|
|
||||||
// Hired section
|
|
||||||
cy.get(".links").contains("Hired").click({ force: true })
|
|
||||||
cy.wait(500)
|
|
||||||
|
|
||||||
// Verify Table size - Total rows = 2
|
|
||||||
cy.get(".spectrum-Table").find(".spectrum-Table-row").its('length').then((len => {
|
|
||||||
expect(len).to.eq(2)
|
|
||||||
}))
|
|
||||||
})
|
|
||||||
|
|
||||||
xit("should delete an application", () => {
|
|
||||||
// Visit published app
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/app/` + templateNameParsed)
|
|
||||||
cy.wait(1000)
|
|
||||||
|
|
||||||
// Hired section
|
|
||||||
cy.get(".links").contains("Hired").click({ force: true })
|
|
||||||
cy.wait(500)
|
|
||||||
|
|
||||||
// View first application
|
|
||||||
cy.get(".spectrum-Table-row").eq(0).within(() => {
|
|
||||||
cy.get(".spectrum-Button").contains("View").click({ force: true })
|
|
||||||
cy.wait(500)
|
|
||||||
})
|
|
||||||
|
|
||||||
// Delete application
|
|
||||||
cy.get(".spectrum-Button").contains("Delete").click({ force: true })
|
|
||||||
cy.get(".spectrum-Dialog-grid").within(() => {
|
|
||||||
cy.get(".spectrum-Button").contains("Confirm").click()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -1,60 +0,0 @@
|
||||||
import filterTests from "../../../support/filterTests"
|
|
||||||
|
|
||||||
filterTests(["all"], () => {
|
|
||||||
context("Verify IT Template Details", () => {
|
|
||||||
|
|
||||||
before(() => {
|
|
||||||
cy.login()
|
|
||||||
|
|
||||||
// Template navigation
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder/portal/apps/templates`)
|
|
||||||
|
|
||||||
// Filter IT Templates
|
|
||||||
cy.get(".template-category-filters").within(() => {
|
|
||||||
cy.get('[data-cy="IT"]').click()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should verify the details option for IT templates", () => {
|
|
||||||
cy.get(".template-grid").find(".template-card").its('length')
|
|
||||||
.then(len => {
|
|
||||||
// Verify template name is within details link
|
|
||||||
for (let i = 0; i < len; i++) {
|
|
||||||
cy.get(".template-card").eq(i).within(() => {
|
|
||||||
const templateName = cy.get(".template-thumbnail-text")
|
|
||||||
templateName.invoke('text')
|
|
||||||
.then(templateNameText => {
|
|
||||||
const templateNameParsed = templateNameText.toLowerCase().replace(/\s+/g, '-')
|
|
||||||
|
|
||||||
if (templateNameText == "Hashicorp Scorecard Template") {
|
|
||||||
const templateNameSplit = templateNameParsed.split('-template')[0]
|
|
||||||
cy.get('a')
|
|
||||||
.should('have.attr', 'href').and('contain', templateNameSplit)
|
|
||||||
}
|
|
||||||
else if (templateNameText == "IT Ticketing System") {
|
|
||||||
const templateNameSplit = templateNameParsed.split('it-')[1]
|
|
||||||
cy.get('a')
|
|
||||||
.should('have.attr', 'href').and('contain', templateNameSplit)
|
|
||||||
}
|
|
||||||
else if (templateNameText == "IT Incident Report Form") {
|
|
||||||
const templateNameSplit = templateNameParsed.split('-form')[0]
|
|
||||||
cy.get('a')
|
|
||||||
.should('have.attr', 'href').and('contain', templateNameSplit)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
cy.get('a').should('have.attr', 'href').and('contain', templateNameParsed)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
// Verify correct status from Details link - 200
|
|
||||||
cy.get('a')
|
|
||||||
.then(link => {
|
|
||||||
cy.request(link.prop('href'))
|
|
||||||
.its('status')
|
|
||||||
.should('eq', 200)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -1,72 +0,0 @@
|
||||||
import filterTests from "../../../support/filterTests"
|
|
||||||
|
|
||||||
filterTests(["all"], () => {
|
|
||||||
context("IT Ticketing System Template Functionality", () => {
|
|
||||||
const templateName = "IT Ticketing System"
|
|
||||||
const templateNameParsed = templateName.toLowerCase().replace(/\s+/g, '-')
|
|
||||||
|
|
||||||
before(() => {
|
|
||||||
cy.login()
|
|
||||||
cy.deleteApp(templateName)
|
|
||||||
// Template navigation
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder/portal/apps/templates`, {
|
|
||||||
onBeforeLoad(win) {
|
|
||||||
cy.stub(win, 'open')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
cy.wait(2000)
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should create and publish app with IT Ticketing System template", () => {
|
|
||||||
// Select IT Ticketing System template
|
|
||||||
cy.get(".template-thumbnail-text")
|
|
||||||
.contains(templateName).parentsUntil(".template-grid").within(() => {
|
|
||||||
cy.get(".spectrum-Button").contains("Use template").click({ force: true })
|
|
||||||
})
|
|
||||||
|
|
||||||
// Confirm URL matches template name
|
|
||||||
const appUrl = cy.get(".app-server")
|
|
||||||
appUrl.invoke('text').then(appUrlText => {
|
|
||||||
expect(appUrlText).to.equal(`${Cypress.config().baseUrl}/app/` + templateNameParsed)
|
|
||||||
})
|
|
||||||
|
|
||||||
// Create App
|
|
||||||
cy.get(".spectrum-Dialog-grid").within(() => {
|
|
||||||
cy.get(".spectrum-Button").contains("Create app").click({ force: true })
|
|
||||||
})
|
|
||||||
|
|
||||||
// Publish App & Verify it opened
|
|
||||||
cy.wait(2000) // Wait for app to generate
|
|
||||||
cy.publishApp(true)
|
|
||||||
cy.window().its('open').should('be.calledOnce')
|
|
||||||
})
|
|
||||||
|
|
||||||
xit("should filter tickets by status", () => {
|
|
||||||
// Visit published app
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/app/` + templateNameParsed)
|
|
||||||
cy.wait(1000)
|
|
||||||
|
|
||||||
// Tickets section
|
|
||||||
cy.get(".links").contains("Tickets").click({ force: true })
|
|
||||||
cy.wait(1000)
|
|
||||||
|
|
||||||
// Filter by stage - Confirm table updates
|
|
||||||
cy.get(".spectrum-Picker").contains("Filter by status").click({ force: true })
|
|
||||||
cy.get(".spectrum-Menu").find('li').its('length').then(len => {
|
|
||||||
for (let i = 1; i < len; i++) {
|
|
||||||
cy.get(".spectrum-Menu-item").eq(i).click()
|
|
||||||
const stage = cy.get(".spectrum-Picker-label")
|
|
||||||
stage.invoke('text').then(stageText => {
|
|
||||||
if (stageText == "In progress" || stageText == "On hold" || stageText == "Triaged") {
|
|
||||||
cy.get(".placeholder").should('contain', 'No rows found')
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
cy.get(".spectrum-Table-row").should('contain', stageText)
|
|
||||||
}
|
|
||||||
cy.get(".spectrum-Picker").contains(stageText).click({ force: true })
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -1,42 +0,0 @@
|
||||||
import filterTests from "../../../support/filterTests"
|
|
||||||
|
|
||||||
filterTests(["all"], () => {
|
|
||||||
context("Verify Admin Panel Template Details", () => {
|
|
||||||
|
|
||||||
before(() => {
|
|
||||||
cy.login()
|
|
||||||
|
|
||||||
// Template navigation
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder/portal/apps/templates`)
|
|
||||||
|
|
||||||
// Filter Admin Panels Templates
|
|
||||||
cy.get(".template-category-filters").within(() => {
|
|
||||||
cy.get('[data-cy="Admin Panels"]').click()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should verify the details option for Admin Panels templates", () => {
|
|
||||||
cy.get(".template-grid").find(".template-card").its('length')
|
|
||||||
.then(len => {
|
|
||||||
// Verify template name is within details link
|
|
||||||
for (let i = 0; i < len; i++) {
|
|
||||||
cy.get(".template-card").eq(i).within(() => {
|
|
||||||
const templateName = cy.get(".template-thumbnail-text")
|
|
||||||
templateName.invoke('text')
|
|
||||||
.then(templateNameText => {
|
|
||||||
const templateNameParsed = templateNameText.toLowerCase().replace(/\s+/g, '-')
|
|
||||||
cy.get('a').should('have.attr', 'href').and('contain', templateNameParsed)
|
|
||||||
})
|
|
||||||
// Verify correct status from Details link - 200
|
|
||||||
cy.get('a')
|
|
||||||
.then(link => {
|
|
||||||
cy.request(link.prop('href'))
|
|
||||||
.its('status')
|
|
||||||
.should('eq', 200)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -1,51 +0,0 @@
|
||||||
import filterTests from "../../../support/filterTests"
|
|
||||||
|
|
||||||
filterTests(["all"], () => {
|
|
||||||
context("Verify Aproval Apps Template Details", () => {
|
|
||||||
|
|
||||||
before(() => {
|
|
||||||
cy.login()
|
|
||||||
|
|
||||||
// Template navigation
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder/portal/apps/templates`)
|
|
||||||
|
|
||||||
// Filter Approval Apps Templates
|
|
||||||
cy.get(".template-category-filters").within(() => {
|
|
||||||
cy.get('[data-cy="Approval Apps"]').click()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should verify the details option for Approval Apps templates", () => {
|
|
||||||
cy.get(".template-grid").find(".template-card").its('length')
|
|
||||||
.then(len => {
|
|
||||||
// Verify template name is within details link
|
|
||||||
for (let i = 0; i < len; i++) {
|
|
||||||
cy.get(".template-card").eq(i).within(() => {
|
|
||||||
const templateName = cy.get(".template-thumbnail-text")
|
|
||||||
templateName.invoke('text')
|
|
||||||
.then(templateNameText => {
|
|
||||||
const templateNameParsed = templateNameText.toLowerCase().replace(/\s+/g, '-')
|
|
||||||
|
|
||||||
if (templateNameText == "Content Approval System") {
|
|
||||||
// Template name should include 'content-approval'
|
|
||||||
const templateNameSplit = templateNameParsed.split('-system')[0]
|
|
||||||
cy.get('a')
|
|
||||||
.should('have.attr', 'href').and('contain', templateNameSplit)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
cy.get('a').should('have.attr', 'href').and('contain', templateNameParsed)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
// Verify correct status from Details link - 200
|
|
||||||
cy.get('a')
|
|
||||||
.then(link => {
|
|
||||||
cy.request(link.prop('href'))
|
|
||||||
.its('status')
|
|
||||||
.should('eq', 200)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -1,51 +0,0 @@
|
||||||
import filterTests from "../../../support/filterTests"
|
|
||||||
|
|
||||||
filterTests(["all"], () => {
|
|
||||||
context("Verify Business Apps Template Details", () => {
|
|
||||||
|
|
||||||
before(() => {
|
|
||||||
cy.login()
|
|
||||||
|
|
||||||
// Template navigation
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder/portal/apps/templates`)
|
|
||||||
|
|
||||||
// Filter Business Apps Templates
|
|
||||||
cy.get(".template-category-filters").within(() => {
|
|
||||||
cy.get('[data-cy="Business Apps"]').click()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should verify the details option for Business Apps templates", () => {
|
|
||||||
cy.get(".template-grid").find(".template-card").its('length')
|
|
||||||
.then(len => {
|
|
||||||
// Verify template name is within details link
|
|
||||||
for (let i = 0; i < len; i++) {
|
|
||||||
cy.get(".template-card").eq(i).within(() => {
|
|
||||||
const templateName = cy.get(".template-thumbnail-text")
|
|
||||||
templateName.invoke('text')
|
|
||||||
.then(templateNameText => {
|
|
||||||
const templateNameParsed = templateNameText.toLowerCase().replace(/\s+/g, '-')
|
|
||||||
|
|
||||||
if (templateNameText == "Employee Check-in/Check-Out Template") {
|
|
||||||
// Remove / from template name
|
|
||||||
const templateNameReplace = templateNameParsed.replace(/\//g, "-")
|
|
||||||
cy.get('a')
|
|
||||||
.should('have.attr', 'href').and('contain', templateNameReplace)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
cy.get('a').should('have.attr', 'href').and('contain', templateNameParsed)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
// Verify correct status from Details link - 200
|
|
||||||
cy.get('a')
|
|
||||||
.then(link => {
|
|
||||||
cy.request(link.prop('href'))
|
|
||||||
.its('status')
|
|
||||||
.should('eq', 200)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -1,44 +0,0 @@
|
||||||
import filterTests from "../../../support/filterTests"
|
|
||||||
|
|
||||||
filterTests(["all"], () => {
|
|
||||||
context("Verify Directories Template Details", () => {
|
|
||||||
|
|
||||||
before(() => {
|
|
||||||
cy.login()
|
|
||||||
|
|
||||||
// Template navigation
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder/portal/apps/templates`)
|
|
||||||
|
|
||||||
// Filter Directories Templates
|
|
||||||
cy.get(".template-category-filters").within(() => {
|
|
||||||
cy.get('[data-cy="Directories"]').click()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should verify the details option for Directories templates", () => {
|
|
||||||
cy.get(".template-grid").find(".template-card").its('length')
|
|
||||||
.then(len => {
|
|
||||||
// Verify template name is within details link
|
|
||||||
for (let i = 0; i < len; i++) {
|
|
||||||
cy.get(".template-card").eq(i).within(() => {
|
|
||||||
const templateName = cy.get(".template-thumbnail-text")
|
|
||||||
templateName.invoke('text')
|
|
||||||
.then(templateNameText => {
|
|
||||||
const templateNameParsed = templateNameText.toLowerCase().replace(/\s+/g, '-')
|
|
||||||
const templateNameSplit = templateNameParsed.split('-template')[0]
|
|
||||||
cy.get('a')
|
|
||||||
.should('have.attr', 'href').and('contain', templateNameSplit)
|
|
||||||
})
|
|
||||||
// Verify correct status from Details link - 200
|
|
||||||
cy.get('a')
|
|
||||||
.then(link => {
|
|
||||||
cy.request(link.prop('href'))
|
|
||||||
.its('status')
|
|
||||||
.should('eq', 200)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -1,42 +0,0 @@
|
||||||
import filterTests from "../../../support/filterTests"
|
|
||||||
|
|
||||||
filterTests(["all"], () => {
|
|
||||||
context("Verify Forms Template Details", () => {
|
|
||||||
|
|
||||||
before(() => {
|
|
||||||
cy.login()
|
|
||||||
|
|
||||||
// Template navigation
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder/portal/apps/templates`)
|
|
||||||
|
|
||||||
// Filter Forms Templates
|
|
||||||
cy.get(".template-category-filters").within(() => {
|
|
||||||
cy.get('[data-cy="Forms"]').click()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should verify the details option for Forms templates", () => {
|
|
||||||
cy.get(".template-grid").find(".template-card").its('length')
|
|
||||||
.then(len => {
|
|
||||||
// Verify template name is within details link
|
|
||||||
for (let i = 0; i < len; i++) {
|
|
||||||
cy.get(".template-card").eq(i).within(() => {
|
|
||||||
const templateName = cy.get(".template-thumbnail-text")
|
|
||||||
templateName.invoke('text')
|
|
||||||
.then(templateNameText => {
|
|
||||||
const templateNameParsed = templateNameText.toLowerCase().replace(/\s+/g, '-')
|
|
||||||
cy.get('a').should('have.attr', 'href').and('contain', templateNameParsed)
|
|
||||||
})
|
|
||||||
// Verify correct status from Details link - 200
|
|
||||||
cy.get('a')
|
|
||||||
.then(link => {
|
|
||||||
cy.request(link.prop('href'))
|
|
||||||
.its('status')
|
|
||||||
.should('eq', 200)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -1,43 +0,0 @@
|
||||||
import filterTests from "../../../support/filterTests"
|
|
||||||
|
|
||||||
filterTests(["all"], () => {
|
|
||||||
context("Verify Healthcare Template Details", () => {
|
|
||||||
|
|
||||||
before(() => {
|
|
||||||
cy.login()
|
|
||||||
|
|
||||||
// Template navigation
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder/portal/apps/templates`)
|
|
||||||
|
|
||||||
// Filter Healthcare Templates
|
|
||||||
cy.get(".template-category-filters").within(() => {
|
|
||||||
cy.get('[data-cy="Healthcare"]').click()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should verify the details option for Healthcare templates", () => {
|
|
||||||
cy.get(".template-grid").find(".template-card").its('length')
|
|
||||||
.then(len => {
|
|
||||||
// Verify template name is within details link
|
|
||||||
for (let i = 0; i < len; i++) {
|
|
||||||
cy.get(".template-card").eq(i).within(() => {
|
|
||||||
const templateName = cy.get(".template-thumbnail-text")
|
|
||||||
templateName.invoke('text')
|
|
||||||
.then(templateNameText => {
|
|
||||||
const templateNameParsed = templateNameText.toLowerCase().replace(/\s+/g, '-')
|
|
||||||
|
|
||||||
cy.get('a').should('have.attr', 'href').and('contain', templateNameParsed)
|
|
||||||
})
|
|
||||||
// Verify correct status from Details link - 200
|
|
||||||
cy.get('a')
|
|
||||||
.then(link => {
|
|
||||||
cy.request(link.prop('href'))
|
|
||||||
.its('status')
|
|
||||||
.should('eq', 200)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -1,42 +0,0 @@
|
||||||
import filterTests from "../../../support/filterTests"
|
|
||||||
|
|
||||||
filterTests(["all"], () => {
|
|
||||||
context("Verify Legal Template Details", () => {
|
|
||||||
|
|
||||||
before(() => {
|
|
||||||
cy.login()
|
|
||||||
|
|
||||||
// Template navigation
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder/portal/apps/templates`)
|
|
||||||
|
|
||||||
// Filter Legal Templates
|
|
||||||
cy.get(".template-category-filters").within(() => {
|
|
||||||
cy.get('[data-cy="Legal"]').click()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should verify the details option for Legal templates", () => {
|
|
||||||
cy.get(".template-grid").find(".template-card").its('length')
|
|
||||||
.then(len => {
|
|
||||||
// Verify template name is within details link
|
|
||||||
for (let i = 0; i < len; i++) {
|
|
||||||
cy.get(".template-card").eq(i).within(() => {
|
|
||||||
const templateName = cy.get(".template-thumbnail-text")
|
|
||||||
templateName.invoke('text')
|
|
||||||
.then(templateNameText => {
|
|
||||||
const templateNameParsed = templateNameText.toLowerCase().replace(/\s+/g, '-')
|
|
||||||
cy.get('a').should('have.attr', 'href').and('contain', templateNameParsed)
|
|
||||||
})
|
|
||||||
// Verify correct status from Details link - 200
|
|
||||||
cy.get('a')
|
|
||||||
.then(link => {
|
|
||||||
cy.request(link.prop('href'))
|
|
||||||
.its('status')
|
|
||||||
.should('eq', 200)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -1,42 +0,0 @@
|
||||||
import filterTests from "../../../support/filterTests"
|
|
||||||
|
|
||||||
filterTests(["all"], () => {
|
|
||||||
context("Verify Logistics Template Details", () => {
|
|
||||||
|
|
||||||
before(() => {
|
|
||||||
cy.login()
|
|
||||||
|
|
||||||
// Template navigation
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder/portal/apps/templates`)
|
|
||||||
|
|
||||||
// Filter Logistics Templates
|
|
||||||
cy.get(".template-category-filters").within(() => {
|
|
||||||
cy.get('[data-cy="Logistics"]').click()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should verify the details option for Logistics templates", () => {
|
|
||||||
cy.get(".template-grid").find(".template-card").its('length')
|
|
||||||
.then(len => {
|
|
||||||
// Verify template name is within details link
|
|
||||||
for (let i = 0; i < len; i++) {
|
|
||||||
cy.get(".template-card").eq(i).within(() => {
|
|
||||||
const templateName = cy.get(".template-thumbnail-text")
|
|
||||||
templateName.invoke('text')
|
|
||||||
.then(templateNameText => {
|
|
||||||
const templateNameParsed = templateNameText.toLowerCase().replace(/\s+/g, '-')
|
|
||||||
cy.get('a').should('have.attr', 'href').and('contain', templateNameParsed)
|
|
||||||
})
|
|
||||||
// Verify correct status from Details link - 200
|
|
||||||
cy.get('a')
|
|
||||||
.then(link => {
|
|
||||||
cy.request(link.prop('href'))
|
|
||||||
.its('status')
|
|
||||||
.should('eq', 200)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -1,42 +0,0 @@
|
||||||
import filterTests from "../../../support/filterTests"
|
|
||||||
|
|
||||||
filterTests(["all"], () => {
|
|
||||||
context("Verify Manufacturing Template Details", () => {
|
|
||||||
|
|
||||||
before(() => {
|
|
||||||
cy.login()
|
|
||||||
|
|
||||||
// Template navigation
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder/portal/apps/templates`)
|
|
||||||
|
|
||||||
// Filter Manufacturing Templates
|
|
||||||
cy.get(".template-category-filters").within(() => {
|
|
||||||
cy.get('[data-cy="Manufacturing"]').click()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should verify the details option for Manufacturing templates", () => {
|
|
||||||
cy.get(".template-grid").find(".template-card").its('length')
|
|
||||||
.then(len => {
|
|
||||||
// Verify template name is within details link
|
|
||||||
for (let i = 0; i < len; i++) {
|
|
||||||
cy.get(".template-card").eq(i).within(() => {
|
|
||||||
const templateName = cy.get(".template-thumbnail-text")
|
|
||||||
templateName.invoke('text')
|
|
||||||
.then(templateNameText => {
|
|
||||||
const templateNameParsed = templateNameText.toLowerCase().replace(/\s+/g, '-')
|
|
||||||
cy.get('a').should('have.attr', 'href').and('contain', templateNameParsed)
|
|
||||||
})
|
|
||||||
// Verify correct status from Details link - 200
|
|
||||||
cy.get('a')
|
|
||||||
.then(link => {
|
|
||||||
cy.request(link.prop('href'))
|
|
||||||
.its('status')
|
|
||||||
.should('eq', 200)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -1,44 +0,0 @@
|
||||||
import filterTests from "../../../support/filterTests"
|
|
||||||
|
|
||||||
filterTests(["all"], () => {
|
|
||||||
context("Lead Generation Form Template Functionality", () => {
|
|
||||||
const templateName = "Lead Generation Form"
|
|
||||||
const templateNameParsed = templateName.toLowerCase().replace(/\s+/g, '-')
|
|
||||||
|
|
||||||
before(() => {
|
|
||||||
cy.login()
|
|
||||||
cy.deleteApp(templateName)
|
|
||||||
// Template navigation
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder/portal/apps/templates`, {
|
|
||||||
onBeforeLoad(win) {
|
|
||||||
cy.stub(win, 'open')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
cy.wait(2000)
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should create and publish app with Lead Generation Form template", () => {
|
|
||||||
// Select Lead Generation Form template
|
|
||||||
cy.get(".template-thumbnail-text")
|
|
||||||
.contains(templateName).parentsUntil(".template-grid").within(() => {
|
|
||||||
cy.get(".spectrum-Button").contains("Use template").click({ force: true })
|
|
||||||
})
|
|
||||||
|
|
||||||
// Confirm URL matches template name
|
|
||||||
const appUrl = cy.get(".app-server")
|
|
||||||
appUrl.invoke('text').then(appUrlText => {
|
|
||||||
expect(appUrlText).to.equal(`${Cypress.config().baseUrl}/app/` + templateNameParsed)
|
|
||||||
})
|
|
||||||
|
|
||||||
// Create App
|
|
||||||
cy.get(".spectrum-Dialog-grid").within(() => {
|
|
||||||
cy.get(".spectrum-Button").contains("Create app").click({ force: true })
|
|
||||||
})
|
|
||||||
|
|
||||||
// Publish App & Verify it opened
|
|
||||||
cy.wait(2000) // Wait for app to generate
|
|
||||||
cy.publishApp(true)
|
|
||||||
cy.window().its('open').should('be.calledOnce')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -1,51 +0,0 @@
|
||||||
import filterTests from "../../../support/filterTests"
|
|
||||||
|
|
||||||
filterTests(["all"], () => {
|
|
||||||
context("Verify Marketing Template Details", () => {
|
|
||||||
|
|
||||||
before(() => {
|
|
||||||
cy.login()
|
|
||||||
|
|
||||||
// Template navigation
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder/portal/apps/templates`)
|
|
||||||
|
|
||||||
// Filter Marketing Templates
|
|
||||||
cy.get(".template-category-filters").within(() => {
|
|
||||||
cy.get('[data-cy="Marketing"]').click()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should verify the details option for Marketing templates", () => {
|
|
||||||
cy.get(".template-grid").find(".template-card").its('length')
|
|
||||||
.then(len => {
|
|
||||||
// Verify template name is within details link
|
|
||||||
for (let i = 0; i < len; i++) {
|
|
||||||
cy.get(".template-card").eq(i).within(() => {
|
|
||||||
const templateName = cy.get(".template-thumbnail-text")
|
|
||||||
templateName.invoke('text')
|
|
||||||
.then(templateNameText => {
|
|
||||||
const templateNameParsed = templateNameText.toLowerCase().replace(/\s+/g, '-')
|
|
||||||
|
|
||||||
if (templateNameText == "Lead Generation Form") {
|
|
||||||
// Multi-step lead form
|
|
||||||
// Template name includes 'multi-step-lead-form'
|
|
||||||
cy.get('a')
|
|
||||||
.should('have.attr', 'href').and('contain', 'multi-step-lead-form')
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
cy.get('a').should('have.attr', 'href').and('contain', templateNameParsed)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
// Verify correct status from Details link - 200
|
|
||||||
cy.get('a')
|
|
||||||
.then(link => {
|
|
||||||
cy.request(link.prop('href'))
|
|
||||||
.its('status')
|
|
||||||
.should('eq', 200)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -1,42 +0,0 @@
|
||||||
import filterTests from "../../../support/filterTests"
|
|
||||||
|
|
||||||
filterTests(["all"], () => {
|
|
||||||
context("Verify Operations Template Details", () => {
|
|
||||||
|
|
||||||
before(() => {
|
|
||||||
cy.login()
|
|
||||||
|
|
||||||
// Template navigation
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder/portal/apps/templates`)
|
|
||||||
|
|
||||||
// Filter Operations Templates
|
|
||||||
cy.get(".template-category-filters").within(() => {
|
|
||||||
cy.get('[data-cy="Operations"]').click()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should verify the details option for Operations templates", () => {
|
|
||||||
cy.get(".template-grid").find(".template-card").its('length')
|
|
||||||
.then(len => {
|
|
||||||
// Verify template name is within details link
|
|
||||||
for (let i = 0; i < len; i++) {
|
|
||||||
cy.get(".template-card").eq(i).within(() => {
|
|
||||||
const templateName = cy.get(".template-thumbnail-text")
|
|
||||||
templateName.invoke('text')
|
|
||||||
.then(templateNameText => {
|
|
||||||
const templateNameParsed = templateNameText.toLowerCase().replace(/\s+/g, '-')
|
|
||||||
cy.get('a').should('have.attr', 'href').and('contain', templateNameParsed)
|
|
||||||
})
|
|
||||||
// Verify correct status from Details link - 200
|
|
||||||
cy.get('a')
|
|
||||||
.then(link => {
|
|
||||||
cy.request(link.prop('href'))
|
|
||||||
.its('status')
|
|
||||||
.should('eq', 200)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -1,71 +0,0 @@
|
||||||
import filterTests from "../../../support/filterTests"
|
|
||||||
|
|
||||||
filterTests(["all"], () => {
|
|
||||||
context("Verify Portals Template Details", () => {
|
|
||||||
|
|
||||||
before(() => {
|
|
||||||
cy.login()
|
|
||||||
|
|
||||||
// Template navigation
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder/portal/apps/templates`)
|
|
||||||
|
|
||||||
// Filter Portal Templates
|
|
||||||
cy.get(".template-category-filters").within(() => {
|
|
||||||
cy.get('[data-cy="Portal"]').click()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should verify the details option for Portal templates", () => {
|
|
||||||
cy.get(".template-grid").find(".template-card").its('length')
|
|
||||||
.then(len => {
|
|
||||||
for (let i = 0; i < len; i++) {
|
|
||||||
cy.get(".template-card").eq(i).within(() => {
|
|
||||||
const templateName = cy.get(".template-thumbnail-text")
|
|
||||||
templateName.invoke('text')
|
|
||||||
.then(templateNameText => {
|
|
||||||
const templateNameParsed = templateNameText.toLowerCase().replace(/\s+/g, '-')
|
|
||||||
cy.get('a')
|
|
||||||
.should('have.attr', 'href').and('contain', templateNameParsed)
|
|
||||||
})
|
|
||||||
// Verify correct status from Details link - 200
|
|
||||||
cy.get('a')
|
|
||||||
.then(link => {
|
|
||||||
cy.request(link.prop('href'))
|
|
||||||
.its('status')
|
|
||||||
.should('eq', 200)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should verify the details option for Portals templates", () => {
|
|
||||||
// Filter Portals Templates
|
|
||||||
cy.get(".template-category-filters").within(() => {
|
|
||||||
cy.get('[data-cy="Portals"]').click()
|
|
||||||
})
|
|
||||||
|
|
||||||
cy.get(".template-grid").find(".template-card").its('length')
|
|
||||||
.then(len => {
|
|
||||||
for (let i = 0; i < len; i++) {
|
|
||||||
cy.get(".template-card").eq(i).within(() => {
|
|
||||||
const templateName = cy.get(".template-thumbnail-text")
|
|
||||||
templateName.invoke('text')
|
|
||||||
.then(templateNameText => {
|
|
||||||
const templateNameParsed = templateNameText.toLowerCase().replace(/\s+/g, '-')
|
|
||||||
cy.get('a')
|
|
||||||
.should('have.attr', 'href').and('contain', templateNameParsed)
|
|
||||||
})
|
|
||||||
// Verify correct status from Details link - 200
|
|
||||||
cy.get('a')
|
|
||||||
.then(link => {
|
|
||||||
cy.request(link.prop('href'))
|
|
||||||
.its('status')
|
|
||||||
.should('eq', 200)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -1,42 +0,0 @@
|
||||||
import filterTests from "../../../support/filterTests"
|
|
||||||
|
|
||||||
filterTests(["all"], () => {
|
|
||||||
context("Verify Professional Services Template Details", () => {
|
|
||||||
|
|
||||||
before(() => {
|
|
||||||
cy.login()
|
|
||||||
|
|
||||||
// Template navigation
|
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder/portal/apps/templates`)
|
|
||||||
|
|
||||||
// Filter Professional Services Templates
|
|
||||||
cy.get(".template-category-filters").within(() => {
|
|
||||||
cy.get('[data-cy="Professional Services"]').click()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should verify the details option for Professional Services templates", () => {
|
|
||||||
cy.get(".template-grid").find(".template-card").its('length')
|
|
||||||
.then(len => {
|
|
||||||
// Verify template name is within details link
|
|
||||||
for (let i = 0; i < len; i++) {
|
|
||||||
cy.get(".template-card").eq(i).within(() => {
|
|
||||||
const templateName = cy.get(".template-thumbnail-text")
|
|
||||||
templateName.invoke('text')
|
|
||||||
.then(templateNameText => {
|
|
||||||
const templateNameParsed = templateNameText.toLowerCase().replace(/\s+/g, '-')
|
|
||||||
cy.get('a').should('have.attr', 'href').and('contain', templateNameParsed)
|
|
||||||
})
|
|
||||||
// Verify correct status from Details link - 200
|
|
||||||
cy.get('a')
|
|
||||||
.then(link => {
|
|
||||||
cy.request(link.prop('href'))
|
|
||||||
.its('status')
|
|
||||||
.should('eq', 200)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -1,14 +1,8 @@
|
||||||
// ***********************************************
|
|
||||||
// For more comprehensive examples of custom
|
|
||||||
// commands please read more here:
|
|
||||||
// https://on.cypress.io/custom-commands
|
|
||||||
// ***********************************************
|
|
||||||
//
|
|
||||||
|
|
||||||
Cypress.on("uncaught:exception", () => {
|
Cypress.on("uncaught:exception", () => {
|
||||||
return false
|
return false
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// ACCOUNTS & USERS
|
||||||
Cypress.Commands.add("login", () => {
|
Cypress.Commands.add("login", () => {
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder`)
|
cy.visit(`${Cypress.config().baseUrl}/builder`)
|
||||||
cy.wait(2000)
|
cy.wait(2000)
|
||||||
|
@ -41,43 +35,20 @@ Cypress.Commands.add("logOut", () => {
|
||||||
cy.wait(2000)
|
cy.wait(2000)
|
||||||
})
|
})
|
||||||
|
|
||||||
Cypress.Commands.add("closeModal", () => {
|
Cypress.Commands.add("createUser", email => {
|
||||||
cy.get(".spectrum-Modal").within(() => {
|
// quick hacky recorded way to create a user
|
||||||
cy.get(".close-icon").click()
|
cy.contains("Users").click()
|
||||||
cy.wait(1000) // Wait for modal to close
|
cy.get(`[data-cy="add-user"]`).click()
|
||||||
})
|
cy.get(".spectrum-Picker-label").click()
|
||||||
})
|
cy.get(".spectrum-Menu-item:nth-child(2) > .spectrum-Menu-itemLabel").click()
|
||||||
|
|
||||||
Cypress.Commands.add("importApp", (exportFilePath, name) => {
|
//Onboarding type selector
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder`)
|
cy.get(
|
||||||
|
":nth-child(2) > .spectrum-Form-itemField > .spectrum-Textfield > .spectrum-Textfield-input"
|
||||||
cy.request(`${Cypress.config().baseUrl}/api/applications?status=all`)
|
)
|
||||||
.its("body")
|
.first()
|
||||||
.then(val => {
|
.type(email, { force: true })
|
||||||
if (val.length > 0) {
|
cy.get(".spectrum-Button--cta").click({ force: true })
|
||||||
cy.get(`[data-cy="create-app-btn"]`).click({ force: true })
|
|
||||||
cy.wait(500)
|
|
||||||
}
|
|
||||||
cy.get(`[data-cy="import-app-btn"]`).click({ force: true })
|
|
||||||
})
|
|
||||||
|
|
||||||
cy.get(".spectrum-Modal").within(() => {
|
|
||||||
cy.get("input").eq(1).should("have.focus")
|
|
||||||
|
|
||||||
cy.get(".spectrum-Dropzone").selectFile(exportFilePath, {
|
|
||||||
action: "drag-drop",
|
|
||||||
})
|
|
||||||
|
|
||||||
cy.get(".gallery .filename").contains("exported-app.txt")
|
|
||||||
|
|
||||||
if (name && name != "") {
|
|
||||||
cy.get("input").eq(0).type(name).should("have.value", name).blur()
|
|
||||||
}
|
|
||||||
cy.get(".confirm-wrap button")
|
|
||||||
.should("not.be.disabled")
|
|
||||||
.click({ force: true })
|
|
||||||
cy.wait(5000)
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
||||||
Cypress.Commands.add("updateUserInformation", (firstName, lastName) => {
|
Cypress.Commands.add("updateUserInformation", (firstName, lastName) => {
|
||||||
|
@ -113,6 +84,13 @@ Cypress.Commands.add("updateUserInformation", (firstName, lastName) => {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// APPLICATIONS
|
||||||
|
Cypress.Commands.add("createTestApp", () => {
|
||||||
|
const appName = "Cypress Tests"
|
||||||
|
cy.deleteApp(appName)
|
||||||
|
cy.createApp(appName, "This app is used for Cypress testing.")
|
||||||
|
})
|
||||||
|
|
||||||
Cypress.Commands.add("createApp", (name, addDefaultTable) => {
|
Cypress.Commands.add("createApp", (name, addDefaultTable) => {
|
||||||
const shouldCreateDefaultTable =
|
const shouldCreateDefaultTable =
|
||||||
typeof addDefaultTable != "boolean" ? true : addDefaultTable
|
typeof addDefaultTable != "boolean" ? true : addDefaultTable
|
||||||
|
@ -218,57 +196,6 @@ Cypress.Commands.add("deleteAllApps", () => {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
Cypress.Commands.add("customiseAppIcon", () => {
|
|
||||||
// Select random icon
|
|
||||||
cy.get(".grid").within(() => {
|
|
||||||
cy.get(".icon-item")
|
|
||||||
.eq(Math.floor(Math.random() * 23) + 1)
|
|
||||||
.click()
|
|
||||||
})
|
|
||||||
// Select random colour
|
|
||||||
cy.get(".fill").click()
|
|
||||||
cy.get(".colors").within(() => {
|
|
||||||
cy.get(".color")
|
|
||||||
.eq(Math.floor(Math.random() * 33) + 1)
|
|
||||||
.click()
|
|
||||||
})
|
|
||||||
cy.intercept("**/applications/**").as("iconChange")
|
|
||||||
cy.get(".spectrum-Button").contains("Save").click({ force: true })
|
|
||||||
cy.wait("@iconChange")
|
|
||||||
cy.get("@iconChange").its("response.statusCode").should("eq", 200)
|
|
||||||
cy.wait(1000)
|
|
||||||
})
|
|
||||||
|
|
||||||
Cypress.Commands.add("alterAppVersion", (appId, version) => {
|
|
||||||
return cy
|
|
||||||
.request("put", `${Cypress.config().baseUrl}/api/applications/${appId}`, {
|
|
||||||
version: version || "0.0.1-alpha.0",
|
|
||||||
})
|
|
||||||
.then(resp => {
|
|
||||||
expect(resp.status).to.eq(200)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
Cypress.Commands.add("updateAppName", (changedName, noName) => {
|
|
||||||
cy.get(".spectrum-Modal").within(() => {
|
|
||||||
if (noName == true) {
|
|
||||||
cy.get("input").clear()
|
|
||||||
cy.get(".spectrum-Dialog-grid")
|
|
||||||
.click()
|
|
||||||
.contains("App name must be letters, numbers and spaces only")
|
|
||||||
return cy
|
|
||||||
}
|
|
||||||
cy.get("input").clear()
|
|
||||||
cy.get("input")
|
|
||||||
.eq(0)
|
|
||||||
.type(changedName)
|
|
||||||
.should("have.value", changedName)
|
|
||||||
.blur()
|
|
||||||
cy.get(".spectrum-ButtonGroup").contains("Save").click({ force: true })
|
|
||||||
cy.wait(500)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
Cypress.Commands.add("unlockApp", unlock_config => {
|
Cypress.Commands.add("unlockApp", unlock_config => {
|
||||||
let config = { ...unlock_config }
|
let config = { ...unlock_config }
|
||||||
|
|
||||||
|
@ -298,6 +225,26 @@ Cypress.Commands.add("unlockApp", unlock_config => {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Cypress.Commands.add("updateAppName", (changedName, noName) => {
|
||||||
|
cy.get(".spectrum-Modal").within(() => {
|
||||||
|
if (noName == true) {
|
||||||
|
cy.get("input").clear()
|
||||||
|
cy.get(".spectrum-Dialog-grid")
|
||||||
|
.click()
|
||||||
|
.contains("App name must be letters, numbers and spaces only")
|
||||||
|
return cy
|
||||||
|
}
|
||||||
|
cy.get("input").clear()
|
||||||
|
cy.get("input")
|
||||||
|
.eq(0)
|
||||||
|
.type(changedName)
|
||||||
|
.should("have.value", changedName)
|
||||||
|
.blur()
|
||||||
|
cy.get(".spectrum-ButtonGroup").contains("Save").click({ force: true })
|
||||||
|
cy.wait(500)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
Cypress.Commands.add("publishApp", resolvedAppPath => {
|
Cypress.Commands.add("publishApp", resolvedAppPath => {
|
||||||
//Assumes you have navigated to an application first
|
//Assumes you have navigated to an application first
|
||||||
cy.get(".toprightnav button.spectrum-Button")
|
cy.get(".toprightnav button.spectrum-Button")
|
||||||
|
@ -321,34 +268,96 @@ Cypress.Commands.add("publishApp", resolvedAppPath => {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
Cypress.Commands.add("createTestApp", () => {
|
Cypress.Commands.add("alterAppVersion", (appId, version) => {
|
||||||
const appName = "Cypress Tests"
|
return cy
|
||||||
cy.deleteApp(appName)
|
.request("put", `${Cypress.config().baseUrl}/api/applications/${appId}`, {
|
||||||
cy.createApp(appName, "This app is used for Cypress testing.")
|
version: version || "0.0.1-alpha.0",
|
||||||
//cy.createScreen("home")
|
|
||||||
})
|
|
||||||
|
|
||||||
Cypress.Commands.add("createTestTableWithData", () => {
|
|
||||||
cy.createTable("dog")
|
|
||||||
cy.addColumn("dog", "name", "Text")
|
|
||||||
cy.addColumn("dog", "age", "Number")
|
|
||||||
})
|
|
||||||
|
|
||||||
Cypress.Commands.add("publishApp", (viewApp = false) => {
|
|
||||||
cy.get(".toprightnav").contains("Publish").click({ force: true })
|
|
||||||
cy.get(".spectrum-Dialog-grid").within(() => {
|
|
||||||
cy.get(".spectrum-Button").contains("Publish").click({ force: true })
|
|
||||||
})
|
})
|
||||||
cy.wait(2000) // Wait for App to publish and modal to appear
|
.then(resp => {
|
||||||
cy.get(".spectrum-Dialog-grid").within(() => {
|
expect(resp.status).to.eq(200)
|
||||||
if (viewApp) {
|
})
|
||||||
cy.get(".spectrum-Button").contains("View App").click({ force: true })
|
})
|
||||||
|
|
||||||
|
Cypress.Commands.add("importApp", (exportFilePath, name) => {
|
||||||
|
cy.visit(`${Cypress.config().baseUrl}/builder`)
|
||||||
|
|
||||||
|
cy.request(`${Cypress.config().baseUrl}/api/applications?status=all`)
|
||||||
|
.its("body")
|
||||||
|
.then(val => {
|
||||||
|
if (val.length > 0) {
|
||||||
|
cy.get(`[data-cy="create-app-btn"]`).click({ force: true })
|
||||||
|
cy.wait(500)
|
||||||
|
}
|
||||||
|
cy.get(`[data-cy="import-app-btn"]`).click({ force: true })
|
||||||
|
})
|
||||||
|
|
||||||
|
cy.get(".spectrum-Modal").within(() => {
|
||||||
|
cy.get("input").eq(1).should("have.focus")
|
||||||
|
|
||||||
|
cy.get(".spectrum-Dropzone").selectFile(exportFilePath, {
|
||||||
|
action: "drag-drop",
|
||||||
|
})
|
||||||
|
|
||||||
|
cy.get(".gallery .filename").contains("exported-app.txt")
|
||||||
|
|
||||||
|
if (name && name != "") {
|
||||||
|
cy.get("input").eq(0).type(name).should("have.value", name).blur()
|
||||||
|
}
|
||||||
|
cy.get(".confirm-wrap button")
|
||||||
|
.should("not.be.disabled")
|
||||||
|
.click({ force: true })
|
||||||
|
cy.wait(5000)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
// Filters visible with 1 or more
|
||||||
|
Cypress.Commands.add("searchForApplication", appName => {
|
||||||
|
cy.visit(`${Cypress.config().baseUrl}/builder`)
|
||||||
|
cy.wait(2000)
|
||||||
|
|
||||||
|
// No app filter functionality if only 1 app exists
|
||||||
|
cy.request(`${Cypress.config().baseUrl}/api/applications?status=all`)
|
||||||
|
.its("body")
|
||||||
|
.then(val => {
|
||||||
|
if (val.length < 2) {
|
||||||
|
return
|
||||||
} else {
|
} else {
|
||||||
cy.get(".spectrum-Button").contains("Done").click({ force: true })
|
// Searches for the app
|
||||||
|
cy.get(".filter").then(() => {
|
||||||
|
cy.get(".spectrum-Textfield").within(() => {
|
||||||
|
cy.get("input").eq(0).clear()
|
||||||
|
cy.get("input").eq(0).type(appName)
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// Assumes there are no others
|
||||||
|
Cypress.Commands.add("applicationInAppTable", appName => {
|
||||||
|
cy.get(".appTable").within(() => {
|
||||||
|
cy.get(".title").contains(appName).should("exist")
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
Cypress.Commands.add("createAppFromScratch", appName => {
|
||||||
|
cy.get(`[data-cy="create-app-btn"]`)
|
||||||
|
.contains("Start from scratch")
|
||||||
|
.click({ force: true })
|
||||||
|
cy.get(".spectrum-Modal").within(() => {
|
||||||
|
cy.get("input")
|
||||||
|
.eq(0)
|
||||||
|
.clear()
|
||||||
|
.type(appName)
|
||||||
|
.should("have.value", appName)
|
||||||
|
.blur()
|
||||||
|
cy.get(".spectrum-ButtonGroup").contains("Create app").click()
|
||||||
|
cy.wait(10000)
|
||||||
|
})
|
||||||
|
cy.createTable("Cypress Tests", true)
|
||||||
|
})
|
||||||
|
|
||||||
|
// TABLES
|
||||||
Cypress.Commands.add("createTable", (tableName, initialTable) => {
|
Cypress.Commands.add("createTable", (tableName, initialTable) => {
|
||||||
if (!initialTable) {
|
if (!initialTable) {
|
||||||
cy.navigateToDataSection()
|
cy.navigateToDataSection()
|
||||||
|
@ -369,6 +378,12 @@ Cypress.Commands.add("createTable", (tableName, initialTable) => {
|
||||||
cy.contains(tableName).should("be.visible")
|
cy.contains(tableName).should("be.visible")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Cypress.Commands.add("createTestTableWithData", () => {
|
||||||
|
cy.createTable("dog")
|
||||||
|
cy.addColumn("dog", "name", "Text")
|
||||||
|
cy.addColumn("dog", "age", "Number")
|
||||||
|
})
|
||||||
|
|
||||||
Cypress.Commands.add(
|
Cypress.Commands.add(
|
||||||
"addColumn",
|
"addColumn",
|
||||||
(tableName, columnName, type, multiOptions = null) => {
|
(tableName, columnName, type, multiOptions = null) => {
|
||||||
|
@ -423,22 +438,33 @@ Cypress.Commands.add("addRowMultiValue", values => {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
Cypress.Commands.add("createUser", email => {
|
Cypress.Commands.add("selectTable", tableName => {
|
||||||
// quick hacky recorded way to create a user
|
cy.expandBudibaseConnection()
|
||||||
cy.contains("Users").click()
|
cy.contains(".nav-item", tableName).click()
|
||||||
cy.get(`[data-cy="add-user"]`).click()
|
|
||||||
cy.get(".spectrum-Picker-label").click()
|
|
||||||
cy.get(".spectrum-Menu-item:nth-child(2) > .spectrum-Menu-itemLabel").click()
|
|
||||||
|
|
||||||
//Onboarding type selector
|
|
||||||
cy.get(
|
|
||||||
":nth-child(2) > .spectrum-Form-itemField > .spectrum-Textfield > .spectrum-Textfield-input"
|
|
||||||
)
|
|
||||||
.first()
|
|
||||||
.type(email, { force: true })
|
|
||||||
cy.get(".spectrum-Button--cta").click({ force: true })
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Cypress.Commands.add("addCustomSourceOptions", totalOptions => {
|
||||||
|
cy.get(".spectrum-ActionButton")
|
||||||
|
.contains("Define Options")
|
||||||
|
.click()
|
||||||
|
.then(() => {
|
||||||
|
for (let i = 0; i < totalOptions; i++) {
|
||||||
|
// Add radio button options
|
||||||
|
cy.get(".spectrum-Button")
|
||||||
|
.contains("Add Option")
|
||||||
|
.click({ force: true })
|
||||||
|
.then(() => {
|
||||||
|
cy.wait(500)
|
||||||
|
cy.get("[placeholder='Label']").eq(i).type(i)
|
||||||
|
cy.get("[placeholder='Value']").eq(i).type(i)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// Save options
|
||||||
|
cy.get(".spectrum-Button").contains("Save").click({ force: true })
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
// DESIGN AREA
|
||||||
Cypress.Commands.add("addComponent", (category, component) => {
|
Cypress.Commands.add("addComponent", (category, component) => {
|
||||||
if (category) {
|
if (category) {
|
||||||
cy.get(`[data-cy="category-${category}"]`).click({ force: true })
|
cy.get(`[data-cy="category-${category}"]`).click({ force: true })
|
||||||
|
@ -466,22 +492,8 @@ Cypress.Commands.add("getComponent", componentId => {
|
||||||
.find(`[data-id=${componentId}]`)
|
.find(`[data-id=${componentId}]`)
|
||||||
})
|
})
|
||||||
|
|
||||||
Cypress.Commands.add("navigateToFrontend", () => {
|
|
||||||
// Clicks on Design tab and then the Home nav item
|
|
||||||
cy.wait(1000)
|
|
||||||
cy.contains("Design").click()
|
|
||||||
cy.get(".spectrum-Search").type("/")
|
|
||||||
cy.get(".nav-item").contains("home").click()
|
|
||||||
})
|
|
||||||
|
|
||||||
Cypress.Commands.add("navigateToDataSection", () => {
|
|
||||||
// Clicks on the Data tab
|
|
||||||
cy.wait(500)
|
|
||||||
cy.contains("Data").click()
|
|
||||||
})
|
|
||||||
|
|
||||||
//Blank
|
|
||||||
Cypress.Commands.add("createScreen", (route, accessLevelLabel) => {
|
Cypress.Commands.add("createScreen", (route, accessLevelLabel) => {
|
||||||
|
// Blank Screen
|
||||||
cy.contains("Design").click()
|
cy.contains("Design").click()
|
||||||
cy.get("[aria-label=AddCircle]").click()
|
cy.get("[aria-label=AddCircle]").click()
|
||||||
cy.get(".spectrum-Modal").within(() => {
|
cy.get(".spectrum-Modal").within(() => {
|
||||||
|
@ -541,17 +553,6 @@ Cypress.Commands.add(
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
Cypress.Commands.add("navigateToAutogeneratedModal", () => {
|
|
||||||
// Screen name must already exist within data source
|
|
||||||
cy.contains("Design").click()
|
|
||||||
cy.get("[aria-label=AddCircle]").click()
|
|
||||||
cy.get(".spectrum-Modal").within(() => {
|
|
||||||
cy.get(".item").contains("Autogenerated screens").click()
|
|
||||||
cy.get(".spectrum-Button").contains("Continue").click({ force: true })
|
|
||||||
cy.wait(500)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
Cypress.Commands.add(
|
Cypress.Commands.add(
|
||||||
"createAutogeneratedScreens",
|
"createAutogeneratedScreens",
|
||||||
(screenNames, accessLevelLabel) => {
|
(screenNames, accessLevelLabel) => {
|
||||||
|
@ -573,96 +574,33 @@ Cypress.Commands.add(
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
Cypress.Commands.add("addRow", values => {
|
// NAVIGATION
|
||||||
cy.contains("Create row").click()
|
Cypress.Commands.add("navigateToFrontend", () => {
|
||||||
cy.get(".spectrum-Modal").within(() => {
|
// Clicks on Design tab and then the Home nav item
|
||||||
for (let i = 0; i < values.length; i++) {
|
cy.wait(1000)
|
||||||
cy.get("input").eq(i).type(values[i]).blur()
|
cy.contains("Design").click()
|
||||||
}
|
cy.get(".spectrum-Search").type("/")
|
||||||
cy.get(".spectrum-ButtonGroup").contains("Create").click()
|
cy.get(".nav-item").contains("home").click()
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
||||||
Cypress.Commands.add("expandBudibaseConnection", () => {
|
Cypress.Commands.add("navigateToDataSection", () => {
|
||||||
if (Cypress.$(".nav-item > .content > .opened").length === 0) {
|
// Clicks on the Data tab
|
||||||
// expand the Budibase DB connection string
|
|
||||||
cy.get(".icon.arrow").eq(0).click()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
Cypress.Commands.add("selectTable", tableName => {
|
|
||||||
cy.expandBudibaseConnection()
|
|
||||||
cy.contains(".nav-item", tableName).click()
|
|
||||||
})
|
|
||||||
|
|
||||||
Cypress.Commands.add("addCustomSourceOptions", totalOptions => {
|
|
||||||
cy.get(".spectrum-ActionButton")
|
|
||||||
.contains("Define Options")
|
|
||||||
.click()
|
|
||||||
.then(() => {
|
|
||||||
for (let i = 0; i < totalOptions; i++) {
|
|
||||||
// Add radio button options
|
|
||||||
cy.get(".spectrum-Button")
|
|
||||||
.contains("Add Option")
|
|
||||||
.click({ force: true })
|
|
||||||
.then(() => {
|
|
||||||
cy.wait(500)
|
cy.wait(500)
|
||||||
cy.get("[placeholder='Label']").eq(i).type(i)
|
cy.contains("Data").click()
|
||||||
cy.get("[placeholder='Value']").eq(i).type(i)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// Save options
|
|
||||||
cy.get(".spectrum-Button").contains("Save").click({ force: true })
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
||||||
//Filters visible with 1 or more
|
Cypress.Commands.add("navigateToAutogeneratedModal", () => {
|
||||||
Cypress.Commands.add("searchForApplication", appName => {
|
// Screen name must already exist within data source
|
||||||
cy.visit(`${Cypress.config().baseUrl}/builder`)
|
cy.contains("Design").click()
|
||||||
cy.wait(2000)
|
cy.get("[aria-label=AddCircle]").click()
|
||||||
|
|
||||||
// No app filter functionality if only 1 app exists
|
|
||||||
cy.request(`${Cypress.config().baseUrl}/api/applications?status=all`)
|
|
||||||
.its("body")
|
|
||||||
.then(val => {
|
|
||||||
if (val.length < 2) {
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
// Searches for the app
|
|
||||||
cy.get(".filter").then(() => {
|
|
||||||
cy.get(".spectrum-Textfield").within(() => {
|
|
||||||
cy.get("input").eq(0).clear()
|
|
||||||
cy.get("input").eq(0).type(appName)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
//Assumes there are no others
|
|
||||||
Cypress.Commands.add("applicationInAppTable", appName => {
|
|
||||||
cy.get(".appTable").within(() => {
|
|
||||||
cy.get(".title").contains(appName).should("exist")
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
Cypress.Commands.add("createAppFromScratch", appName => {
|
|
||||||
cy.get(`[data-cy="create-app-btn"]`)
|
|
||||||
.contains("Start from scratch")
|
|
||||||
.click({ force: true })
|
|
||||||
cy.get(".spectrum-Modal").within(() => {
|
cy.get(".spectrum-Modal").within(() => {
|
||||||
cy.get("input")
|
cy.get(".item").contains("Autogenerated screens").click()
|
||||||
.eq(0)
|
cy.get(".spectrum-Button").contains("Continue").click({ force: true })
|
||||||
.clear()
|
cy.wait(500)
|
||||||
.type(appName)
|
|
||||||
.should("have.value", appName)
|
|
||||||
.blur()
|
|
||||||
cy.get(".spectrum-ButtonGroup").contains("Create app").click()
|
|
||||||
cy.wait(10000)
|
|
||||||
})
|
})
|
||||||
cy.createTable("Cypress Tests", true)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// DATASOURCES
|
||||||
Cypress.Commands.add("selectExternalDatasource", datasourceName => {
|
Cypress.Commands.add("selectExternalDatasource", datasourceName => {
|
||||||
// Navigates to Data Section
|
// Navigates to Data Section
|
||||||
cy.navigateToDataSection()
|
cy.navigateToDataSection()
|
||||||
|
@ -798,3 +736,18 @@ Cypress.Commands.add("createRestQuery", (method, restUrl, queryPrettyName) => {
|
||||||
.should("contain", method)
|
.should("contain", method)
|
||||||
.and("contain", queryPrettyName)
|
.and("contain", queryPrettyName)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// MISC
|
||||||
|
Cypress.Commands.add("closeModal", () => {
|
||||||
|
cy.get(".spectrum-Modal").within(() => {
|
||||||
|
cy.get(".close-icon").click()
|
||||||
|
cy.wait(1000) // Wait for modal to close
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
Cypress.Commands.add("expandBudibaseConnection", () => {
|
||||||
|
if (Cypress.$(".nav-item > .content > .opened").length === 0) {
|
||||||
|
// expand the Budibase DB connection string
|
||||||
|
cy.get(".icon.arrow").eq(0).click()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
|
@ -26,6 +26,7 @@ export const SPECTRUM_POPOVER = ".spectrum-Popover"
|
||||||
export const OPTION_SOURCE_PROP_CONROL = '[data-cy="optionsSource-prop-control'
|
export const OPTION_SOURCE_PROP_CONROL = '[data-cy="optionsSource-prop-control'
|
||||||
export const APP_TABLE_STATUS = ".appTable .app-status"
|
export const APP_TABLE_STATUS = ".appTable .app-status"
|
||||||
export const APP_TABLE_ROW_ACTION = ".appTable .app-row-actions"
|
export const APP_TABLE_ROW_ACTION = ".appTable .app-row-actions"
|
||||||
|
export const APP_TABLE_APP_NAME = '[data-cy="app-name-link"]'
|
||||||
export const DEPLOYMENT_TOP_NAV_GLOBESTRIKE =
|
export const DEPLOYMENT_TOP_NAV_GLOBESTRIKE =
|
||||||
".deployment-top-nav svg[aria-label=GlobeStrike]"
|
".deployment-top-nav svg[aria-label=GlobeStrike]"
|
||||||
export const DEPLOYMENT_TOP_GLOBE = ".deployment-top-nav svg[aria-label=Globe]"
|
export const DEPLOYMENT_TOP_GLOBE = ".deployment-top-nav svg[aria-label=Globe]"
|
||||||
|
@ -33,13 +34,14 @@ export const PUBLISH_POPOVER_MENU = '[data-cy="publish-popover-menu"]'
|
||||||
export const PUBLISH_POPOVER_ACTION = '[data-cy="publish-popover-action"]'
|
export const PUBLISH_POPOVER_ACTION = '[data-cy="publish-popover-action"]'
|
||||||
export const PUBLISH_POPOVER_MESSAGE = ".publish-popover-message"
|
export const PUBLISH_POPOVER_MESSAGE = ".publish-popover-message"
|
||||||
export const SPECTRUM_BUTTON = ".spectrum-Button"
|
export const SPECTRUM_BUTTON = ".spectrum-Button"
|
||||||
|
export const SPECTRUM_LINK = ".spectrum-Link"
|
||||||
export const TOPRIGHTNAV_BUTTON_SPECTRUM = ".toprightnav button.spectrum-Button"
|
export const TOPRIGHTNAV_BUTTON_SPECTRUM = ".toprightnav button.spectrum-Button"
|
||||||
|
|
||||||
//createComponents
|
//createComponents
|
||||||
export const SETTINGS = "[data-cy=Settings]"
|
export const SETTINGS = "[data-cy=Settings]"
|
||||||
export const SETTINGS_INPUT = "[data-cy=setting-text] input"
|
export const SETTINGS_INPUT = "[data-cy=setting-text] input"
|
||||||
export const DESIGN = "[data-cy=Design]"
|
export const DESIGN = "[data-cy=Design]"
|
||||||
export const FONT_SIZE_PROP_CONTRO = "[data-cy=font-size-prop-control]"
|
export const FONT_SIZE_PROP_CONTROL = "[data-cy=font-size-prop-control]"
|
||||||
export const DATA_CY_DATASOURCE = "[data-cy=setting-dataSource]"
|
export const DATA_CY_DATASOURCE = "[data-cy=setting-dataSource]"
|
||||||
export const DROPDOWN_CONTAINER = ".dropdown-container"
|
export const DROPDOWN_CONTAINER = ".dropdown-container"
|
||||||
export const SPECTRUM_PICKER = ".spectrum-Picker"
|
export const SPECTRUM_PICKER = ".spectrum-Picker"
|
||||||
|
@ -53,6 +55,8 @@ export const NAV_ITEMS_CONTAINER = ".nav-items-container"
|
||||||
|
|
||||||
//publishWorkFlow
|
//publishWorkFlow
|
||||||
export const DEPLOY_APP_MODAL = ".spectrum-Modal [data-cy=deploy-app-modal]"
|
export const DEPLOY_APP_MODAL = ".spectrum-Modal [data-cy=deploy-app-modal]"
|
||||||
|
export const DEPLOY_SUCCESS_MODAL =
|
||||||
|
".spectrum-Modal [data-cy=deploy-app-success-modal]"
|
||||||
export const DEPLOY_APP_URL_INPUT = "[data-cy=deployed-app-url] input"
|
export const DEPLOY_APP_URL_INPUT = "[data-cy=deployed-app-url] input"
|
||||||
export const GLOBESTRIKE = "svg[aria-label=GlobeStrike]"
|
export const GLOBESTRIKE = "svg[aria-label=GlobeStrike]"
|
||||||
export const GLOBE = "svg[aria-label=Globe]"
|
export const GLOBE = "svg[aria-label=Globe]"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/builder",
|
"name": "@budibase/builder",
|
||||||
"version": "1.0.191-alpha.0",
|
"version": "1.0.192-alpha.5",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -69,10 +69,10 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@budibase/bbui": "^1.0.191-alpha.0",
|
"@budibase/bbui": "^1.0.192-alpha.5",
|
||||||
"@budibase/client": "^1.0.191-alpha.0",
|
"@budibase/client": "^1.0.192-alpha.5",
|
||||||
"@budibase/frontend-core": "^1.0.191-alpha.0",
|
"@budibase/frontend-core": "^1.0.192-alpha.5",
|
||||||
"@budibase/string-templates": "^1.0.191-alpha.0",
|
"@budibase/string-templates": "^1.0.192-alpha.5",
|
||||||
"@sentry/browser": "5.19.1",
|
"@sentry/browser": "5.19.1",
|
||||||
"@spectrum-css/page": "^3.0.1",
|
"@spectrum-css/page": "^3.0.1",
|
||||||
"@spectrum-css/vars": "^3.0.1",
|
"@spectrum-css/vars": "^3.0.1",
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
<script>
|
||||||
|
export let width = "100"
|
||||||
|
export let height = "100"
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svg
|
||||||
|
{width}
|
||||||
|
{height}
|
||||||
|
viewBox="-2 -2 48 48"
|
||||||
|
fill="none"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
>
|
||||||
|
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<g
|
||||||
|
id="Group"
|
||||||
|
transform="translate(-0.002027, 0.531250)"
|
||||||
|
fill="#29B5E8"
|
||||||
|
fill-rule="nonzero"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M37.2637465,33.128906 L28.0879655,27.828125 C26.7989025,27.085938 25.1504655,27.527344 24.4043715,28.816406 C24.1153085,29.324219 24.0020275,29.882812 24.0567155,30.425781 L24.0567155,40.785156 C24.0567155,42.265625 25.2598395,43.46875 26.7442155,43.46875 C28.2246835,43.46875 29.4278085,42.265625 29.4278085,40.785156 L29.4278085,34.828125 L34.5684335,37.796875 C35.8574965,38.542969 37.5098395,38.097656 38.2520275,36.808594 C38.9981215,35.519531 38.5567155,33.871094 37.2637465,33.128906"
|
||||||
|
id="Path"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M14.4434335,21.769531 C14.4590585,20.8125 13.9551525,19.921875 13.1270275,19.441406 L3.95124649,14.144531 C3.55280849,13.914062 3.09577749,13.792969 2.63874649,13.792969 C1.69733949,13.792969 0.822339495,14.296875 0.353589495,15.109375 C-0.372972505,16.367188 0.060621495,17.980469 1.31843349,18.707031 L6.60749649,21.757812 L1.31843349,24.8125 C0.709058495,25.164062 0.271558495,25.730469 0.091871495,26.410156 C-0.091722505,27.089844 0.00202749496,27.800781 0.353589495,28.410156 C0.822339495,29.222656 1.69733949,29.726562 2.63483949,29.726562 C3.09577749,29.726562 3.55280849,29.605469 3.95124649,29.375 L13.1270275,24.078125 C13.9473395,23.601562 14.4512465,22.71875 14.4434335,21.769531"
|
||||||
|
id="Path2"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M6.03327749,10.390625 L15.2090585,15.6875 C16.2793715,16.308594 17.5996835,16.105469 18.4434335,15.28125 C18.9785895,14.789062 19.3106215,14.085938 19.3106215,13.304688 L19.3106215,2.6875 C19.3106215,1.203125 18.1074965,0 16.6270275,0 C15.1426525,0 13.9395275,1.203125 13.9395275,2.6875 L13.9395275,8.730469 L8.72858949,5.722656 C7.43952749,4.976562 5.79108949,5.417969 5.04499649,6.707031 C4.29890249,7.996094 4.74421549,9.644531 6.03327749,10.390625"
|
||||||
|
id="Path3"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M26.6660895,22.199219 C26.6660895,22.402344 26.5489025,22.683594 26.4043715,22.832031 L22.7676525,26.46875 C22.6231215,26.613281 22.3379655,26.730469 22.1348395,26.730469 L21.2090585,26.730469 C21.0059335,26.730469 20.7207775,26.613281 20.5762465,26.46875 L16.9356215,22.832031 C16.7910895,22.683594 16.6739025,22.402344 16.6739025,22.199219 L16.6739025,21.273438 C16.6739025,21.066406 16.7910895,20.785156 16.9356215,20.640625 L20.5762465,17 C20.7207775,16.855469 21.0059335,16.738281 21.2090585,16.738281 L22.1348395,16.738281 C22.3379655,16.738281 22.6231215,16.855469 22.7676525,17 L26.4043715,20.640625 C26.5489025,20.785156 26.6660895,21.066406 26.6660895,21.273438 L26.6660895,22.199219 Z M23.4199965,21.753906 L23.4199965,21.714844 C23.4199965,21.566406 23.3340585,21.359375 23.2285895,21.25 L22.1543715,20.179688 C22.0489025,20.070312 21.8418715,19.984375 21.6895275,19.984375 L21.6504655,19.984375 C21.5020275,19.984375 21.2949965,20.070312 21.1856215,20.179688 L20.1153085,21.25 C20.0098395,21.355469 19.9239025,21.5625 19.9239025,21.714844 L19.9239025,21.753906 C19.9239025,21.90625 20.0098395,22.113281 20.1153085,22.21875 L21.1856215,23.292969 C21.2949965,23.398438 21.5020275,23.484375 21.6504655,23.484375 L21.6895275,23.484375 C21.8418715,23.484375 22.0489025,23.398438 22.1543715,23.292969 L23.2285895,22.21875 C23.3340585,22.113281 23.4199965,21.90625 23.4199965,21.753906 Z"
|
||||||
|
id="Combined-Shape"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M28.0879655,15.6875 L37.2637465,10.390625 C38.5528085,9.648438 38.9981215,7.996094 38.2520275,6.707031 C37.5059335,5.417969 35.8574965,4.976562 34.5684335,5.722656 L29.4278085,8.691406 L29.4278085,2.6875 C29.4278085,1.203125 28.2246835,-5.68434189e-14 26.7442155,-5.68434189e-14 C25.2598395,-5.68434189e-14 24.0567155,1.203125 24.0567155,2.6875 L24.0567155,13.09375 C24.0059335,13.632812 24.1114025,14.195312 24.4043715,14.703125 C25.1504655,15.992188 26.7989025,16.433594 28.0879655,15.6875"
|
||||||
|
id="Path4"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M17.0489025,27.515625 C16.4395275,27.398438 15.7871835,27.496094 15.2090585,27.828125 L6.03327749,33.128906 C4.74421549,33.871094 4.29890249,35.519531 5.04499649,36.808594 C5.79108949,38.101562 7.43952749,38.542969 8.72858949,37.796875 L13.9395275,34.789062 L13.9395275,40.785156 C13.9395275,42.265625 15.1426525,43.46875 16.6270275,43.46875 C18.1074965,43.46875 19.3106215,42.265625 19.3106215,40.785156 L19.3106215,30.167969 C19.3106215,28.828125 18.3301525,27.71875 17.0489025,27.515625"
|
||||||
|
id="Path5"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M42.9981215,15.078125 C42.2559335,13.785156 40.6035895,13.34375 39.3145275,14.089844 L30.1387465,19.386719 C29.2598395,19.894531 28.7754655,20.824219 28.7910895,21.769531 C28.7832775,22.710938 29.2676525,23.628906 30.1387465,24.128906 L39.3145275,29.429688 C40.6035895,30.171875 42.2520275,29.730469 42.9981215,28.441406 C43.7442155,27.152344 43.2989025,25.503906 42.0098395,24.757812 L36.8145275,21.757812 L42.0098395,18.757812 C43.3028085,18.015625 43.7442155,16.367188 42.9981215,15.078125"
|
||||||
|
id="Path6"
|
||||||
|
/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
|
@ -14,6 +14,7 @@ import Oracle from "./Oracle.svelte"
|
||||||
import GoogleSheets from "./GoogleSheets.svelte"
|
import GoogleSheets from "./GoogleSheets.svelte"
|
||||||
import Firebase from "./Firebase.svelte"
|
import Firebase from "./Firebase.svelte"
|
||||||
import Redis from "./Redis.svelte"
|
import Redis from "./Redis.svelte"
|
||||||
|
import Snowflake from "./Snowflake.svelte"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
BUDIBASE: Budibase,
|
BUDIBASE: Budibase,
|
||||||
|
@ -32,4 +33,5 @@ export default {
|
||||||
GOOGLE_SHEETS: GoogleSheets,
|
GOOGLE_SHEETS: GoogleSheets,
|
||||||
FIREBASE: Firebase,
|
FIREBASE: Firebase,
|
||||||
REDIS: Redis,
|
REDIS: Redis,
|
||||||
|
SNOWFLAKE: Snowflake,
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,7 +101,7 @@
|
||||||
confirmText="Done"
|
confirmText="Done"
|
||||||
cancelText="View App"
|
cancelText="View App"
|
||||||
onCancel={viewApp}
|
onCancel={viewApp}
|
||||||
dataCy={"deploy-app-success-modal"}
|
dataCy="deploy-app-success-modal"
|
||||||
>
|
>
|
||||||
<div slot="header" class="app-published-header">
|
<div slot="header" class="app-published-header">
|
||||||
<svg
|
<svg
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
<div class="app-icon" style="color: {app.icon?.color || ''}">
|
<div class="app-icon" style="color: {app.icon?.color || ''}">
|
||||||
<Icon size="XL" name={app.icon?.name || "Apps"} />
|
<Icon size="XL" name={app.icon?.name || "Apps"} />
|
||||||
</div>
|
</div>
|
||||||
<div class="name" on:click={() => appOverview(app)}>
|
<div class="name" data-cy="app-name-link" on:click={() => appOverview(app)}>
|
||||||
<Heading size="XS">
|
<Heading size="XS">
|
||||||
{app.name}
|
{app.name}
|
||||||
</Heading>
|
</Heading>
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
<script>
|
||||||
|
import { ModalContent, Toggle } from "@budibase/bbui"
|
||||||
|
|
||||||
|
export let app
|
||||||
|
let excludeRows = false
|
||||||
|
|
||||||
|
const exportApp = () => {
|
||||||
|
const id = app.deployed ? app.prodId : app.devId
|
||||||
|
const appName = encodeURIComponent(app.name)
|
||||||
|
window.location = `/api/backups/export?appId=${id}&appname=${appName}&excludeRows=${excludeRows}`
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<ModalContent title={"Export"} confirmText={"Export"} onConfirm={exportApp}>
|
||||||
|
<Toggle text="Exclude Rows" bind:value={excludeRows} />
|
||||||
|
</ModalContent>
|
|
@ -184,6 +184,7 @@ export const IntegrationTypes = {
|
||||||
GOOGLE_SHEETS: "GOOGLE_SHEETS",
|
GOOGLE_SHEETS: "GOOGLE_SHEETS",
|
||||||
FIREBASE: "FIREBASE",
|
FIREBASE: "FIREBASE",
|
||||||
REDIS: "REDIS",
|
REDIS: "REDIS",
|
||||||
|
SNOWFLAKE: "SNOWFLAKE",
|
||||||
}
|
}
|
||||||
|
|
||||||
export const IntegrationNames = {
|
export const IntegrationNames = {
|
||||||
|
@ -203,6 +204,7 @@ export const IntegrationNames = {
|
||||||
[IntegrationTypes.GOOGLE_SHEETS]: "Google Sheets",
|
[IntegrationTypes.GOOGLE_SHEETS]: "Google Sheets",
|
||||||
[IntegrationTypes.FIREBASE]: "Firebase",
|
[IntegrationTypes.FIREBASE]: "Firebase",
|
||||||
[IntegrationTypes.REDIS]: "Redis",
|
[IntegrationTypes.REDIS]: "Redis",
|
||||||
|
[IntegrationTypes.SNOWFLAKE]: "Snowflake",
|
||||||
}
|
}
|
||||||
|
|
||||||
export const SchemaTypeOptions = [
|
export const SchemaTypeOptions = [
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
import CreateAppModal from "components/start/CreateAppModal.svelte"
|
import CreateAppModal from "components/start/CreateAppModal.svelte"
|
||||||
import UpdateAppModal from "components/start/UpdateAppModal.svelte"
|
import UpdateAppModal from "components/start/UpdateAppModal.svelte"
|
||||||
import ChooseIconModal from "components/start/ChooseIconModal.svelte"
|
import ChooseIconModal from "components/start/ChooseIconModal.svelte"
|
||||||
|
import ExportAppModal from "components/start/ExportAppModal.svelte"
|
||||||
|
|
||||||
import { store, automationStore } from "builderStore"
|
import { store, automationStore } from "builderStore"
|
||||||
import { API } from "api"
|
import { API } from "api"
|
||||||
|
@ -37,6 +38,7 @@
|
||||||
let updatingModal
|
let updatingModal
|
||||||
let deletionModal
|
let deletionModal
|
||||||
let unpublishModal
|
let unpublishModal
|
||||||
|
let exportModal
|
||||||
let iconModal
|
let iconModal
|
||||||
let creatingApp = false
|
let creatingApp = false
|
||||||
let loaded = $apps?.length || $templates?.length
|
let loaded = $apps?.length || $templates?.length
|
||||||
|
@ -200,9 +202,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
const exportApp = app => {
|
const exportApp = app => {
|
||||||
const id = app.deployed ? app.prodId : app.devId
|
exportModal.show()
|
||||||
const appName = encodeURIComponent(app.name)
|
selectedApp = app
|
||||||
window.location = `/api/backups/export?appId=${id}&appname=${appName}`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const unpublishApp = app => {
|
const unpublishApp = app => {
|
||||||
|
@ -457,6 +458,10 @@
|
||||||
<UpdateAppModal app={selectedApp} />
|
<UpdateAppModal app={selectedApp} />
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|
||||||
|
<Modal bind:this={exportModal} padding={false} width="600px">
|
||||||
|
<ExportAppModal app={selectedApp} />
|
||||||
|
</Modal>
|
||||||
|
|
||||||
<ConfirmDialog
|
<ConfirmDialog
|
||||||
bind:this={deletionModal}
|
bind:this={deletionModal}
|
||||||
title="Confirm deletion"
|
title="Confirm deletion"
|
||||||
|
|
|
@ -273,12 +273,6 @@
|
||||||
Export
|
Export
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
{#if isPublished}
|
{#if isPublished}
|
||||||
<MenuItem
|
|
||||||
on:click={() => unpublishApp(selectedApp)}
|
|
||||||
icon="GlobeRemove"
|
|
||||||
>
|
|
||||||
Unpublish
|
|
||||||
</MenuItem>
|
|
||||||
<MenuItem on:click={() => copyAppId(selectedApp)} icon="Copy">
|
<MenuItem on:click={() => copyAppId(selectedApp)} icon="Copy">
|
||||||
Copy App ID
|
Copy App ID
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
|
@ -305,6 +299,7 @@
|
||||||
app={selectedApp}
|
app={selectedApp}
|
||||||
deployments={latestDeployments}
|
deployments={latestDeployments}
|
||||||
navigateTab={handleTabChange}
|
navigateTab={handleTabChange}
|
||||||
|
on:unpublish={e => unpublishApp(e.detail)}
|
||||||
/>
|
/>
|
||||||
</Tab>
|
</Tab>
|
||||||
{#if false}
|
{#if false}
|
||||||
|
|
|
@ -13,10 +13,12 @@
|
||||||
import clientPackage from "@budibase/client/package.json"
|
import clientPackage from "@budibase/client/package.json"
|
||||||
import { processStringSync } from "@budibase/string-templates"
|
import { processStringSync } from "@budibase/string-templates"
|
||||||
import { users, auth } from "stores/portal"
|
import { users, auth } from "stores/portal"
|
||||||
|
import { createEventDispatcher } from "svelte"
|
||||||
|
|
||||||
export let app
|
export let app
|
||||||
export let deployments
|
export let deployments
|
||||||
export let navigateTab
|
export let navigateTab
|
||||||
|
const dispatch = createEventDispatcher()
|
||||||
|
|
||||||
const userInit = async () => {
|
const userInit = async () => {
|
||||||
try {
|
try {
|
||||||
|
@ -26,6 +28,10 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const unpublishApp = () => {
|
||||||
|
dispatch("unpublish", app)
|
||||||
|
}
|
||||||
|
|
||||||
let userPromise = userInit()
|
let userPromise = userInit()
|
||||||
|
|
||||||
$: updateAvailable = clientPackage.version !== $store.version
|
$: updateAvailable = clientPackage.version !== $store.version
|
||||||
|
@ -72,6 +78,9 @@
|
||||||
new Date(deployments[0].updatedAt).getTime(),
|
new Date(deployments[0].updatedAt).getTime(),
|
||||||
}
|
}
|
||||||
)}
|
)}
|
||||||
|
{#if isPublished}
|
||||||
|
- <Link on:click={unpublishApp}>Unpublish</Link>
|
||||||
|
{/if}
|
||||||
{/if}
|
{/if}
|
||||||
{#if !deployments?.length}
|
{#if !deployments?.length}
|
||||||
-
|
-
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/cli",
|
"name": "@budibase/cli",
|
||||||
"version": "1.0.191-alpha.0",
|
"version": "1.0.192-alpha.5",
|
||||||
"description": "Budibase CLI, for developers, self hosting and migrations.",
|
"description": "Budibase CLI, for developers, self hosting and migrations.",
|
||||||
"main": "src/index.js",
|
"main": "src/index.js",
|
||||||
"bin": {
|
"bin": {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/client",
|
"name": "@budibase/client",
|
||||||
"version": "1.0.191-alpha.0",
|
"version": "1.0.192-alpha.5",
|
||||||
"license": "MPL-2.0",
|
"license": "MPL-2.0",
|
||||||
"module": "dist/budibase-client.js",
|
"module": "dist/budibase-client.js",
|
||||||
"main": "dist/budibase-client.js",
|
"main": "dist/budibase-client.js",
|
||||||
|
@ -19,9 +19,9 @@
|
||||||
"dev:builder": "rollup -cw"
|
"dev:builder": "rollup -cw"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@budibase/bbui": "^1.0.191-alpha.0",
|
"@budibase/bbui": "^1.0.192-alpha.5",
|
||||||
"@budibase/frontend-core": "^1.0.191-alpha.0",
|
"@budibase/frontend-core": "^1.0.192-alpha.5",
|
||||||
"@budibase/string-templates": "^1.0.191-alpha.0",
|
"@budibase/string-templates": "^1.0.192-alpha.5",
|
||||||
"@spectrum-css/button": "^3.0.3",
|
"@spectrum-css/button": "^3.0.3",
|
||||||
"@spectrum-css/card": "^3.0.3",
|
"@spectrum-css/card": "^3.0.3",
|
||||||
"@spectrum-css/divider": "^1.0.3",
|
"@spectrum-css/divider": "^1.0.3",
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/frontend-core",
|
"name": "@budibase/frontend-core",
|
||||||
"version": "1.0.191-alpha.0",
|
"version": "1.0.192-alpha.5",
|
||||||
"description": "Budibase frontend core libraries used in builder and client",
|
"description": "Budibase frontend core libraries used in builder and client",
|
||||||
"author": "Budibase",
|
"author": "Budibase",
|
||||||
"license": "MPL-2.0",
|
"license": "MPL-2.0",
|
||||||
"svelte": "src/index.js",
|
"svelte": "src/index.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@budibase/bbui": "^1.0.191-alpha.0",
|
"@budibase/bbui": "^1.0.192-alpha.5",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"svelte": "^3.46.2"
|
"svelte": "^3.46.2"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/server",
|
"name": "@budibase/server",
|
||||||
"email": "hi@budibase.com",
|
"email": "hi@budibase.com",
|
||||||
"version": "1.0.191-alpha.0",
|
"version": "1.0.192-alpha.5",
|
||||||
"description": "Budibase Web Server",
|
"description": "Budibase Web Server",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
@ -70,10 +70,10 @@
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@apidevtools/swagger-parser": "^10.0.3",
|
"@apidevtools/swagger-parser": "^10.0.3",
|
||||||
"@budibase/backend-core": "^1.0.191-alpha.0",
|
"@budibase/backend-core": "^1.0.192-alpha.5",
|
||||||
"@budibase/client": "^1.0.191-alpha.0",
|
"@budibase/client": "^1.0.192-alpha.5",
|
||||||
"@budibase/pro": "1.0.191-alpha.0",
|
"@budibase/pro": "1.0.192-alpha.5",
|
||||||
"@budibase/string-templates": "^1.0.191-alpha.0",
|
"@budibase/string-templates": "^1.0.192-alpha.5",
|
||||||
"@bull-board/api": "^3.7.0",
|
"@bull-board/api": "^3.7.0",
|
||||||
"@bull-board/koa": "^3.7.0",
|
"@bull-board/koa": "^3.7.0",
|
||||||
"@elastic/elasticsearch": "7.10.0",
|
"@elastic/elasticsearch": "7.10.0",
|
||||||
|
@ -130,6 +130,7 @@
|
||||||
"pouchdb-replication-stream": "1.2.9",
|
"pouchdb-replication-stream": "1.2.9",
|
||||||
"redis": "4",
|
"redis": "4",
|
||||||
"server-destroy": "1.0.1",
|
"server-destroy": "1.0.1",
|
||||||
|
"snowflake-promise": "^4.5.0",
|
||||||
"svelte": "^3.38.2",
|
"svelte": "^3.38.2",
|
||||||
"swagger-parser": "^10.0.3",
|
"swagger-parser": "^10.0.3",
|
||||||
"to-json-schema": "0.2.5",
|
"to-json-schema": "0.2.5",
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
const { streamBackup } = require("../../utilities/fileSystem")
|
const { streamBackup } = require("../../utilities/fileSystem")
|
||||||
|
|
||||||
exports.exportAppDump = async function (ctx) {
|
exports.exportAppDump = async function (ctx) {
|
||||||
const { appId } = ctx.query
|
let { appId, excludeRows } = ctx.query
|
||||||
const appName = decodeURI(ctx.query.appname)
|
const appName = decodeURI(ctx.query.appname)
|
||||||
|
excludeRows = excludeRows === "true"
|
||||||
const backupIdentifier = `${appName}-export-${new Date().getTime()}.txt`
|
const backupIdentifier = `${appName}-export-${new Date().getTime()}.txt`
|
||||||
ctx.attachment(backupIdentifier)
|
ctx.attachment(backupIdentifier)
|
||||||
ctx.body = await streamBackup(appId)
|
|
||||||
|
ctx.body = await streamBackup(appId, excludeRows)
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,6 +64,9 @@ exports.validate = async ({ tableId, row, table }) => {
|
||||||
// Validate.js doesn't seem to handle array
|
// Validate.js doesn't seem to handle array
|
||||||
if (type === FieldTypes.ARRAY && row[fieldName]) {
|
if (type === FieldTypes.ARRAY && row[fieldName]) {
|
||||||
if (row[fieldName].length) {
|
if (row[fieldName].length) {
|
||||||
|
if (!Array.isArray(row[fieldName])) {
|
||||||
|
row[fieldName] = row[fieldName].split(",")
|
||||||
|
}
|
||||||
row[fieldName].map(val => {
|
row[fieldName].map(val => {
|
||||||
if (
|
if (
|
||||||
!constraints.inclusion.includes(val) &&
|
!constraints.inclusion.includes(val) &&
|
||||||
|
|
|
@ -74,6 +74,7 @@ exports.isDevAppID = isDevAppID
|
||||||
exports.isProdAppID = isProdAppID
|
exports.isProdAppID = isProdAppID
|
||||||
exports.USER_METDATA_PREFIX = `${DocumentTypes.ROW}${SEPARATOR}${InternalTables.USER_METADATA}${SEPARATOR}`
|
exports.USER_METDATA_PREFIX = `${DocumentTypes.ROW}${SEPARATOR}${InternalTables.USER_METADATA}${SEPARATOR}`
|
||||||
exports.LINK_USER_METADATA_PREFIX = `${DocumentTypes.LINK}${SEPARATOR}${InternalTables.USER_METADATA}${SEPARATOR}`
|
exports.LINK_USER_METADATA_PREFIX = `${DocumentTypes.LINK}${SEPARATOR}${InternalTables.USER_METADATA}${SEPARATOR}`
|
||||||
|
exports.TABLE_ROW_PREFIX = `${DocumentTypes.ROW}${SEPARATOR}${DocumentTypes.TABLE}`
|
||||||
exports.ViewNames = ViewNames
|
exports.ViewNames = ViewNames
|
||||||
exports.InternalTables = InternalTables
|
exports.InternalTables = InternalTables
|
||||||
exports.DocumentTypes = DocumentTypes
|
exports.DocumentTypes = DocumentTypes
|
||||||
|
|
|
@ -50,6 +50,7 @@ export enum SourceNames {
|
||||||
GOOGLE_SHEETS = "GOOGLE_SHEETS",
|
GOOGLE_SHEETS = "GOOGLE_SHEETS",
|
||||||
FIREBASE = "FIREBASE",
|
FIREBASE = "FIREBASE",
|
||||||
REDIS = "REDIS",
|
REDIS = "REDIS",
|
||||||
|
SNOWFLAKE = "SNOWFLAKE",
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum IncludeRelationships {
|
export enum IncludeRelationships {
|
||||||
|
|
|
@ -12,6 +12,7 @@ const rest = require("./rest")
|
||||||
const googlesheets = require("./googlesheets")
|
const googlesheets = require("./googlesheets")
|
||||||
const firebase = require("./firebase")
|
const firebase = require("./firebase")
|
||||||
const redis = require("./redis")
|
const redis = require("./redis")
|
||||||
|
const snowflake = require("./snowflake")
|
||||||
const { SourceNames } = require("../definitions/datasource")
|
const { SourceNames } = require("../definitions/datasource")
|
||||||
const environment = require("../environment")
|
const environment = require("../environment")
|
||||||
|
|
||||||
|
@ -29,6 +30,7 @@ const DEFINITIONS = {
|
||||||
[SourceNames.REST]: rest.schema,
|
[SourceNames.REST]: rest.schema,
|
||||||
[SourceNames.FIREBASE]: firebase.schema,
|
[SourceNames.FIREBASE]: firebase.schema,
|
||||||
[SourceNames.REDIS]: redis.schema,
|
[SourceNames.REDIS]: redis.schema,
|
||||||
|
[SourceNames.SNOWFLAKE]: snowflake.schema,
|
||||||
}
|
}
|
||||||
|
|
||||||
const INTEGRATIONS = {
|
const INTEGRATIONS = {
|
||||||
|
@ -47,6 +49,7 @@ const INTEGRATIONS = {
|
||||||
[SourceNames.GOOGLE_SHEETS]: googlesheets.integration,
|
[SourceNames.GOOGLE_SHEETS]: googlesheets.integration,
|
||||||
[SourceNames.REDIS]: redis.integration,
|
[SourceNames.REDIS]: redis.integration,
|
||||||
[SourceNames.FIREBASE]: firebase.integration,
|
[SourceNames.FIREBASE]: firebase.integration,
|
||||||
|
[SourceNames.SNOWFLAKE]: snowflake.integration,
|
||||||
}
|
}
|
||||||
|
|
||||||
// optionally add oracle integration if the oracle binary can be installed
|
// optionally add oracle integration if the oracle binary can be installed
|
||||||
|
|
|
@ -0,0 +1,98 @@
|
||||||
|
import { Integration, QueryTypes, SqlQuery } from "../definitions/datasource"
|
||||||
|
import { Snowflake } from "snowflake-promise"
|
||||||
|
|
||||||
|
module SnowflakeModule {
|
||||||
|
interface SnowflakeConfig {
|
||||||
|
account: string
|
||||||
|
username: string
|
||||||
|
password: string
|
||||||
|
warehouse: string
|
||||||
|
database: string
|
||||||
|
schema: string
|
||||||
|
}
|
||||||
|
|
||||||
|
const SCHEMA: Integration = {
|
||||||
|
docs: "https://developers.snowflake.com/",
|
||||||
|
description:
|
||||||
|
"Snowflake is a solution for data warehousing, data lakes, data engineering, data science, data application development, and securely sharing and consuming shared data.",
|
||||||
|
friendlyName: "Snowflake",
|
||||||
|
datasource: {
|
||||||
|
account: {
|
||||||
|
type: "string",
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
username: {
|
||||||
|
type: "string",
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
password: {
|
||||||
|
type: "password",
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
warehouse: {
|
||||||
|
type: "string",
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
database: {
|
||||||
|
type: "string",
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
schema: {
|
||||||
|
type: "string",
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
query: {
|
||||||
|
create: {
|
||||||
|
type: QueryTypes.SQL,
|
||||||
|
},
|
||||||
|
read: {
|
||||||
|
type: QueryTypes.SQL,
|
||||||
|
},
|
||||||
|
update: {
|
||||||
|
type: QueryTypes.SQL,
|
||||||
|
},
|
||||||
|
delete: {
|
||||||
|
type: QueryTypes.SQL,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
class SnowflakeIntegration {
|
||||||
|
private client: Snowflake
|
||||||
|
|
||||||
|
constructor(config: SnowflakeConfig) {
|
||||||
|
this.client = new Snowflake(config)
|
||||||
|
}
|
||||||
|
|
||||||
|
async internalQuery(query: SqlQuery) {
|
||||||
|
await this.client.connect()
|
||||||
|
try {
|
||||||
|
return await this.client.execute(query.sql)
|
||||||
|
} catch (err: any) {
|
||||||
|
throw err?.message.split(":")[1] || err?.message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async create(query: SqlQuery) {
|
||||||
|
return this.internalQuery(query)
|
||||||
|
}
|
||||||
|
|
||||||
|
async read(query: SqlQuery) {
|
||||||
|
return this.internalQuery(query)
|
||||||
|
}
|
||||||
|
|
||||||
|
async update(query: SqlQuery) {
|
||||||
|
return this.internalQuery(query)
|
||||||
|
}
|
||||||
|
|
||||||
|
async delete(query: SqlQuery) {
|
||||||
|
return this.internalQuery(query)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
schema: SCHEMA,
|
||||||
|
integration: SnowflakeIntegration,
|
||||||
|
}
|
||||||
|
}
|
|
@ -21,6 +21,7 @@ const env = require("../../environment")
|
||||||
const {
|
const {
|
||||||
USER_METDATA_PREFIX,
|
USER_METDATA_PREFIX,
|
||||||
LINK_USER_METADATA_PREFIX,
|
LINK_USER_METADATA_PREFIX,
|
||||||
|
TABLE_ROW_PREFIX,
|
||||||
} = require("../../db/utils")
|
} = require("../../db/utils")
|
||||||
const MemoryStream = require("memorystream")
|
const MemoryStream = require("memorystream")
|
||||||
const { getAppId } = require("@budibase/backend-core/context")
|
const { getAppId } = require("@budibase/backend-core/context")
|
||||||
|
@ -109,6 +110,23 @@ exports.apiFileReturn = contents => {
|
||||||
return fs.createReadStream(path)
|
return fs.createReadStream(path)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
exports.defineFilter = excludeRows => {
|
||||||
|
if (excludeRows) {
|
||||||
|
return doc =>
|
||||||
|
!(
|
||||||
|
doc._id.includes(USER_METDATA_PREFIX) ||
|
||||||
|
doc._id.includes(LINK_USER_METADATA_PREFIX) ||
|
||||||
|
doc._id.includes(TABLE_ROW_PREFIX)
|
||||||
|
)
|
||||||
|
} else if (!excludeRows) {
|
||||||
|
return doc =>
|
||||||
|
!(
|
||||||
|
doc._id.includes(USER_METDATA_PREFIX) ||
|
||||||
|
doc._id.includes(LINK_USER_METADATA_PREFIX)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Local utility to back up the database state for an app, excluding global user
|
* Local utility to back up the database state for an app, excluding global user
|
||||||
* data or user relationships.
|
* data or user relationships.
|
||||||
|
@ -116,14 +134,10 @@ exports.apiFileReturn = contents => {
|
||||||
* @param {object} config Config to send to export DB
|
* @param {object} config Config to send to export DB
|
||||||
* @returns {*} either a string or a stream of the backup
|
* @returns {*} either a string or a stream of the backup
|
||||||
*/
|
*/
|
||||||
const backupAppData = async (appId, config) => {
|
const backupAppData = async (appId, config, includeRows) => {
|
||||||
return await exports.exportDB(appId, {
|
return await exports.exportDB(appId, {
|
||||||
...config,
|
...config,
|
||||||
filter: doc =>
|
filter: exports.defineFilter(includeRows),
|
||||||
!(
|
|
||||||
doc._id.includes(USER_METDATA_PREFIX) ||
|
|
||||||
doc._id.includes(LINK_USER_METADATA_PREFIX)
|
|
||||||
),
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,8 +156,8 @@ exports.performBackup = async (appId, backupName) => {
|
||||||
* @param {string} appId The ID of the app which is to be backed up.
|
* @param {string} appId The ID of the app which is to be backed up.
|
||||||
* @returns {*} a readable stream of the backup which is written in real time
|
* @returns {*} a readable stream of the backup which is written in real time
|
||||||
*/
|
*/
|
||||||
exports.streamBackup = async appId => {
|
exports.streamBackup = async (appId, includeRows) => {
|
||||||
return await backupAppData(appId, { stream: true })
|
return await backupAppData(appId, { stream: true }, includeRows)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -65,7 +65,7 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^2.0.0"
|
tslib "^2.0.0"
|
||||||
|
|
||||||
"@azure/core-auth@^1.1.4":
|
"@azure/core-auth@^1.1.4", "@azure/core-auth@^1.3.0":
|
||||||
version "1.3.2"
|
version "1.3.2"
|
||||||
resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.3.2.tgz#6a2c248576c26df365f6c7881ca04b7f6d08e3d0"
|
resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.3.2.tgz#6a2c248576c26df365f6c7881ca04b7f6d08e3d0"
|
||||||
integrity sha512-7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA==
|
integrity sha512-7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA==
|
||||||
|
@ -73,6 +73,58 @@
|
||||||
"@azure/abort-controller" "^1.0.0"
|
"@azure/abort-controller" "^1.0.0"
|
||||||
tslib "^2.2.0"
|
tslib "^2.2.0"
|
||||||
|
|
||||||
|
"@azure/core-http@^2.0.0":
|
||||||
|
version "2.2.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-2.2.5.tgz#e8cf8345d4a7f0ee7c8304a300c43d2df992ddbe"
|
||||||
|
integrity sha512-kctMqSQ6zfnlFpuYzfUKadeTyOQYbIQ+3Rj7dzVC3Dk1dOnHroTwR9hLYKX8/n85iJpkyaksaXpuh5L7GJRYuQ==
|
||||||
|
dependencies:
|
||||||
|
"@azure/abort-controller" "^1.0.0"
|
||||||
|
"@azure/core-auth" "^1.3.0"
|
||||||
|
"@azure/core-tracing" "1.0.0-preview.13"
|
||||||
|
"@azure/logger" "^1.0.0"
|
||||||
|
"@types/node-fetch" "^2.5.0"
|
||||||
|
"@types/tunnel" "^0.0.3"
|
||||||
|
form-data "^4.0.0"
|
||||||
|
node-fetch "^2.6.7"
|
||||||
|
process "^0.11.10"
|
||||||
|
tough-cookie "^4.0.0"
|
||||||
|
tslib "^2.2.0"
|
||||||
|
tunnel "^0.0.6"
|
||||||
|
uuid "^8.3.0"
|
||||||
|
xml2js "^0.4.19"
|
||||||
|
|
||||||
|
"@azure/core-lro@^2.2.0":
|
||||||
|
version "2.2.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@azure/core-lro/-/core-lro-2.2.4.tgz#42fbf4ae98093c59005206a4437ddcd057c57ca1"
|
||||||
|
integrity sha512-e1I2v2CZM0mQo8+RSix0x091Av493e4bnT22ds2fcQGslTHzM2oTbswkB65nP4iEpCxBrFxOSDPKExmTmjCVtQ==
|
||||||
|
dependencies:
|
||||||
|
"@azure/abort-controller" "^1.0.0"
|
||||||
|
"@azure/core-tracing" "1.0.0-preview.13"
|
||||||
|
"@azure/logger" "^1.0.0"
|
||||||
|
tslib "^2.2.0"
|
||||||
|
|
||||||
|
"@azure/core-paging@^1.1.1":
|
||||||
|
version "1.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@azure/core-paging/-/core-paging-1.3.0.tgz#ebf6520a931be7d5ff1cf58bc4fe6c14d6a3080d"
|
||||||
|
integrity sha512-H6Tg9eBm0brHqLy0OSAGzxIh1t4UL8eZVrSUMJ60Ra9cwq2pOskFqVpz2pYoHDsBY1jZ4V/P8LRGb5D5pmC6rg==
|
||||||
|
dependencies:
|
||||||
|
tslib "^2.2.0"
|
||||||
|
|
||||||
|
"@azure/core-tracing@1.0.0-preview.13":
|
||||||
|
version "1.0.0-preview.13"
|
||||||
|
resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz#55883d40ae2042f6f1e12b17dd0c0d34c536d644"
|
||||||
|
integrity sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==
|
||||||
|
dependencies:
|
||||||
|
"@opentelemetry/api" "^1.0.1"
|
||||||
|
tslib "^2.2.0"
|
||||||
|
|
||||||
|
"@azure/logger@^1.0.0":
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.3.tgz#6e36704aa51be7d4a1bae24731ea580836293c96"
|
||||||
|
integrity sha512-aK4s3Xxjrx3daZr3VylxejK3vG5ExXck5WOHDJ8in/k9AqlfIyFMMT1uG7u8mNjX+QRILTIn0/Xgschfh/dQ9g==
|
||||||
|
dependencies:
|
||||||
|
tslib "^2.2.0"
|
||||||
|
|
||||||
"@azure/ms-rest-azure-env@^2.0.0":
|
"@azure/ms-rest-azure-env@^2.0.0":
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@azure/ms-rest-azure-env/-/ms-rest-azure-env-2.0.0.tgz#45809f89763a480924e21d3c620cd40866771625"
|
resolved "https://registry.yarnpkg.com/@azure/ms-rest-azure-env/-/ms-rest-azure-env-2.0.0.tgz#45809f89763a480924e21d3c620cd40866771625"
|
||||||
|
@ -102,6 +154,20 @@
|
||||||
"@azure/ms-rest-js" "^2.0.4"
|
"@azure/ms-rest-js" "^2.0.4"
|
||||||
adal-node "^0.2.2"
|
adal-node "^0.2.2"
|
||||||
|
|
||||||
|
"@azure/storage-blob@^12.5.0":
|
||||||
|
version "12.10.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@azure/storage-blob/-/storage-blob-12.10.0.tgz#b92269f45a1765700a900b41ca81a474a6e36ea4"
|
||||||
|
integrity sha512-FBEPKGnvtQJS8V8Tg1P9obgmVD9AodrIfwtwhBpsjenClhFyugMp3HPJY0tF7rInUB/CivKBCbnQKrUnKxqxzw==
|
||||||
|
dependencies:
|
||||||
|
"@azure/abort-controller" "^1.0.0"
|
||||||
|
"@azure/core-http" "^2.0.0"
|
||||||
|
"@azure/core-lro" "^2.2.0"
|
||||||
|
"@azure/core-paging" "^1.1.1"
|
||||||
|
"@azure/core-tracing" "1.0.0-preview.13"
|
||||||
|
"@azure/logger" "^1.0.0"
|
||||||
|
events "^3.0.0"
|
||||||
|
tslib "^2.2.0"
|
||||||
|
|
||||||
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7":
|
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7":
|
||||||
version "7.16.7"
|
version "7.16.7"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789"
|
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789"
|
||||||
|
@ -1014,14 +1080,15 @@
|
||||||
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
||||||
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
||||||
|
|
||||||
"@budibase/backend-core@1.0.187":
|
"@budibase/backend-core@1.0.192-alpha.1":
|
||||||
version "1.0.187"
|
version "1.0.192-alpha.1"
|
||||||
resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.187.tgz#bf2d6de627185e5388d567762491334bc1d2d546"
|
resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.192-alpha.1.tgz#62ecb0afc4cc2cb48ac93dd15a812f6f3fe1a40c"
|
||||||
integrity sha512-C9FqOf+/SNNWk7bZU7PfnzDvXM5ntnZFgpX1bI/bfHH3xYGw6jOFB2BpoTaV2sQGq14wfmo9e9vNHqYIT9tPrg==
|
integrity sha512-2WzYIg12ZEOcCwdywqyC9ZrJlXqg8w4xI6T+ba7Fei1RACo0y4QfUoNN+Ik1NP+cpyagVf2HbpYr/yMZqdJYUA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@techpass/passport-openidconnect" "^0.3.0"
|
"@techpass/passport-openidconnect" "^0.3.0"
|
||||||
aws-sdk "^2.901.0"
|
aws-sdk "^2.901.0"
|
||||||
bcrypt "^5.0.1"
|
bcrypt "^5.0.1"
|
||||||
|
dotenv "^16.0.1"
|
||||||
emitter-listener "^1.1.2"
|
emitter-listener "^1.1.2"
|
||||||
ioredis "^4.27.1"
|
ioredis "^4.27.1"
|
||||||
jsonwebtoken "^8.5.1"
|
jsonwebtoken "^8.5.1"
|
||||||
|
@ -1091,12 +1158,12 @@
|
||||||
svelte-flatpickr "^3.2.3"
|
svelte-flatpickr "^3.2.3"
|
||||||
svelte-portal "^1.0.0"
|
svelte-portal "^1.0.0"
|
||||||
|
|
||||||
"@budibase/pro@1.0.187":
|
"@budibase/pro@1.0.192-alpha.1":
|
||||||
version "1.0.187"
|
version "1.0.192-alpha.1"
|
||||||
resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-1.0.187.tgz#40ed5e9809f924e5d0c7bbb7d09a602ea47dfe92"
|
resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-1.0.192-alpha.1.tgz#f3dece7ee153ac81080be9f96c7459e5dd8510ff"
|
||||||
integrity sha512-whEcWAcgkIL4EHgh08jp8itR37LZYlZxFLl0GYY5AOIguEScJ1FRe9WcYFNW0Pw768uaq7IE7hKkrAzWetzu4g==
|
integrity sha512-BRzoRTIcIW/o2bckSmOrOYCz5HPJyeq4PurfEZFHh16dXPXSBSTIuIiC7Q1jic2CBq5DJOfT/SYTgj/OTVga3g==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@budibase/backend-core" "1.0.187"
|
"@budibase/backend-core" "1.0.192-alpha.1"
|
||||||
node-fetch "^2.6.1"
|
node-fetch "^2.6.1"
|
||||||
|
|
||||||
"@budibase/standard-components@^0.9.139":
|
"@budibase/standard-components@^0.9.139":
|
||||||
|
@ -1962,6 +2029,11 @@
|
||||||
"@nodelib/fs.scandir" "2.1.5"
|
"@nodelib/fs.scandir" "2.1.5"
|
||||||
fastq "^1.6.0"
|
fastq "^1.6.0"
|
||||||
|
|
||||||
|
"@opentelemetry/api@^1.0.1":
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.1.0.tgz#563539048255bbe1a5f4f586a4a10a1bb737f44a"
|
||||||
|
integrity sha512-hf+3bwuBwtXsugA2ULBc95qxrOqP2pOekLz34BJhcAKawt94vfeNyUKpYc0lZQ/3sCP6LqRa7UAdHA7i5UODzQ==
|
||||||
|
|
||||||
"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
|
"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
|
resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
|
||||||
|
@ -2367,6 +2439,17 @@
|
||||||
request "^2.88.0"
|
request "^2.88.0"
|
||||||
webfinger "^0.4.2"
|
webfinger "^0.4.2"
|
||||||
|
|
||||||
|
"@techteamer/ocsp@1.0.0":
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@techteamer/ocsp/-/ocsp-1.0.0.tgz#7b82b02093fbe351e915bb37685ac1ac5a1233d3"
|
||||||
|
integrity sha512-lNAOoFHaZN+4huo30ukeqVrUmfC+avoEBYQ11QAnAw1PFhnI5oBCg8O/TNiCoEWix7gNGBIEjrQwtPREqKMPog==
|
||||||
|
dependencies:
|
||||||
|
asn1.js "^5.4.1"
|
||||||
|
asn1.js-rfc2560 "^5.0.1"
|
||||||
|
asn1.js-rfc5280 "^3.0.0"
|
||||||
|
async "^3.2.1"
|
||||||
|
simple-lru-cache "^0.0.2"
|
||||||
|
|
||||||
"@tootallnate/once@1":
|
"@tootallnate/once@1":
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
|
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
|
||||||
|
@ -2681,6 +2764,14 @@
|
||||||
"@types/bson" "*"
|
"@types/bson" "*"
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
|
"@types/node-fetch@^2.5.0":
|
||||||
|
version "2.6.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975"
|
||||||
|
integrity sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==
|
||||||
|
dependencies:
|
||||||
|
"@types/node" "*"
|
||||||
|
form-data "^3.0.0"
|
||||||
|
|
||||||
"@types/node@*", "@types/node@>=13.13.4":
|
"@types/node@*", "@types/node@>=13.13.4":
|
||||||
version "17.0.18"
|
version "17.0.18"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.18.tgz#3b4fed5cfb58010e3a2be4b6e74615e4847f1074"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.18.tgz#3b4fed5cfb58010e3a2be4b6e74615e4847f1074"
|
||||||
|
@ -2792,6 +2883,13 @@
|
||||||
resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40"
|
resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40"
|
||||||
integrity sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg==
|
integrity sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg==
|
||||||
|
|
||||||
|
"@types/tunnel@^0.0.3":
|
||||||
|
version "0.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.3.tgz#f109e730b072b3136347561fc558c9358bb8c6e9"
|
||||||
|
integrity sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==
|
||||||
|
dependencies:
|
||||||
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/yargs-parser@*":
|
"@types/yargs-parser@*":
|
||||||
version "20.2.1"
|
version "20.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129"
|
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129"
|
||||||
|
@ -3159,7 +3257,7 @@ adal-node@^0.2.2:
|
||||||
uuid "^3.1.0"
|
uuid "^3.1.0"
|
||||||
xpath.js "~1.1.0"
|
xpath.js "~1.1.0"
|
||||||
|
|
||||||
agent-base@6:
|
agent-base@6, agent-base@^6.0.2:
|
||||||
version "6.0.2"
|
version "6.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
|
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
|
||||||
integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
|
integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
|
||||||
|
@ -3431,6 +3529,30 @@ asap@^2.0.3:
|
||||||
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
|
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
|
||||||
integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
|
integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
|
||||||
|
|
||||||
|
asn1.js-rfc2560@^5.0.0, asn1.js-rfc2560@^5.0.1:
|
||||||
|
version "5.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/asn1.js-rfc2560/-/asn1.js-rfc2560-5.0.1.tgz#cff99b903e714756b29503ad49de01c72f131e60"
|
||||||
|
integrity sha512-1PrVg6kuBziDN3PGFmRk3QrjpKvP9h/Hv5yMrFZvC1kpzP6dQRzf5BpKstANqHBkaOUmTpakJWhicTATOA/SbA==
|
||||||
|
dependencies:
|
||||||
|
asn1.js-rfc5280 "^3.0.0"
|
||||||
|
|
||||||
|
asn1.js-rfc5280@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/asn1.js-rfc5280/-/asn1.js-rfc5280-3.0.0.tgz#94e60498d5d4984b842d1a825485837574ccc902"
|
||||||
|
integrity sha512-Y2LZPOWeZ6qehv698ZgOGGCZXBQShObWnGthTrIFlIQjuV1gg2B8QOhWFRExq/MR1VnPpIIe7P9vX2vElxv+Pg==
|
||||||
|
dependencies:
|
||||||
|
asn1.js "^5.0.0"
|
||||||
|
|
||||||
|
asn1.js@^5.0.0, asn1.js@^5.4.1:
|
||||||
|
version "5.4.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07"
|
||||||
|
integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==
|
||||||
|
dependencies:
|
||||||
|
bn.js "^4.0.0"
|
||||||
|
inherits "^2.0.1"
|
||||||
|
minimalistic-assert "^1.0.0"
|
||||||
|
safer-buffer "^2.1.0"
|
||||||
|
|
||||||
asn1@~0.2.3:
|
asn1@~0.2.3:
|
||||||
version "0.2.6"
|
version "0.2.6"
|
||||||
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d"
|
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d"
|
||||||
|
@ -3475,7 +3597,7 @@ async@^2.6.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
lodash "^4.17.14"
|
lodash "^4.17.14"
|
||||||
|
|
||||||
async@^3.2.3:
|
async@^3.2.1, async@^3.2.3:
|
||||||
version "3.2.3"
|
version "3.2.3"
|
||||||
resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9"
|
resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9"
|
||||||
integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==
|
integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==
|
||||||
|
@ -3522,6 +3644,21 @@ aws-sdk@^2.767.0:
|
||||||
uuid "3.3.2"
|
uuid "3.3.2"
|
||||||
xml2js "0.4.19"
|
xml2js "0.4.19"
|
||||||
|
|
||||||
|
aws-sdk@^2.878.0:
|
||||||
|
version "2.1146.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1146.0.tgz#1b1983447baddbe7105b2ca238a3039c82155bab"
|
||||||
|
integrity sha512-lg83hvrK2oiJVnklUVMXIJkeYX2nlqhvxIFlZ2wfoaJyvdGsEcOUdZ/EMDgiS0V2jwGS8CtTUypcW/t2S6gdcQ==
|
||||||
|
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"
|
||||||
|
uuid "8.0.0"
|
||||||
|
xml2js "0.4.19"
|
||||||
|
|
||||||
aws-sdk@^2.901.0:
|
aws-sdk@^2.901.0:
|
||||||
version "2.1121.0"
|
version "2.1121.0"
|
||||||
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1121.0.tgz#381510f7216f1d177b01620612f60014fa48e562"
|
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1121.0.tgz#381510f7216f1d177b01620612f60014fa48e562"
|
||||||
|
@ -3569,6 +3706,14 @@ axios@^0.21.1, axios@^0.21.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
follow-redirects "^1.14.0"
|
follow-redirects "^1.14.0"
|
||||||
|
|
||||||
|
axios@^0.27.2:
|
||||||
|
version "0.27.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972"
|
||||||
|
integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==
|
||||||
|
dependencies:
|
||||||
|
follow-redirects "^1.14.9"
|
||||||
|
form-data "^4.0.0"
|
||||||
|
|
||||||
babel-jest@^24.9.0:
|
babel-jest@^24.9.0:
|
||||||
version "24.9.0"
|
version "24.9.0"
|
||||||
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54"
|
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54"
|
||||||
|
@ -3757,11 +3902,21 @@ bcryptjs@2.4.3:
|
||||||
resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb"
|
resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb"
|
||||||
integrity sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=
|
integrity sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=
|
||||||
|
|
||||||
|
big-integer@^1.6.43:
|
||||||
|
version "1.6.51"
|
||||||
|
resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686"
|
||||||
|
integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==
|
||||||
|
|
||||||
big.js@^5.2.2:
|
big.js@^5.2.2:
|
||||||
version "5.2.2"
|
version "5.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
|
resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
|
||||||
integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
|
integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
|
||||||
|
|
||||||
|
bignumber.js@^2.4.0:
|
||||||
|
version "2.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-2.4.0.tgz#838a992da9f9d737e0f4b2db0be62bb09dd0c5e8"
|
||||||
|
integrity sha512-uw4ra6Cv483Op/ebM0GBKKfxZlSmn6NgFRby5L3yGTlunLj53KQgndDlqy2WVFOwgvurocApYkSud0aO+mvrpQ==
|
||||||
|
|
||||||
bignumber.js@^9.0.0:
|
bignumber.js@^9.0.0:
|
||||||
version "9.0.2"
|
version "9.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673"
|
resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673"
|
||||||
|
@ -3772,6 +3927,11 @@ binary-extensions@^2.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
|
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
|
||||||
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
|
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
|
||||||
|
|
||||||
|
binascii@0.0.2:
|
||||||
|
version "0.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/binascii/-/binascii-0.0.2.tgz#a7f8a8801dbccf8b1756b743daa0fee9e2d9e0ee"
|
||||||
|
integrity sha512-rA2CrUl1+6yKrn+XgLs8Hdy18OER1UW146nM+ixzhQXDY+Bd3ySkyIJGwF2a4I45JwbvF1mDL/nWkqBwpOcdBA==
|
||||||
|
|
||||||
bindings@^1.5.0:
|
bindings@^1.5.0:
|
||||||
version "1.5.0"
|
version "1.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
|
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
|
||||||
|
@ -3821,6 +3981,11 @@ bmp-js@^0.1.0:
|
||||||
resolved "https://registry.yarnpkg.com/bmp-js/-/bmp-js-0.1.0.tgz#e05a63f796a6c1ff25f4771ec7adadc148c07233"
|
resolved "https://registry.yarnpkg.com/bmp-js/-/bmp-js-0.1.0.tgz#e05a63f796a6c1ff25f4771ec7adadc148c07233"
|
||||||
integrity sha1-4Fpj95amwf8l9Hcex62twUjAcjM=
|
integrity sha1-4Fpj95amwf8l9Hcex62twUjAcjM=
|
||||||
|
|
||||||
|
bn.js@^4.0.0:
|
||||||
|
version "4.12.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
|
||||||
|
integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
|
||||||
|
|
||||||
boolean@^3.0.1:
|
boolean@^3.0.1:
|
||||||
version "3.2.0"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b"
|
resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b"
|
||||||
|
@ -3888,6 +4053,11 @@ browser-process-hrtime@^1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
|
resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
|
||||||
integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
|
integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
|
||||||
|
|
||||||
|
browser-request@^0.3.3:
|
||||||
|
version "0.3.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/browser-request/-/browser-request-0.3.3.tgz#9ece5b5aca89a29932242e18bf933def9876cc17"
|
||||||
|
integrity sha512-YyNI4qJJ+piQG6MMEuo7J3Bzaqssufx04zpEKYfSrl/1Op59HWali9zMtBpXnkmqMcOuWJPZvudrm9wISmnCbg==
|
||||||
|
|
||||||
browser-resolve@^1.11.3:
|
browser-resolve@^1.11.3:
|
||||||
version "1.11.3"
|
version "1.11.3"
|
||||||
resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6"
|
resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6"
|
||||||
|
@ -4730,7 +4900,7 @@ debug@^2.2.0, debug@^2.3.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
ms "2.0.0"
|
ms "2.0.0"
|
||||||
|
|
||||||
debug@^3.1.0, debug@^3.2.7:
|
debug@^3.1.0, debug@^3.2.6, debug@^3.2.7:
|
||||||
version "3.2.7"
|
version "3.2.7"
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
|
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
|
||||||
integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
|
integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
|
||||||
|
@ -5046,6 +5216,11 @@ dotenv@8.2.0:
|
||||||
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a"
|
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a"
|
||||||
integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==
|
integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==
|
||||||
|
|
||||||
|
dotenv@^16.0.1:
|
||||||
|
version "16.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d"
|
||||||
|
integrity sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==
|
||||||
|
|
||||||
dotenv@^8.2.0:
|
dotenv@^8.2.0:
|
||||||
version "8.6.0"
|
version "8.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b"
|
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b"
|
||||||
|
@ -5633,7 +5808,7 @@ events@1.1.1:
|
||||||
resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
|
resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
|
||||||
integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=
|
integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=
|
||||||
|
|
||||||
events@^3.2.0:
|
events@^3.0.0, events@^3.2.0:
|
||||||
version "3.3.0"
|
version "3.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
|
resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
|
||||||
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
|
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
|
||||||
|
@ -5707,6 +5882,13 @@ expand-brackets@^2.1.4:
|
||||||
snapdragon "^0.8.1"
|
snapdragon "^0.8.1"
|
||||||
to-regex "^3.0.1"
|
to-regex "^3.0.1"
|
||||||
|
|
||||||
|
expand-tilde@^2.0.2:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
|
||||||
|
integrity sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==
|
||||||
|
dependencies:
|
||||||
|
homedir-polyfill "^1.0.1"
|
||||||
|
|
||||||
expect@^24.9.0:
|
expect@^24.9.0:
|
||||||
version "24.9.0"
|
version "24.9.0"
|
||||||
resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca"
|
resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca"
|
||||||
|
@ -6072,6 +6254,11 @@ follow-redirects@^1.14.0, follow-redirects@^1.14.4:
|
||||||
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc"
|
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc"
|
||||||
integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==
|
integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==
|
||||||
|
|
||||||
|
follow-redirects@^1.14.9:
|
||||||
|
version "1.15.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5"
|
||||||
|
integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==
|
||||||
|
|
||||||
for-each@^0.3.3:
|
for-each@^0.3.3:
|
||||||
version "0.3.3"
|
version "0.3.3"
|
||||||
resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
|
resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
|
||||||
|
@ -6264,7 +6451,7 @@ generate-function@^2.3.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
is-property "^1.0.2"
|
is-property "^1.0.2"
|
||||||
|
|
||||||
generic-pool@3.8.2:
|
generic-pool@3.8.2, generic-pool@^3.8.2:
|
||||||
version "3.8.2"
|
version "3.8.2"
|
||||||
resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.8.2.tgz#aab4f280adb522fdfbdc5e5b64d718d3683f04e9"
|
resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.8.2.tgz#aab4f280adb522fdfbdc5e5b64d718d3683f04e9"
|
||||||
integrity sha512-nGToKy6p3PAbYQ7p1UlWl6vSPwfwU6TMSWK7TTu+WUY4ZjyZQGniGGt2oNVvyNSpyZYSB43zMXVLcBm08MTMkg==
|
integrity sha512-nGToKy6p3PAbYQ7p1UlWl6vSPwfwU6TMSWK7TTu+WUY4ZjyZQGniGGt2oNVvyNSpyZYSB43zMXVLcBm08MTMkg==
|
||||||
|
@ -6274,6 +6461,11 @@ gensync@^1.0.0-beta.2:
|
||||||
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
|
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
|
||||||
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
|
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
|
||||||
|
|
||||||
|
get-caller-file@^1.0.2:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
|
||||||
|
integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
|
||||||
|
|
||||||
get-caller-file@^2.0.1, get-caller-file@^2.0.5:
|
get-caller-file@^2.0.1, get-caller-file@^2.0.5:
|
||||||
version "2.0.5"
|
version "2.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
|
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
|
||||||
|
@ -6417,6 +6609,18 @@ glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0:
|
||||||
once "^1.3.0"
|
once "^1.3.0"
|
||||||
path-is-absolute "^1.0.0"
|
path-is-absolute "^1.0.0"
|
||||||
|
|
||||||
|
glob@^7.1.6:
|
||||||
|
version "7.2.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
|
||||||
|
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
|
||||||
|
dependencies:
|
||||||
|
fs.realpath "^1.0.0"
|
||||||
|
inflight "^1.0.4"
|
||||||
|
inherits "2"
|
||||||
|
minimatch "^3.1.1"
|
||||||
|
once "^1.3.0"
|
||||||
|
path-is-absolute "^1.0.0"
|
||||||
|
|
||||||
global-agent@^3.0.0:
|
global-agent@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6"
|
resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6"
|
||||||
|
@ -6767,6 +6971,13 @@ has@^1.0.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
function-bind "^1.1.1"
|
function-bind "^1.1.1"
|
||||||
|
|
||||||
|
homedir-polyfill@^1.0.1:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
|
||||||
|
integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==
|
||||||
|
dependencies:
|
||||||
|
parse-passwd "^1.0.0"
|
||||||
|
|
||||||
hosted-git-info@^2.1.4:
|
hosted-git-info@^2.1.4:
|
||||||
version "2.8.9"
|
version "2.8.9"
|
||||||
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
|
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
|
||||||
|
@ -7441,7 +7652,7 @@ is-windows@^1.0.2:
|
||||||
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
|
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
|
||||||
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
|
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
|
||||||
|
|
||||||
is-wsl@^2.2.0:
|
is-wsl@^2.1.1, is-wsl@^2.2.0:
|
||||||
version "2.2.0"
|
version "2.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
|
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
|
||||||
integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
|
integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
|
||||||
|
@ -8653,7 +8864,7 @@ keyv@^3.0.0:
|
||||||
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
|
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
|
||||||
version "3.2.2"
|
version "3.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
|
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
|
||||||
integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
|
integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
is-buffer "^1.1.5"
|
is-buffer "^1.1.5"
|
||||||
|
|
||||||
|
@ -9257,7 +9468,7 @@ lodash.xor@^4.5.0:
|
||||||
resolved "https://registry.yarnpkg.com/lodash.xor/-/lodash.xor-4.5.0.tgz#4d48ed7e98095b0632582ba714d3ff8ae8fb1db6"
|
resolved "https://registry.yarnpkg.com/lodash.xor/-/lodash.xor-4.5.0.tgz#4d48ed7e98095b0632582ba714d3ff8ae8fb1db6"
|
||||||
integrity sha1-TUjtfpgJWwYyWCunFNP/iuj7HbY=
|
integrity sha1-TUjtfpgJWwYyWCunFNP/iuj7HbY=
|
||||||
|
|
||||||
lodash@4.17.21, lodash@^4.14.0, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.7.0:
|
lodash@4.17.21, lodash@^4.14.0, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.7.0:
|
||||||
version "4.17.21"
|
version "4.17.21"
|
||||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||||
|
@ -9493,6 +9704,11 @@ mime-db@1.51.0, "mime-db@>= 1.43.0 < 2", mime-db@^1.28.0:
|
||||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c"
|
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c"
|
||||||
integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==
|
integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==
|
||||||
|
|
||||||
|
mime-db@1.52.0:
|
||||||
|
version "1.52.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
|
||||||
|
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
|
||||||
|
|
||||||
mime-kind@^3.0.0:
|
mime-kind@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/mime-kind/-/mime-kind-3.0.0.tgz#23bb3aba03ed6a1ea8c4f6093a9c7ab7121a9cb2"
|
resolved "https://registry.yarnpkg.com/mime-kind/-/mime-kind-3.0.0.tgz#23bb3aba03ed6a1ea8c4f6093a9c7ab7121a9cb2"
|
||||||
|
@ -9508,6 +9724,13 @@ mime-types@^2.1.12, mime-types@^2.1.18, mime-types@^2.1.24, mime-types@^2.1.27,
|
||||||
dependencies:
|
dependencies:
|
||||||
mime-db "1.51.0"
|
mime-db "1.51.0"
|
||||||
|
|
||||||
|
mime-types@^2.1.29:
|
||||||
|
version "2.1.35"
|
||||||
|
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
|
||||||
|
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
|
||||||
|
dependencies:
|
||||||
|
mime-db "1.52.0"
|
||||||
|
|
||||||
mime@^1.3.4, mime@^1.4.1:
|
mime@^1.3.4, mime@^1.4.1:
|
||||||
version "1.6.0"
|
version "1.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
|
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
|
||||||
|
@ -9535,7 +9758,12 @@ min-document@^2.19.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
dom-walk "^0.1.0"
|
dom-walk "^0.1.0"
|
||||||
|
|
||||||
"minimatch@2 || 3", minimatch@^3.0.3, minimatch@^3.0.4:
|
minimalistic-assert@^1.0.0:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
|
||||||
|
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
|
||||||
|
|
||||||
|
"minimatch@2 || 3", minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.1:
|
||||||
version "3.1.2"
|
version "3.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
|
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
|
||||||
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
|
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
|
||||||
|
@ -9594,7 +9822,15 @@ mkdirp@^1.0.3, mkdirp@^1.0.4:
|
||||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
|
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
|
||||||
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
|
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
|
||||||
|
|
||||||
moment-timezone@^0.5.31:
|
mock-require@^3.0.3:
|
||||||
|
version "3.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/mock-require/-/mock-require-3.0.3.tgz#ccd544d9eae81dd576b3f219f69ec867318a1946"
|
||||||
|
integrity sha512-lLzfLHcyc10MKQnNUCv7dMcoY/2Qxd6wJfbqCcVk3LDb8An4hF6ohk5AztrvgKhJCqj36uyzi/p5se+tvyD+Wg==
|
||||||
|
dependencies:
|
||||||
|
get-caller-file "^1.0.2"
|
||||||
|
normalize-path "^2.1.1"
|
||||||
|
|
||||||
|
moment-timezone@^0.5.15, moment-timezone@^0.5.31:
|
||||||
version "0.5.34"
|
version "0.5.34"
|
||||||
resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.34.tgz#a75938f7476b88f155d3504a9343f7519d9a405c"
|
resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.34.tgz#a75938f7476b88f155d3504a9343f7519d9a405c"
|
||||||
integrity sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==
|
integrity sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==
|
||||||
|
@ -9606,6 +9842,11 @@ moment-timezone@^0.5.31:
|
||||||
resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3"
|
resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3"
|
||||||
integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==
|
integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==
|
||||||
|
|
||||||
|
moment@^2.29.3:
|
||||||
|
version "2.29.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.3.tgz#edd47411c322413999f7a5940d526de183c031f3"
|
||||||
|
integrity sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==
|
||||||
|
|
||||||
mongodb@3.6.3:
|
mongodb@3.6.3:
|
||||||
version "3.6.3"
|
version "3.6.3"
|
||||||
resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.6.3.tgz#eddaed0cc3598474d7a15f0f2a5b04848489fd05"
|
resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.6.3.tgz#eddaed0cc3598474d7a15f0f2a5b04848489fd05"
|
||||||
|
@ -10027,6 +10268,14 @@ only@~0.0.2:
|
||||||
resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4"
|
resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4"
|
||||||
integrity sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=
|
integrity sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=
|
||||||
|
|
||||||
|
open@^7.3.1:
|
||||||
|
version "7.4.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321"
|
||||||
|
integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==
|
||||||
|
dependencies:
|
||||||
|
is-docker "^2.0.0"
|
||||||
|
is-wsl "^2.1.1"
|
||||||
|
|
||||||
open@^8.4.0:
|
open@^8.4.0:
|
||||||
version "8.4.0"
|
version "8.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8"
|
resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8"
|
||||||
|
@ -10268,6 +10517,11 @@ parse-json@^5.2.0:
|
||||||
json-parse-even-better-errors "^2.3.0"
|
json-parse-even-better-errors "^2.3.0"
|
||||||
lines-and-columns "^1.1.6"
|
lines-and-columns "^1.1.6"
|
||||||
|
|
||||||
|
parse-passwd@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
|
||||||
|
integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==
|
||||||
|
|
||||||
parse5@4.0.0:
|
parse5@4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
|
resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
|
||||||
|
@ -11061,6 +11315,13 @@ pupa@^2.1.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
escape-goat "^2.0.0"
|
escape-goat "^2.0.0"
|
||||||
|
|
||||||
|
python-struct@^1.1.3:
|
||||||
|
version "1.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/python-struct/-/python-struct-1.1.3.tgz#f0ff1845ec520408e94dd8492bfd770aad26cae3"
|
||||||
|
integrity sha512-UsI/mNvk25jRpGKYI38Nfbv84z48oiIWwG67DLVvjRhy8B/0aIK+5Ju5WOHgw/o9rnEmbAS00v4rgKFQeC332Q==
|
||||||
|
dependencies:
|
||||||
|
long "^4.0.0"
|
||||||
|
|
||||||
q@^1.1.2:
|
q@^1.1.2:
|
||||||
version "1.5.1"
|
version "1.5.1"
|
||||||
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
|
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
|
||||||
|
@ -11418,7 +11679,7 @@ request-promise-native@^1.0.5:
|
||||||
stealthy-require "^1.1.1"
|
stealthy-require "^1.1.1"
|
||||||
tough-cookie "^2.3.3"
|
tough-cookie "^2.3.3"
|
||||||
|
|
||||||
request@^2.72.0, request@^2.74.0, request@^2.87.0, request@^2.88.0:
|
request@^2.72.0, request@^2.74.0, request@^2.87.0, request@^2.88.0, request@^2.88.2:
|
||||||
version "2.88.2"
|
version "2.88.2"
|
||||||
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
|
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
|
||||||
integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
|
integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
|
||||||
|
@ -11444,6 +11705,14 @@ request@^2.72.0, request@^2.74.0, request@^2.87.0, request@^2.88.0:
|
||||||
tunnel-agent "^0.6.0"
|
tunnel-agent "^0.6.0"
|
||||||
uuid "^3.3.2"
|
uuid "^3.3.2"
|
||||||
|
|
||||||
|
requestretry@^7.0.1:
|
||||||
|
version "7.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/requestretry/-/requestretry-7.1.0.tgz#d16a1a57a95295211147841550603f3dc527541e"
|
||||||
|
integrity sha512-TqVDgp251BW4b8ddQ2ptaj/57Z3LZHLscAUT7v6qs70buqF2/IoOVjYbpjJ6HiW7j5+waqegGI8xKJ/+uzgDmw==
|
||||||
|
dependencies:
|
||||||
|
extend "^3.0.2"
|
||||||
|
lodash "^4.17.15"
|
||||||
|
|
||||||
require-directory@^2.1.1:
|
require-directory@^2.1.1:
|
||||||
version "2.1.1"
|
version "2.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
|
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
|
||||||
|
@ -11860,6 +12129,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3:
|
||||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
|
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
|
||||||
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
|
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
|
||||||
|
|
||||||
|
simple-lru-cache@^0.0.2:
|
||||||
|
version "0.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/simple-lru-cache/-/simple-lru-cache-0.0.2.tgz#d59cc3a193c1a5d0320f84ee732f6e4713e511dd"
|
||||||
|
integrity sha1-1ZzDoZPBpdAyD4Tucy9uRxPlEd0=
|
||||||
|
|
||||||
simple-swizzle@^0.2.2:
|
simple-swizzle@^0.2.2:
|
||||||
version "0.2.2"
|
version "0.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
|
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
|
||||||
|
@ -11921,6 +12195,51 @@ snapdragon@^0.8.1:
|
||||||
source-map-resolve "^0.5.0"
|
source-map-resolve "^0.5.0"
|
||||||
use "^3.1.0"
|
use "^3.1.0"
|
||||||
|
|
||||||
|
snowflake-promise@^4.5.0:
|
||||||
|
version "4.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/snowflake-promise/-/snowflake-promise-4.5.0.tgz#ceba611d27b3792966bc752c545760e0ce168c1c"
|
||||||
|
integrity sha512-IFY7Y1alCTY1WRFPIEcgCbjy7wCajwLNnJsvw2L7xdePir7y5ohh+S00PnF9zFRGbfVVlRh/VYqOYHEfERK2lg==
|
||||||
|
dependencies:
|
||||||
|
snowflake-sdk "^1.6.0"
|
||||||
|
|
||||||
|
snowflake-sdk@^1.6.0:
|
||||||
|
version "1.6.10"
|
||||||
|
resolved "https://registry.yarnpkg.com/snowflake-sdk/-/snowflake-sdk-1.6.10.tgz#c6c4f267edbc50d3c1ef6fcc2651188bb8545dce"
|
||||||
|
integrity sha512-kguQQSGhmNqZfmN/yZNDaIaMMktTcrTYBjtyx+szJzV69b5F+5b77btpYp+bCFqao69otVM+IPUtb3sugvCVnQ==
|
||||||
|
dependencies:
|
||||||
|
"@azure/storage-blob" "^12.5.0"
|
||||||
|
"@techteamer/ocsp" "1.0.0"
|
||||||
|
agent-base "^6.0.2"
|
||||||
|
asn1.js-rfc2560 "^5.0.0"
|
||||||
|
asn1.js-rfc5280 "^3.0.0"
|
||||||
|
aws-sdk "^2.878.0"
|
||||||
|
axios "^0.27.2"
|
||||||
|
big-integer "^1.6.43"
|
||||||
|
bignumber.js "^2.4.0"
|
||||||
|
binascii "0.0.2"
|
||||||
|
browser-request "^0.3.3"
|
||||||
|
debug "^3.2.6"
|
||||||
|
expand-tilde "^2.0.2"
|
||||||
|
extend "^3.0.2"
|
||||||
|
generic-pool "^3.8.2"
|
||||||
|
glob "^7.1.6"
|
||||||
|
jsonwebtoken "^8.5.1"
|
||||||
|
mime-types "^2.1.29"
|
||||||
|
mkdirp "^1.0.3"
|
||||||
|
mock-require "^3.0.3"
|
||||||
|
moment "^2.29.3"
|
||||||
|
moment-timezone "^0.5.15"
|
||||||
|
open "^7.3.1"
|
||||||
|
python-struct "^1.1.3"
|
||||||
|
request "^2.88.2"
|
||||||
|
requestretry "^7.0.1"
|
||||||
|
simple-lru-cache "^0.0.2"
|
||||||
|
string-similarity "^4.0.4"
|
||||||
|
test-console "^2.0.0"
|
||||||
|
tmp "^0.2.1"
|
||||||
|
uuid "^3.3.2"
|
||||||
|
winston "^3.1.0"
|
||||||
|
|
||||||
sonic-boom@^1.0.2:
|
sonic-boom@^1.0.2:
|
||||||
version "1.4.1"
|
version "1.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-1.4.1.tgz#d35d6a74076624f12e6f917ade7b9d75e918f53e"
|
resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-1.4.1.tgz#d35d6a74076624f12e6f917ade7b9d75e918f53e"
|
||||||
|
@ -12187,6 +12506,11 @@ string-length@^4.0.1:
|
||||||
char-regex "^1.0.2"
|
char-regex "^1.0.2"
|
||||||
strip-ansi "^6.0.0"
|
strip-ansi "^6.0.0"
|
||||||
|
|
||||||
|
string-similarity@^4.0.4:
|
||||||
|
version "4.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/string-similarity/-/string-similarity-4.0.4.tgz#42d01ab0b34660ea8a018da8f56a3309bb8b2a5b"
|
||||||
|
integrity sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==
|
||||||
|
|
||||||
string-template@~1.0.0:
|
string-template@~1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/string-template/-/string-template-1.0.0.tgz#9e9f2233dc00f218718ec379a28a5673ecca8b96"
|
resolved "https://registry.yarnpkg.com/string-template/-/string-template-1.0.0.tgz#9e9f2233dc00f218718ec379a28a5673ecca8b96"
|
||||||
|
@ -12631,6 +12955,11 @@ terser@^5.7.2:
|
||||||
source-map "~0.7.2"
|
source-map "~0.7.2"
|
||||||
source-map-support "~0.5.20"
|
source-map-support "~0.5.20"
|
||||||
|
|
||||||
|
test-console@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/test-console/-/test-console-2.0.0.tgz#a279f7e2e148815224d8446ffa5208f0077d68fb"
|
||||||
|
integrity sha512-ciILzfCQCny8zy1+HEw2yBLKus7LNMsAHymsp2fhvGTVh5pWE5v2EB7V+5ag3WM9aO2ULtgsXVQePWYE+fb7pA==
|
||||||
|
|
||||||
test-exclude@^5.2.3:
|
test-exclude@^5.2.3:
|
||||||
version "5.2.3"
|
version "5.2.3"
|
||||||
resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0"
|
resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0"
|
||||||
|
@ -12753,6 +13082,13 @@ tmp@^0.0.33:
|
||||||
dependencies:
|
dependencies:
|
||||||
os-tmpdir "~1.0.2"
|
os-tmpdir "~1.0.2"
|
||||||
|
|
||||||
|
tmp@^0.2.1:
|
||||||
|
version "0.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
|
||||||
|
integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
|
||||||
|
dependencies:
|
||||||
|
rimraf "^3.0.0"
|
||||||
|
|
||||||
tmpl@1.0.5:
|
tmpl@1.0.5:
|
||||||
version "1.0.5"
|
version "1.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
|
resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
|
||||||
|
@ -12948,7 +13284,7 @@ tunnel-agent@^0.6.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
safe-buffer "^5.0.1"
|
safe-buffer "^5.0.1"
|
||||||
|
|
||||||
tunnel@0.0.6:
|
tunnel@0.0.6, tunnel@^0.0.6:
|
||||||
version "0.0.6"
|
version "0.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
|
resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
|
||||||
integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==
|
integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==
|
||||||
|
@ -13248,6 +13584,11 @@ uuid@3.3.2, uuid@^3.1.0, uuid@^3.3.2:
|
||||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
|
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
|
||||||
integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
|
integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
|
||||||
|
|
||||||
|
uuid@8.0.0:
|
||||||
|
version "8.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.0.0.tgz#bc6ccf91b5ff0ac07bbcdbf1c7c4e150db4dbb6c"
|
||||||
|
integrity sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==
|
||||||
|
|
||||||
uuid@8.1.0:
|
uuid@8.1.0:
|
||||||
version "8.1.0"
|
version "8.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.1.0.tgz#6f1536eb43249f473abc6bd58ff983da1ca30d8d"
|
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.1.0.tgz#6f1536eb43249f473abc6bd58ff983da1ca30d8d"
|
||||||
|
@ -13553,6 +13894,22 @@ winston-transport@^4.5.0:
|
||||||
readable-stream "^3.6.0"
|
readable-stream "^3.6.0"
|
||||||
triple-beam "^1.3.0"
|
triple-beam "^1.3.0"
|
||||||
|
|
||||||
|
winston@^3.1.0:
|
||||||
|
version "3.7.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/winston/-/winston-3.7.2.tgz#95b4eeddbec902b3db1424932ac634f887c400b1"
|
||||||
|
integrity sha512-QziIqtojHBoyzUOdQvQiar1DH0Xp9nF1A1y7NVy2DGEsz82SBDtOalS0ulTRGVT14xPX3WRWkCsdcJKqNflKng==
|
||||||
|
dependencies:
|
||||||
|
"@dabh/diagnostics" "^2.0.2"
|
||||||
|
async "^3.2.3"
|
||||||
|
is-stream "^2.0.0"
|
||||||
|
logform "^2.4.0"
|
||||||
|
one-time "^1.0.0"
|
||||||
|
readable-stream "^3.4.0"
|
||||||
|
safe-stable-stringify "^2.3.1"
|
||||||
|
stack-trace "0.0.x"
|
||||||
|
triple-beam "^1.3.0"
|
||||||
|
winston-transport "^4.5.0"
|
||||||
|
|
||||||
winston@^3.3.3:
|
winston@^3.3.3:
|
||||||
version "3.6.0"
|
version "3.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/winston/-/winston-3.6.0.tgz#be32587a099a292b88c49fac6fa529d478d93fb6"
|
resolved "https://registry.yarnpkg.com/winston/-/winston-3.6.0.tgz#be32587a099a292b88c49fac6fa529d478d93fb6"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/string-templates",
|
"name": "@budibase/string-templates",
|
||||||
"version": "1.0.191-alpha.0",
|
"version": "1.0.192-alpha.5",
|
||||||
"description": "Handlebars wrapper for Budibase templating.",
|
"description": "Handlebars wrapper for Budibase templating.",
|
||||||
"main": "src/index.cjs",
|
"main": "src/index.cjs",
|
||||||
"module": "dist/bundle.mjs",
|
"module": "dist/bundle.mjs",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@budibase/worker",
|
"name": "@budibase/worker",
|
||||||
"email": "hi@budibase.com",
|
"email": "hi@budibase.com",
|
||||||
"version": "1.0.191-alpha.0",
|
"version": "1.0.192-alpha.5",
|
||||||
"description": "Budibase background service",
|
"description": "Budibase background service",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
@ -32,9 +32,9 @@
|
||||||
"author": "Budibase",
|
"author": "Budibase",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@budibase/backend-core": "^1.0.191-alpha.0",
|
"@budibase/backend-core": "^1.0.192-alpha.5",
|
||||||
"@budibase/pro": "1.0.191-alpha.0",
|
"@budibase/pro": "1.0.192-alpha.5",
|
||||||
"@budibase/string-templates": "^1.0.191-alpha.0",
|
"@budibase/string-templates": "^1.0.192-alpha.5",
|
||||||
"@koa/router": "^8.0.0",
|
"@koa/router": "^8.0.0",
|
||||||
"@sentry/node": "6.17.7",
|
"@sentry/node": "6.17.7",
|
||||||
"@techpass/passport-openidconnect": "^0.3.0",
|
"@techpass/passport-openidconnect": "^0.3.0",
|
||||||
|
|
|
@ -293,14 +293,15 @@
|
||||||
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
||||||
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
||||||
|
|
||||||
"@budibase/backend-core@1.0.187":
|
"@budibase/backend-core@1.0.192-alpha.1":
|
||||||
version "1.0.187"
|
version "1.0.192-alpha.1"
|
||||||
resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.187.tgz#bf2d6de627185e5388d567762491334bc1d2d546"
|
resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-1.0.192-alpha.1.tgz#62ecb0afc4cc2cb48ac93dd15a812f6f3fe1a40c"
|
||||||
integrity sha512-C9FqOf+/SNNWk7bZU7PfnzDvXM5ntnZFgpX1bI/bfHH3xYGw6jOFB2BpoTaV2sQGq14wfmo9e9vNHqYIT9tPrg==
|
integrity sha512-2WzYIg12ZEOcCwdywqyC9ZrJlXqg8w4xI6T+ba7Fei1RACo0y4QfUoNN+Ik1NP+cpyagVf2HbpYr/yMZqdJYUA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@techpass/passport-openidconnect" "^0.3.0"
|
"@techpass/passport-openidconnect" "^0.3.0"
|
||||||
aws-sdk "^2.901.0"
|
aws-sdk "^2.901.0"
|
||||||
bcrypt "^5.0.1"
|
bcrypt "^5.0.1"
|
||||||
|
dotenv "^16.0.1"
|
||||||
emitter-listener "^1.1.2"
|
emitter-listener "^1.1.2"
|
||||||
ioredis "^4.27.1"
|
ioredis "^4.27.1"
|
||||||
jsonwebtoken "^8.5.1"
|
jsonwebtoken "^8.5.1"
|
||||||
|
@ -321,12 +322,12 @@
|
||||||
uuid "^8.3.2"
|
uuid "^8.3.2"
|
||||||
zlib "^1.0.5"
|
zlib "^1.0.5"
|
||||||
|
|
||||||
"@budibase/pro@1.0.187":
|
"@budibase/pro@1.0.192-alpha.1":
|
||||||
version "1.0.187"
|
version "1.0.192-alpha.1"
|
||||||
resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-1.0.187.tgz#40ed5e9809f924e5d0c7bbb7d09a602ea47dfe92"
|
resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-1.0.192-alpha.1.tgz#f3dece7ee153ac81080be9f96c7459e5dd8510ff"
|
||||||
integrity sha512-whEcWAcgkIL4EHgh08jp8itR37LZYlZxFLl0GYY5AOIguEScJ1FRe9WcYFNW0Pw768uaq7IE7hKkrAzWetzu4g==
|
integrity sha512-BRzoRTIcIW/o2bckSmOrOYCz5HPJyeq4PurfEZFHh16dXPXSBSTIuIiC7Q1jic2CBq5DJOfT/SYTgj/OTVga3g==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@budibase/backend-core" "1.0.187"
|
"@budibase/backend-core" "1.0.192-alpha.1"
|
||||||
node-fetch "^2.6.1"
|
node-fetch "^2.6.1"
|
||||||
|
|
||||||
"@cspotcode/source-map-consumer@0.8.0":
|
"@cspotcode/source-map-consumer@0.8.0":
|
||||||
|
@ -2258,6 +2259,11 @@ dot-prop@^5.2.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
is-obj "^2.0.0"
|
is-obj "^2.0.0"
|
||||||
|
|
||||||
|
dotenv@^16.0.1:
|
||||||
|
version "16.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d"
|
||||||
|
integrity sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==
|
||||||
|
|
||||||
dotenv@^8.2.0:
|
dotenv@^8.2.0:
|
||||||
version "8.6.0"
|
version "8.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b"
|
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b"
|
||||||
|
|
Loading…
Reference in New Issue