diff options
| author | Raphael Kabo <raphaelkabo@hey.com> | 2023-10-06 14:16:39 +0100 | 
|---|---|---|
| committer | Raphael Kabo <raphaelkabo@hey.com> | 2023-10-06 14:16:39 +0100 | 
| commit | aad4162be83486553b08dacf556814f4108a2a81 (patch) | |
| tree | e8507d8acd4f0428f4e3ee171ddbe852c7de4e95 | |
| parent | f80e509895b7b2c1d716ac276977b7165a13c192 (diff) | |
Set up Cypress
| -rw-r--r-- | .github/workflows/build-test.yaml | 25 | ||||
| -rw-r--r-- | cypress.config.ts | 10 | ||||
| -rw-r--r-- | cypress/e2e/event.cy.ts | 98 | ||||
| -rw-r--r-- | cypress/fixtures/example.json | 5 | ||||
| -rw-r--r-- | cypress/fixtures/test-header.png | bin | 0 -> 2896 bytes | |||
| -rw-r--r-- | cypress/support/commands.ts | 37 | ||||
| -rw-r--r-- | cypress/support/e2e.ts | 20 | ||||
| -rw-r--r-- | cypress/tsconfig.json | 8 | ||||
| -rw-r--r-- | package.json | 7 | ||||
| -rw-r--r-- | pnpm-lock.yaml | 834 | ||||
| -rw-r--r-- | tsconfig.json | 2 | ||||
| -rwxr-xr-x | views/event.handlebars | 10 | ||||
| -rwxr-xr-x | views/partials/neweventform.handlebars | 2 | 
13 files changed, 997 insertions, 61 deletions
diff --git a/.github/workflows/build-test.yaml b/.github/workflows/build-test.yaml index d84282c..5c38dfb 100644 --- a/.github/workflows/build-test.yaml +++ b/.github/workflows/build-test.yaml @@ -1,4 +1,4 @@ -name: Build test +name: Build and test  on:    pull_request:    workflow_dispatch: @@ -7,7 +7,7 @@ on:        - main  jobs: -  build: +  build_and_test:      runs-on: ubuntu-latest      steps:        - uses: actions/checkout@v3 @@ -31,3 +31,24 @@ jobs:            pnpm start &            sleep 5            curl -sSf http://localhost:3000 +      - name: Upload artefacts +        uses: actions/upload-artifact@v3 +        with: +          name: build +          path: | +            dist +            node_modules +  cypress: +    needs: build_and_test +    runs-on: ubuntu-latest +    steps: +      - name: Download artefacts +        uses: actions/download-artifact@v3 +        with: +          name: build +      - name: Cypress run +        uses: cypress-io/github-action@v6 +        with: +          start: pnpm start +          browser: chrome + diff --git a/cypress.config.ts b/cypress.config.ts new file mode 100644 index 0000000..78eed99 --- /dev/null +++ b/cypress.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from "cypress"; + +export default defineConfig({ +  e2e: { +    baseUrl: "http://localhost:3000", +    setupNodeEvents(on, config) { +      // implement node event listeners here +    }, +  }, +}); diff --git a/cypress/e2e/event.cy.ts b/cypress/e2e/event.cy.ts new file mode 100644 index 0000000..ef8b249 --- /dev/null +++ b/cypress/e2e/event.cy.ts @@ -0,0 +1,98 @@ +const eventData = { +  eventName: "Your Event Name", +  eventLocation: "Event Location", +  timezone: "Europe/London", +  eventDescription: "Event Description", +  eventURL: "https://example.com", +  imagePath: "path/to/your/image.jpg", // If you have an image to upload +  hostName: "Your Name", +  creatorEmail: "test@example.com", +  eventGroupCheckbox: false, +  eventGroupID: "YourEventGroupID", +  eventGroupEditToken: "YourEventGroupEditToken", +  interactionCheckbox: true, +  joinCheckbox: true, +  maxAttendeesCheckbox: true, +  maxAttendees: 10, +  eventStart: "", +  eventEnd: "", +}; + +describe("Events", () => { +  beforeEach(() => { +    cy.clearLocalStorage(); + +    cy.visit("/new/event/public"); +    cy.get("#showNewEventFormButton").click(); + +    cy.get("#eventName").type(eventData.eventName); +    cy.get("#eventLocation").type(eventData.eventLocation); +    cy.get("#eventStart").click(); +    // This opens a datepicker, so find the first non-disabled day and click it +    cy.get(".datepicker--cell-day:not(.-disabled-)").first().click(); +    cy.get("#eventStart").invoke("val").as("eventStart"); +    // Click away from the datepicker to close it +    cy.get("#eventName").click(); +    cy.get("#eventEnd").click(); +    // This opens a datepicker, so find the last non-disabled day and click it +    cy.get(".datepicker--cell-day:not(.-disabled-)").last().click(); +    cy.get("#eventEnd").invoke("val").as("eventEnd"); +    // Click away from the datepicker to close it +    cy.get("#eventName").click(); +    // #timezone is a Select2 dropdown, so select the option you want +    cy.get("#timezone").select(eventData.timezone, { force: true }); + +    cy.get("#eventDescription").type(eventData.eventDescription); +    cy.get("#eventURL").type(eventData.eventURL); +    // Upload an image +    // if (eventData.imagePath) { +    //   cy.get("#eventImageUpload").attachFile(eventData.imagePath); +    // } + +    cy.get("#hostName").type(eventData.hostName); +    cy.get("#creatorEmail").type(eventData.creatorEmail); + +    // Check checkboxes based on eventData +    if (eventData.eventGroupCheckbox) { +      cy.get("#eventGroupCheckbox").check(); +      cy.get("#eventGroupID").type(eventData.eventGroupID); +      cy.get("#eventGroupEditToken").type(eventData.eventGroupEditToken); +    } + +    if (eventData.interactionCheckbox) { +      cy.get("#interactionCheckbox").check(); +    } + +    if (eventData.joinCheckbox) { +      cy.get("#joinCheckbox").check(); +    } + +    if (eventData.maxAttendeesCheckbox) { +      cy.get("#maxAttendeesCheckbox").check(); +      cy.get("#maxAttendees").type(eventData.maxAttendees.toString()); +    } + +    // Submit the form +    cy.get("#newEventFormSubmit").click(); +  }); +  it("creates a new event", function () { +    // Check that all the data is correct +    cy.get(".p-name").should("have.text", eventData.eventName); +    cy.get(".p-location").should("have.text", eventData.eventLocation); +    cy.get(".p-summary").should("contain.text", eventData.eventDescription); +    cy.get("#hosted-by").should( +      "contain.text", +      `Hosted by ${eventData.hostName}` +    ); +    cy.get("#attendees-alert").should("contain.text", "10 spots remaining"); +    let [startDate, startTime] = this.eventStart.split(", "); +    let [endDate, endTime] = this.eventEnd.split(", "); +    // Remove leading zeroes from the times +    startTime = startTime.replace(/^0+/, ""); +    endTime = endTime.replace(/^0+/, ""); +    cy.get(".dt-duration").should("contain.text", startDate); +    cy.get(".dt-duration").should("contain.text", endDate); +    cy.get(".dt-duration").should("contain.text", startTime); +    cy.get(".dt-duration").should("contain.text", endTime); +  }); +}); diff --git a/cypress/fixtures/example.json b/cypress/fixtures/example.json new file mode 100644 index 0000000..02e4254 --- /dev/null +++ b/cypress/fixtures/example.json @@ -0,0 +1,5 @@ +{ +  "name": "Using fixtures to represent data", +  "email": "hello@cypress.io", +  "body": "Fixtures are a great way to mock data for responses to routes" +} diff --git a/cypress/fixtures/test-header.png b/cypress/fixtures/test-header.png Binary files differnew file mode 100644 index 0000000..d8a98cb --- /dev/null +++ b/cypress/fixtures/test-header.png diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts new file mode 100644 index 0000000..698b01a --- /dev/null +++ b/cypress/support/commands.ts @@ -0,0 +1,37 @@ +/// <reference types="cypress" /> +// *********************************************** +// This example commands.ts shows you how to +// create various custom commands and overwrite +// existing commands. +// +// For more comprehensive examples of custom +// commands please read more here: +// https://on.cypress.io/custom-commands +// *********************************************** +// +// +// -- This is a parent command -- +// Cypress.Commands.add('login', (email, password) => { ... }) +// +// +// -- This is a child command -- +// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... }) +// +// +// -- This is a dual command -- +// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... }) +// +// +// -- This will overwrite an existing command -- +// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) +// +// declare global { +//   namespace Cypress { +//     interface Chainable { +//       login(email: string, password: string): Chainable<void> +//       drag(subject: string, options?: Partial<TypeOptions>): Chainable<Element> +//       dismiss(subject: string, options?: Partial<TypeOptions>): Chainable<Element> +//       visit(originalFn: CommandOriginalFn, url: string, options: Partial<VisitOptions>): Chainable<Element> +//     } +//   } +// }
\ No newline at end of file diff --git a/cypress/support/e2e.ts b/cypress/support/e2e.ts new file mode 100644 index 0000000..f80f74f --- /dev/null +++ b/cypress/support/e2e.ts @@ -0,0 +1,20 @@ +// *********************************************************** +// This example support/e2e.ts is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands' + +// Alternatively you can use CommonJS syntax: +// require('./commands')
\ No newline at end of file diff --git a/cypress/tsconfig.json b/cypress/tsconfig.json new file mode 100644 index 0000000..83fb87e --- /dev/null +++ b/cypress/tsconfig.json @@ -0,0 +1,8 @@ +{ +  "compilerOptions": { +    "target": "es5", +    "lib": ["es5", "dom"], +    "types": ["cypress", "node"] +  }, +  "include": ["**/*.ts"] +}
\ No newline at end of file diff --git a/package.json b/package.json index 0eeff5c..1d7dd37 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,8 @@      "build": "tsc",      "start": "node dist/start.js",      "dev": "nodemon -e ts,js --watch src --exec \"pnpm run build ; pnpm run start\"", -    "test": "echo \"Error: no test specified\" && exit 1" +    "test:dev": "pnpm run dev & wait-on http://localhost:3000 && cypress open --e2e --browser chrome", +    "test": "pnpm run build || true && pnpm run start & wait-on http://localhost:3000 && cypress run --e2e --browser chrome"    },    "engines": {      "node": ">=16.16.0" @@ -38,10 +39,12 @@      "randomstring": "^1.3.0",      "request": "^2.88.2",      "sanitize-html": "^2.11.0", -    "toml": "^3.0.0" +    "toml": "^3.0.0", +    "wait-on": "^7.0.1"    },    "devDependencies": {      "@types/express": "^4.17.18", +    "cypress": "^13.3.0",      "eslint": "^8.50.0",      "nodemon": "^2.0.22",      "prettier": "^2.8.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 14fd5bd..b4f8067 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,11 +71,17 @@ dependencies:    toml:      specifier: ^3.0.0      version: 3.0.0 +  wait-on: +    specifier: ^7.0.1 +    version: 7.0.1  devDependencies:    '@types/express':      specifier: ^4.17.18      version: 4.17.18 +  cypress: +    specifier: ^13.3.0 +    version: 13.3.0    eslint:      specifier: ^8.50.0      version: 8.50.0 @@ -103,6 +109,46 @@ packages:        regenerator-runtime: 0.14.0      dev: false +  /@colors/colors@1.5.0: +    resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} +    engines: {node: '>=0.1.90'} +    requiresBuild: true +    dev: true +    optional: true + +  /@cypress/request@3.0.1: +    resolution: {integrity: sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==} +    engines: {node: '>= 6'} +    dependencies: +      aws-sign2: 0.7.0 +      aws4: 1.12.0 +      caseless: 0.12.0 +      combined-stream: 1.0.8 +      extend: 3.0.2 +      forever-agent: 0.6.1 +      form-data: 2.3.3 +      http-signature: 1.3.6 +      is-typedarray: 1.0.0 +      isstream: 0.1.2 +      json-stringify-safe: 5.0.1 +      mime-types: 2.1.35 +      performance-now: 2.1.0 +      qs: 6.10.4 +      safe-buffer: 5.2.1 +      tough-cookie: 4.1.3 +      tunnel-agent: 0.6.0 +      uuid: 8.3.2 +    dev: true + +  /@cypress/xvfb@1.2.4(supports-color@8.1.1): +    resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} +    dependencies: +      debug: 3.2.7(supports-color@8.1.1) +      lodash.once: 4.1.1 +    transitivePeerDependencies: +      - supports-color +    dev: true +    /@eslint-community/eslint-utils@4.4.0(eslint@8.50.0):      resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}      engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -123,7 +169,7 @@ packages:      engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}      dependencies:        ajv: 6.12.6 -      debug: 4.3.4 +      debug: 4.3.4(supports-color@8.1.1)        espree: 9.6.1        globals: 13.22.0        ignore: 5.2.4 @@ -140,12 +186,22 @@ packages:      engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}      dev: true +  /@hapi/hoek@9.3.0: +    resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} +    dev: false + +  /@hapi/topo@5.1.0: +    resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} +    dependencies: +      '@hapi/hoek': 9.3.0 +    dev: false +    /@humanwhocodes/config-array@0.11.11:      resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==}      engines: {node: '>=10.10.0'}      dependencies:        '@humanwhocodes/object-schema': 1.2.1 -      debug: 4.3.4 +      debug: 4.3.4(supports-color@8.1.1)        minimatch: 3.1.2      transitivePeerDependencies:        - supports-color @@ -581,6 +637,20 @@ packages:        '@sendgrid/helpers': 6.5.5      dev: false +  /@sideway/address@4.1.4: +    resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} +    dependencies: +      '@hapi/hoek': 9.3.0 +    dev: false + +  /@sideway/formula@3.0.1: +    resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} +    dev: false + +  /@sideway/pinpoint@2.0.0: +    resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} +    dev: false +    /@tokenizer/token@0.3.0:      resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}      dev: false @@ -649,6 +719,10 @@ packages:      resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==}      dev: false +  /@types/node@18.18.3: +    resolution: {integrity: sha512-0OVfGupTl3NBFr8+iXpfZ8NR7jfFO+P1Q+IO/q0wbo02wYkP5gy36phojeYWpLQ6WAMjl+VfmqUk2YbUfp0irA==} +    dev: true +    /@types/node@20.7.1:      resolution: {integrity: sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg==} @@ -684,10 +758,26 @@ packages:        '@types/node': 20.7.1      dev: true +  /@types/sinonjs__fake-timers@8.1.1: +    resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} +    dev: true + +  /@types/sizzle@2.3.4: +    resolution: {integrity: sha512-jA2llq2zNkg8HrALI7DtWzhALcVH0l7i89yhY3iBdOz6cBPeACoFq+fkQrjHA39t1hnSFOboZ7A/AY5MMZSlag==} +    dev: true +    /@types/tough-cookie@4.0.3:      resolution: {integrity: sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==}      dev: false +  /@types/yauzl@2.10.1: +    resolution: {integrity: sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw==} +    requiresBuild: true +    dependencies: +      '@types/node': 20.7.1 +    dev: true +    optional: true +    /abbrev@1.1.1:      resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}      dev: true @@ -714,6 +804,14 @@ packages:      hasBin: true      dev: true +  /aggregate-error@3.1.0: +    resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} +    engines: {node: '>=8'} +    dependencies: +      clean-stack: 2.2.0 +      indent-string: 4.0.0 +    dev: true +    /ajv@6.12.6:      resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}      dependencies: @@ -722,6 +820,18 @@ packages:        json-schema-traverse: 0.4.1        uri-js: 4.4.1 +  /ansi-colors@4.1.3: +    resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} +    engines: {node: '>=6'} +    dev: true + +  /ansi-escapes@4.3.2: +    resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} +    engines: {node: '>=8'} +    dependencies: +      type-fest: 0.21.3 +    dev: true +    /ansi-regex@5.0.1:      resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}      engines: {node: '>=8'} @@ -753,6 +863,10 @@ packages:        picomatch: 2.3.1      dev: true +  /arch@2.2.0: +    resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} +    dev: true +    /argparse@2.0.1:      resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}      dev: true @@ -765,23 +879,41 @@ packages:      resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==}      dependencies:        safer-buffer: 2.1.2 -    dev: false    /assert-plus@1.0.0:      resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==}      engines: {node: '>=0.8'} -    dev: false + +  /astral-regex@2.0.0: +    resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} +    engines: {node: '>=8'} +    dev: true + +  /async@3.2.4: +    resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} +    dev: true    /asynckit@0.4.0:      resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} -    dev: false + +  /at-least-node@1.0.0: +    resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} +    engines: {node: '>= 4.0.0'} +    dev: true    /aws-sign2@0.7.0:      resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} -    dev: false    /aws4@1.12.0:      resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} + +  /axios@0.27.2: +    resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} +    dependencies: +      follow-redirects: 1.15.3 +      form-data: 4.0.0 +    transitivePeerDependencies: +      - debug      dev: false    /balanced-match@1.0.2: @@ -789,13 +921,11 @@ packages:    /base64-js@1.5.1:      resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} -    dev: false    /bcrypt-pbkdf@1.0.2:      resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==}      dependencies:        tweetnacl: 0.14.5 -    dev: false    /binary-extensions@2.2.0:      resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} @@ -813,10 +943,18 @@ packages:        safe-buffer: 5.2.1      dev: false +  /blob-util@2.0.2: +    resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} +    dev: true +    /bluebird@3.5.1:      resolution: {integrity: sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==}      dev: false +  /bluebird@3.7.2: +    resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} +    dev: true +    /bmp-js@0.1.0:      resolution: {integrity: sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==}      dev: false @@ -866,6 +1004,10 @@ packages:      engines: {node: '>=0.6.19'}      dev: false +  /buffer-crc32@0.2.13: +    resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} +    dev: true +    /buffer-equal@0.0.1:      resolution: {integrity: sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==}      engines: {node: '>=0.4.0'} @@ -876,7 +1018,6 @@ packages:      dependencies:        base64-js: 1.5.1        ieee754: 1.2.1 -    dev: false    /busboy@1.6.0:      resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} @@ -890,12 +1031,16 @@ packages:      engines: {node: '>= 0.8'}      dev: false +  /cachedir@2.4.0: +    resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} +    engines: {node: '>=6'} +    dev: true +    /call-bind@1.0.2:      resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}      dependencies:        function-bind: 1.1.1        get-intrinsic: 1.2.1 -    dev: false    /callsites@3.1.0:      resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -904,7 +1049,6 @@ packages:    /caseless@0.12.0:      resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} -    dev: false    /chalk@2.4.2:      resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -923,6 +1067,11 @@ packages:        supports-color: 7.2.0      dev: true +  /check-more-types@2.24.0: +    resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} +    engines: {node: '>= 0.8.0'} +    dev: true +    /chokidar@3.5.3:      resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}      engines: {node: '>= 8.10.0'} @@ -938,6 +1087,40 @@ packages:        fsevents: 2.3.3      dev: true +  /ci-info@3.9.0: +    resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} +    engines: {node: '>=8'} +    dev: true + +  /clean-stack@2.2.0: +    resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} +    engines: {node: '>=6'} +    dev: true + +  /cli-cursor@3.1.0: +    resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} +    engines: {node: '>=8'} +    dependencies: +      restore-cursor: 3.1.0 +    dev: true + +  /cli-table3@0.6.3: +    resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} +    engines: {node: 10.* || >= 12.*} +    dependencies: +      string-width: 4.2.3 +    optionalDependencies: +      '@colors/colors': 1.5.0 +    dev: true + +  /cli-truncate@2.1.0: +    resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} +    engines: {node: '>=8'} +    dependencies: +      slice-ansi: 3.0.0 +      string-width: 4.2.3 +    dev: true +    /color-convert@1.9.3:      resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}      dependencies: @@ -959,12 +1142,25 @@ packages:      resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}      dev: true +  /colorette@2.0.20: +    resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} +    dev: true +    /combined-stream@1.0.8:      resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}      engines: {node: '>= 0.8'}      dependencies:        delayed-stream: 1.0.0 -    dev: false + +  /commander@6.2.1: +    resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} +    engines: {node: '>= 6'} +    dev: true + +  /common-tags@1.8.2: +    resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} +    engines: {node: '>=4.0.0'} +    dev: true    /concat-map@0.0.1:      resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -998,7 +1194,6 @@ packages:    /core-util-is@1.0.2:      resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} -    dev: false    /core-util-is@1.0.3:      resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -1029,12 +1224,66 @@ packages:        which: 2.0.2      dev: true +  /cypress@13.3.0: +    resolution: {integrity: sha512-mpI8qcTwLGiA4zEQvTC/U1xGUezVV4V8HQCOYjlEOrVmU1etVvxOjkCXHGwrlYdZU/EPmUiWfsO3yt1o+Q2bgw==} +    engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} +    hasBin: true +    requiresBuild: true +    dependencies: +      '@cypress/request': 3.0.1 +      '@cypress/xvfb': 1.2.4(supports-color@8.1.1) +      '@types/node': 18.18.3 +      '@types/sinonjs__fake-timers': 8.1.1 +      '@types/sizzle': 2.3.4 +      arch: 2.2.0 +      blob-util: 2.0.2 +      bluebird: 3.7.2 +      buffer: 5.7.1 +      cachedir: 2.4.0 +      chalk: 4.1.2 +      check-more-types: 2.24.0 +      cli-cursor: 3.1.0 +      cli-table3: 0.6.3 +      commander: 6.2.1 +      common-tags: 1.8.2 +      dayjs: 1.11.10 +      debug: 4.3.4(supports-color@8.1.1) +      enquirer: 2.4.1 +      eventemitter2: 6.4.7 +      execa: 4.1.0 +      executable: 4.1.1 +      extract-zip: 2.0.1(supports-color@8.1.1) +      figures: 3.2.0 +      fs-extra: 9.1.0 +      getos: 3.2.1 +      is-ci: 3.0.1 +      is-installed-globally: 0.4.0 +      lazy-ass: 1.6.0 +      listr2: 3.14.0(enquirer@2.4.1) +      lodash: 4.17.21 +      log-symbols: 4.1.0 +      minimist: 1.2.8 +      ospath: 1.2.2 +      pretty-bytes: 5.6.0 +      process: 0.11.10 +      proxy-from-env: 1.0.0 +      request-progress: 3.0.0 +      semver: 7.5.4 +      supports-color: 8.1.1 +      tmp: 0.2.1 +      untildify: 4.0.0 +      yauzl: 2.10.0 +    dev: true +    /dashdash@1.14.1:      resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==}      engines: {node: '>=0.10'}      dependencies:        assert-plus: 1.0.0 -    dev: false + +  /dayjs@1.11.10: +    resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} +    dev: true    /debug@2.6.9:      resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -1070,7 +1319,19 @@ packages:        supports-color: 5.5.0      dev: true -  /debug@4.3.4: +  /debug@3.2.7(supports-color@8.1.1): +    resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} +    peerDependencies: +      supports-color: '*' +    peerDependenciesMeta: +      supports-color: +        optional: true +    dependencies: +      ms: 2.1.3 +      supports-color: 8.1.1 +    dev: true + +  /debug@4.3.4(supports-color@8.1.1):      resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}      engines: {node: '>=6.0'}      peerDependencies: @@ -1080,6 +1341,7 @@ packages:          optional: true      dependencies:        ms: 2.1.2 +      supports-color: 8.1.1      dev: true    /deep-is@0.1.4: @@ -1112,7 +1374,6 @@ packages:    /delayed-stream@1.0.0:      resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}      engines: {node: '>=0.4.0'} -    dev: false    /denque@1.5.1:      resolution: {integrity: sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==} @@ -1172,17 +1433,34 @@ packages:      dependencies:        jsbn: 0.1.1        safer-buffer: 2.1.2 -    dev: false    /ee-first@1.1.1:      resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}      dev: false +  /emoji-regex@8.0.0: +    resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} +    dev: true +    /encodeurl@1.0.2:      resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}      engines: {node: '>= 0.8'}      dev: false +  /end-of-stream@1.4.4: +    resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} +    dependencies: +      once: 1.4.0 +    dev: true + +  /enquirer@2.4.1: +    resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} +    engines: {node: '>=8.6'} +    dependencies: +      ansi-colors: 4.1.3 +      strip-ansi: 6.0.1 +    dev: true +    /entities@4.5.0:      resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}      engines: {node: '>=0.12'} @@ -1195,7 +1473,6 @@ packages:    /escape-string-regexp@1.0.5:      resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}      engines: {node: '>=0.8.0'} -    dev: false    /escape-string-regexp@4.0.0:      resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} @@ -1229,7 +1506,7 @@ packages:        ajv: 6.12.6        chalk: 4.1.2        cross-spawn: 7.0.3 -      debug: 4.3.4 +      debug: 4.3.4(supports-color@8.1.1)        doctrine: 3.0.0        escape-string-regexp: 4.0.0        eslint-scope: 7.2.2 @@ -1298,6 +1575,32 @@ packages:      engines: {node: '>= 0.6'}      dev: false +  /eventemitter2@6.4.7: +    resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==} +    dev: true + +  /execa@4.1.0: +    resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} +    engines: {node: '>=10'} +    dependencies: +      cross-spawn: 7.0.3 +      get-stream: 5.2.0 +      human-signals: 1.1.1 +      is-stream: 2.0.1 +      merge-stream: 2.0.0 +      npm-run-path: 4.0.1 +      onetime: 5.1.2 +      signal-exit: 3.0.7 +      strip-final-newline: 2.0.0 +    dev: true + +  /executable@4.1.1: +    resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} +    engines: {node: '>=4'} +    dependencies: +      pify: 2.3.0 +    dev: true +    /exif-parser@0.1.12:      resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==}      dev: false @@ -1383,12 +1686,24 @@ packages:    /extend@3.0.2:      resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} -    dev: false + +  /extract-zip@2.0.1(supports-color@8.1.1): +    resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} +    engines: {node: '>= 10.17.0'} +    hasBin: true +    dependencies: +      debug: 4.3.4(supports-color@8.1.1) +      get-stream: 5.2.0 +      yauzl: 2.10.0 +    optionalDependencies: +      '@types/yauzl': 2.10.1 +    transitivePeerDependencies: +      - supports-color +    dev: true    /extsprintf@1.3.0:      resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==}      engines: {'0': node >=0.6.0} -    dev: false    /fast-deep-equal@3.1.3:      resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1406,6 +1721,19 @@ packages:        reusify: 1.0.4      dev: true +  /fd-slicer@1.1.0: +    resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} +    dependencies: +      pend: 1.2.0 +    dev: true + +  /figures@3.2.0: +    resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} +    engines: {node: '>=8'} +    dependencies: +      escape-string-regexp: 1.0.5 +    dev: true +    /file-entry-cache@6.0.1:      resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}      engines: {node: ^10.12.0 || >=12.0.0} @@ -1465,9 +1793,18 @@ packages:      resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==}      dev: true +  /follow-redirects@1.15.3: +    resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} +    engines: {node: '>=4.0'} +    peerDependencies: +      debug: '*' +    peerDependenciesMeta: +      debug: +        optional: true +    dev: false +    /forever-agent@0.6.1:      resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} -    dev: false    /form-data@2.3.3:      resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} @@ -1476,7 +1813,6 @@ packages:        asynckit: 0.4.0        combined-stream: 1.0.8        mime-types: 2.1.35 -    dev: false    /form-data@2.5.1:      resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} @@ -1487,6 +1823,15 @@ packages:        mime-types: 2.1.35      dev: false +  /form-data@4.0.0: +    resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} +    engines: {node: '>= 6'} +    dependencies: +      asynckit: 0.4.0 +      combined-stream: 1.0.8 +      mime-types: 2.1.35 +    dev: false +    /forwarded@0.2.0:      resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}      engines: {node: '>= 0.6'} @@ -1497,6 +1842,16 @@ packages:      engines: {node: '>= 0.6'}      dev: false +  /fs-extra@9.1.0: +    resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} +    engines: {node: '>=10'} +    dependencies: +      at-least-node: 1.0.0 +      graceful-fs: 4.2.11 +      jsonfile: 6.1.0 +      universalify: 2.0.0 +    dev: true +    /fs.realpath@1.0.0:      resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -1510,7 +1865,6 @@ packages:    /function-bind@1.1.1:      resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} -    dev: false    /generate-rsa-keypair@0.2.1:      resolution: {integrity: sha512-vxLfzfy6WbMLtkKV4AJtg7QH0ZqGGNkSYM6S0Q72Z70QXsztLklKFtX15te3YLIqmiQAYi3g3MWsTfXd6djkpg==} @@ -1525,13 +1879,24 @@ packages:        has: 1.0.3        has-proto: 1.0.1        has-symbols: 1.0.3 -    dev: false + +  /get-stream@5.2.0: +    resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} +    engines: {node: '>=8'} +    dependencies: +      pump: 3.0.0 +    dev: true + +  /getos@3.2.1: +    resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} +    dependencies: +      async: 3.2.4 +    dev: true    /getpass@0.1.7:      resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==}      dependencies:        assert-plus: 1.0.0 -    dev: false    /gifwrap@0.9.4:      resolution: {integrity: sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==} @@ -1576,6 +1941,13 @@ packages:        once: 1.4.0      dev: false +  /global-dirs@3.0.1: +    resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} +    engines: {node: '>=10'} +    dependencies: +      ini: 2.0.0 +    dev: true +    /global@4.4.0:      resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==}      dependencies: @@ -1598,7 +1970,6 @@ packages:    /graceful-fs@4.2.11:      resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} -    dev: false    /graphemer@1.4.0:      resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} @@ -1649,19 +2020,16 @@ packages:    /has-proto@1.0.1:      resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}      engines: {node: '>= 0.4'} -    dev: false    /has-symbols@1.0.3:      resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}      engines: {node: '>= 0.4'} -    dev: false    /has@1.0.3:      resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}      engines: {node: '>= 0.4.0'}      dependencies:        function-bind: 1.1.1 -    dev: false    /htmlparser2@8.0.2:      resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} @@ -1692,6 +2060,20 @@ packages:        sshpk: 1.17.0      dev: false +  /http-signature@1.3.6: +    resolution: {integrity: sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==} +    engines: {node: '>=0.10'} +    dependencies: +      assert-plus: 1.0.0 +      jsprim: 2.0.2 +      sshpk: 1.17.0 +    dev: true + +  /human-signals@1.1.1: +    resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} +    engines: {node: '>=8.12.0'} +    dev: true +    /ical-generator@1.15.4(@types/node@20.7.1):      resolution: {integrity: sha512-drXe4RLkfNlvDvdy/E6BUI9p+01L3ySK1ufNEYI9TxNKG9ZA3G60QWoZvD1dtmH4scwDxYu6/sZBPJvYVNrj8A==}      engines: {node: '>=6.0.0'} @@ -1718,7 +2100,6 @@ packages:    /ieee754@1.2.1:      resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} -    dev: false    /ignore-by-default@1.0.1:      resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} @@ -1748,6 +2129,11 @@ packages:      engines: {node: '>=0.8.19'}      dev: true +  /indent-string@4.0.0: +    resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} +    engines: {node: '>=8'} +    dev: true +    /inflight@1.0.6:      resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}      dependencies: @@ -1757,6 +2143,11 @@ packages:    /inherits@2.0.4:      resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} +  /ini@2.0.0: +    resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} +    engines: {node: '>=10'} +    dev: true +    /ipaddr.js@1.9.1:      resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}      engines: {node: '>= 0.10'} @@ -1769,11 +2160,23 @@ packages:        binary-extensions: 2.2.0      dev: true +  /is-ci@3.0.1: +    resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} +    hasBin: true +    dependencies: +      ci-info: 3.9.0 +    dev: true +    /is-extglob@2.1.1:      resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}      engines: {node: '>=0.10.0'}      dev: true +  /is-fullwidth-code-point@3.0.0: +    resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} +    engines: {node: '>=8'} +    dev: true +    /is-function@1.0.2:      resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==}      dev: false @@ -1785,6 +2188,14 @@ packages:        is-extglob: 2.1.1      dev: true +  /is-installed-globally@0.4.0: +    resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} +    engines: {node: '>=10'} +    dependencies: +      global-dirs: 3.0.1 +      is-path-inside: 3.0.3 +    dev: true +    /is-nan@1.3.2:      resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==}      engines: {node: '>= 0.4'} @@ -1808,9 +2219,18 @@ packages:      engines: {node: '>=0.10.0'}      dev: false +  /is-stream@2.0.1: +    resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} +    engines: {node: '>=8'} +    dev: true +    /is-typedarray@1.0.0:      resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} -    dev: false + +  /is-unicode-supported@0.1.0: +    resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} +    engines: {node: '>=10'} +    dev: true    /isarray@1.0.0:      resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -1822,7 +2242,6 @@ packages:    /isstream@0.1.2:      resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} -    dev: false    /jimp@0.16.13:      resolution: {integrity: sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==} @@ -1834,6 +2253,16 @@ packages:        regenerator-runtime: 0.13.11      dev: false +  /joi@17.11.0: +    resolution: {integrity: sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==} +    dependencies: +      '@hapi/hoek': 9.3.0 +      '@hapi/topo': 5.1.0 +      '@sideway/address': 4.1.4 +      '@sideway/formula': 3.0.1 +      '@sideway/pinpoint': 2.0.0 +    dev: false +    /jpeg-js@0.4.4:      resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==}      dev: false @@ -1847,7 +2276,6 @@ packages:    /jsbn@0.1.1:      resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} -    dev: false    /json-buffer@3.0.1:      resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -1858,7 +2286,6 @@ packages:    /json-schema@0.4.0:      resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} -    dev: false    /json-stable-stringify-without-jsonify@1.0.1:      resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -1866,7 +2293,14 @@ packages:    /json-stringify-safe@5.0.1:      resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} -    dev: false + +  /jsonfile@6.1.0: +    resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} +    dependencies: +      universalify: 2.0.0 +    optionalDependencies: +      graceful-fs: 4.2.11 +    dev: true    /jsprim@1.4.2:      resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} @@ -1878,6 +2312,16 @@ packages:        verror: 1.10.0      dev: false +  /jsprim@2.0.2: +    resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} +    engines: {'0': node >=0.6.0} +    dependencies: +      assert-plus: 1.0.0 +      extsprintf: 1.3.0 +      json-schema: 0.4.0 +      verror: 1.10.0 +    dev: true +    /kareem@2.3.2:      resolution: {integrity: sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==}      dev: false @@ -1888,6 +2332,11 @@ packages:        json-buffer: 3.0.1      dev: true +  /lazy-ass@1.6.0: +    resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} +    engines: {node: '> 0.8'} +    dev: true +    /levn@0.4.1:      resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}      engines: {node: '>= 0.8.0'} @@ -1896,6 +2345,26 @@ packages:        type-check: 0.4.0      dev: true +  /listr2@3.14.0(enquirer@2.4.1): +    resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} +    engines: {node: '>=10.0.0'} +    peerDependencies: +      enquirer: '>= 2.3.0 < 3' +    peerDependenciesMeta: +      enquirer: +        optional: true +    dependencies: +      cli-truncate: 2.1.0 +      colorette: 2.0.20 +      enquirer: 2.4.1 +      log-update: 4.0.0 +      p-map: 4.0.0 +      rfdc: 1.3.0 +      rxjs: 7.8.1 +      through: 2.3.8 +      wrap-ansi: 7.0.0 +    dev: true +    /load-bmfont@1.4.1:      resolution: {integrity: sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==}      dependencies: @@ -1920,14 +2389,42 @@ packages:      resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}      dev: true +  /lodash.once@4.1.1: +    resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} +    dev: true +    /lodash@4.17.21:      resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} -    dev: false + +  /log-symbols@4.1.0: +    resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} +    engines: {node: '>=10'} +    dependencies: +      chalk: 4.1.2 +      is-unicode-supported: 0.1.0 +    dev: true + +  /log-update@4.0.0: +    resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} +    engines: {node: '>=10'} +    dependencies: +      ansi-escapes: 4.3.2 +      cli-cursor: 3.1.0 +      slice-ansi: 4.0.0 +      wrap-ansi: 6.2.0 +    dev: true    /long-timeout@0.1.1:      resolution: {integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==}      dev: false +  /lru-cache@6.0.0: +    resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} +    engines: {node: '>=10'} +    dependencies: +      yallist: 4.0.0 +    dev: true +    /luxon@1.28.1:      resolution: {integrity: sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw==}      requiresBuild: true @@ -1954,6 +2451,10 @@ packages:      resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==}      dev: false +  /merge-stream@2.0.0: +    resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} +    dev: true +    /methods@1.1.2:      resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}      engines: {node: '>= 0.6'} @@ -1962,14 +2463,12 @@ packages:    /mime-db@1.52.0:      resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}      engines: {node: '>= 0.6'} -    dev: false    /mime-types@2.1.35:      resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}      engines: {node: '>= 0.6'}      dependencies:        mime-db: 1.52.0 -    dev: false    /mime@1.6.0:      resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} @@ -1977,6 +2476,11 @@ packages:      hasBin: true      dev: false +  /mimic-fn@2.1.0: +    resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} +    engines: {node: '>=6'} +    dev: true +    /min-document@2.19.0:      resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==}      dependencies: @@ -1998,7 +2502,6 @@ packages:    /minimist@1.2.8:      resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} -    dev: false    /mkdirp@0.5.6:      resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} @@ -2182,6 +2685,13 @@ packages:      engines: {node: '>=0.10.0'}      dev: true +  /npm-run-path@4.0.1: +    resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} +    engines: {node: '>=8'} +    dependencies: +      path-key: 3.1.1 +    dev: true +    /oauth-sign@0.9.0:      resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==}      dev: false @@ -2193,7 +2703,6 @@ packages:    /object-inspect@1.12.3:      resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} -    dev: false    /object-keys@1.1.1:      resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} @@ -2221,6 +2730,13 @@ packages:      dependencies:        wrappy: 1.0.2 +  /onetime@5.1.2: +    resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} +    engines: {node: '>=6'} +    dependencies: +      mimic-fn: 2.1.0 +    dev: true +    /optional-require@1.0.3:      resolution: {integrity: sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA==}      engines: {node: '>=4'} @@ -2245,6 +2761,10 @@ packages:        type-check: 0.4.0      dev: true +  /ospath@1.2.2: +    resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==} +    dev: true +    /p-limit@3.1.0:      resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}      engines: {node: '>=10'} @@ -2259,6 +2779,13 @@ packages:        p-limit: 3.1.0      dev: true +  /p-map@4.0.0: +    resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} +    engines: {node: '>=10'} +    dependencies: +      aggregate-error: 3.1.0 +    dev: true +    /pako@1.0.11:      resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}      dev: false @@ -2322,9 +2849,12 @@ packages:      engines: {node: '>=8'}      dev: false +  /pend@1.2.0: +    resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} +    dev: true +    /performance-now@2.1.0:      resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} -    dev: false    /phin@2.9.3:      resolution: {integrity: sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==} @@ -2339,6 +2869,11 @@ packages:      engines: {node: '>=8.6'}      dev: true +  /pify@2.3.0: +    resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} +    engines: {node: '>=0.10.0'} +    dev: true +    /pixelmatch@4.0.2:      resolution: {integrity: sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==}      hasBin: true @@ -2371,6 +2906,11 @@ packages:      hasBin: true      dev: true +  /pretty-bytes@5.6.0: +    resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} +    engines: {node: '>=6'} +    dev: true +    /process-nextick-args@2.0.1:      resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}      dev: false @@ -2378,7 +2918,6 @@ packages:    /process@0.11.10:      resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}      engines: {node: '>= 0.6.0'} -    dev: false    /proxy-addr@2.0.7:      resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} @@ -2388,18 +2927,35 @@ packages:        ipaddr.js: 1.9.1      dev: false +  /proxy-from-env@1.0.0: +    resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==} +    dev: true +    /psl@1.9.0:      resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} -    dev: false    /pstree.remy@1.1.8:      resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==}      dev: true +  /pump@3.0.0: +    resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} +    dependencies: +      end-of-stream: 1.4.4 +      once: 1.4.0 +    dev: true +    /punycode@2.3.0:      resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}      engines: {node: '>=6'} +  /qs@6.10.4: +    resolution: {integrity: sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==} +    engines: {node: '>=0.6'} +    dependencies: +      side-channel: 1.0.4 +    dev: true +    /qs@6.11.0:      resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}      engines: {node: '>=0.6'} @@ -2412,6 +2968,10 @@ packages:      engines: {node: '>=0.6'}      dev: false +  /querystringify@2.2.0: +    resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} +    dev: true +    /queue-microtask@1.2.3:      resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}      dev: true @@ -2500,6 +3060,12 @@ packages:      resolution: {integrity: sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==}      dev: false +  /request-progress@3.0.0: +    resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} +    dependencies: +      throttleit: 1.0.0 +    dev: true +    /request@2.88.2:      resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==}      engines: {node: '>= 6'} @@ -2532,16 +3098,32 @@ packages:      engines: {node: '>=4'}      dev: false +  /requires-port@1.0.0: +    resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} +    dev: true +    /resolve-from@4.0.0:      resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}      engines: {node: '>=4'}      dev: true +  /restore-cursor@3.1.0: +    resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} +    engines: {node: '>=8'} +    dependencies: +      onetime: 5.1.2 +      signal-exit: 3.0.7 +    dev: true +    /reusify@1.0.4:      resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}      engines: {iojs: '>=1.0.0', node: '>=0.10.0'}      dev: true +  /rfdc@1.3.0: +    resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} +    dev: true +    /rimraf@3.0.2:      resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}      hasBin: true @@ -2561,17 +3143,20 @@ packages:        queue-microtask: 1.2.3      dev: true +  /rxjs@7.8.1: +    resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} +    dependencies: +      tslib: 2.6.2 +    /safe-buffer@5.1.2:      resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}      dev: false    /safe-buffer@5.2.1:      resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} -    dev: false    /safer-buffer@2.1.2:      resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} -    dev: false    /sanitize-html@2.11.0:      resolution: {integrity: sha512-BG68EDHRaGKqlsNjJ2xUB7gpInPA8gVx/mvjO743hZaeMCZ2DwzW7xvsqZ+KNU4QKwj86HJ3uu2liISf2qBBUA==} @@ -2607,6 +3192,14 @@ packages:      hasBin: true      dev: true +  /semver@7.5.4: +    resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} +    engines: {node: '>=10'} +    hasBin: true +    dependencies: +      lru-cache: 6.0.0 +    dev: true +    /send@0.18.0:      resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}      engines: {node: '>= 0.8.0'} @@ -2662,12 +3255,15 @@ packages:        call-bind: 1.0.2        get-intrinsic: 1.2.1        object-inspect: 1.12.3 -    dev: false    /sift@13.5.2:      resolution: {integrity: sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==}      dev: false +  /signal-exit@3.0.7: +    resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} +    dev: true +    /simple-update-notifier@1.1.0:      resolution: {integrity: sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==}      engines: {node: '>=8.10.0'} @@ -2675,6 +3271,24 @@ packages:        semver: 7.0.0      dev: true +  /slice-ansi@3.0.0: +    resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} +    engines: {node: '>=8'} +    dependencies: +      ansi-styles: 4.3.0 +      astral-regex: 2.0.0 +      is-fullwidth-code-point: 3.0.0 +    dev: true + +  /slice-ansi@4.0.0: +    resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} +    engines: {node: '>=10'} +    dependencies: +      ansi-styles: 4.3.0 +      astral-regex: 2.0.0 +      is-fullwidth-code-point: 3.0.0 +    dev: true +    /sliced@1.0.1:      resolution: {integrity: sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==}      dev: false @@ -2714,7 +3328,6 @@ packages:        jsbn: 0.1.1        safer-buffer: 2.1.2        tweetnacl: 0.14.5 -    dev: false    /statuses@2.0.1:      resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} @@ -2726,6 +3339,15 @@ packages:      engines: {node: '>=10.0.0'}      dev: false +  /string-width@4.2.3: +    resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} +    engines: {node: '>=8'} +    dependencies: +      emoji-regex: 8.0.0 +      is-fullwidth-code-point: 3.0.0 +      strip-ansi: 6.0.1 +    dev: true +    /string_decoder@1.1.1:      resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}      dependencies: @@ -2745,6 +3367,11 @@ packages:        ansi-regex: 5.0.1      dev: true +  /strip-final-newline@2.0.0: +    resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} +    engines: {node: '>=6'} +    dev: true +    /strip-json-comments@3.1.1:      resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}      engines: {node: '>=8'} @@ -2771,10 +3398,25 @@ packages:        has-flag: 4.0.0      dev: true +  /supports-color@8.1.1: +    resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} +    engines: {node: '>=10'} +    dependencies: +      has-flag: 4.0.0 +    dev: true +    /text-table@0.2.0:      resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}      dev: true +  /throttleit@1.0.0: +    resolution: {integrity: sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==} +    dev: true + +  /through@2.3.8: +    resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} +    dev: true +    /timm@1.7.1:      resolution: {integrity: sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==}      dev: false @@ -2783,6 +3425,13 @@ packages:      resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==}      dev: false +  /tmp@0.2.1: +    resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} +    engines: {node: '>=8.17.0'} +    dependencies: +      rimraf: 3.0.2 +    dev: true +    /to-regex-range@5.0.1:      resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}      engines: {node: '>=8.0'} @@ -2822,15 +3471,26 @@ packages:        punycode: 2.3.0      dev: false +  /tough-cookie@4.1.3: +    resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} +    engines: {node: '>=6'} +    dependencies: +      psl: 1.9.0 +      punycode: 2.3.0 +      universalify: 0.2.0 +      url-parse: 1.5.10 +    dev: true + +  /tslib@2.6.2: +    resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} +    /tunnel-agent@0.6.0:      resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}      dependencies:        safe-buffer: 5.2.1 -    dev: false    /tweetnacl@0.14.5:      resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} -    dev: false    /type-check@0.4.0:      resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} @@ -2844,6 +3504,11 @@ packages:      engines: {node: '>=10'}      dev: true +  /type-fest@0.21.3: +    resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} +    engines: {node: '>=10'} +    dev: true +    /type-is@1.6.18:      resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}      engines: {node: '>= 0.6'} @@ -2877,16 +3542,38 @@ packages:      resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==}      dev: true +  /universalify@0.2.0: +    resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} +    engines: {node: '>= 4.0.0'} +    dev: true + +  /universalify@2.0.0: +    resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} +    engines: {node: '>= 10.0.0'} +    dev: true +    /unpipe@1.0.0:      resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}      engines: {node: '>= 0.8'}      dev: false +  /untildify@4.0.0: +    resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} +    engines: {node: '>=8'} +    dev: true +    /uri-js@4.4.1:      resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}      dependencies:        punycode: 2.3.0 +  /url-parse@1.5.10: +    resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} +    dependencies: +      querystringify: 2.2.0 +      requires-port: 1.0.0 +    dev: true +    /utif@2.0.1:      resolution: {integrity: sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==}      dependencies: @@ -2908,6 +3595,11 @@ packages:      hasBin: true      dev: false +  /uuid@8.3.2: +    resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} +    hasBin: true +    dev: true +    /validator@13.11.0:      resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==}      engines: {node: '>= 0.10'} @@ -2925,6 +3617,19 @@ packages:        assert-plus: 1.0.0        core-util-is: 1.0.2        extsprintf: 1.3.0 + +  /wait-on@7.0.1: +    resolution: {integrity: sha512-9AnJE9qTjRQOlTZIldAaf/da2eW0eSRSgcqq85mXQja/DW3MriHxkpODDSUEg+Gri/rKEcXUZHe+cevvYItaog==} +    engines: {node: '>=12.0.0'} +    hasBin: true +    dependencies: +      axios: 0.27.2 +      joi: 17.11.0 +      lodash: 4.17.21 +      minimist: 1.2.8 +      rxjs: 7.8.1 +    transitivePeerDependencies: +      - debug      dev: false    /which@2.0.2: @@ -2939,6 +3644,24 @@ packages:      resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}      dev: false +  /wrap-ansi@6.2.0: +    resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} +    engines: {node: '>=8'} +    dependencies: +      ansi-styles: 4.3.0 +      string-width: 4.2.3 +      strip-ansi: 6.0.1 +    dev: true + +  /wrap-ansi@7.0.0: +    resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} +    engines: {node: '>=10'} +    dependencies: +      ansi-styles: 4.3.0 +      string-width: 4.2.3 +      strip-ansi: 6.0.1 +    dev: true +    /wrappy@1.0.2:      resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -2973,6 +3696,17 @@ packages:      engines: {node: '>=0.4'}      dev: false +  /yallist@4.0.0: +    resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} +    dev: true + +  /yauzl@2.10.0: +    resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} +    dependencies: +      buffer-crc32: 0.2.13 +      fd-slicer: 1.1.0 +    dev: true +    /yocto-queue@0.1.0:      resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}      engines: {node: '>=10'} diff --git a/tsconfig.json b/tsconfig.json index 04519ef..89f1604 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -16,7 +16,7 @@      "experimentalDecorators": true,      "emitDecoratorMetadata": true,      "moduleResolution": "nodenext", -    "skipLibCheck": true +    "skipLibCheck": true,    },    "include": ["src/**/*"]  } diff --git a/views/event.handlebars b/views/event.handlebars index 6694ea2..1576647 100755 --- a/views/event.handlebars +++ b/views/event.handlebars @@ -40,7 +40,7 @@              </span>            </li>            {{#if eventHasHost}} -            <li> +            <li id="hosted-by">                <span class="fa-li">                  <i class="fas fa-fw fa-user-circle"></i>                </span> @@ -118,7 +118,7 @@      <span aria-hidden="true">×</span>    </button>    <p>Welcome to your event!</p> -  <p>Your secret editing password for this event is: <strong>{{eventData.editToken}}</strong>. It's been saved in your browser storage, and if you supplied your email, it's also been sent to you. If you didn't supply your email, you <strong>must save it somewhere safe</strong>, because it won't be shown again!</p> +  <p>Your secret editing password for this event is: <strong id="eventEditToken">{{eventData.editToken}}</strong>. It's been saved in your browser storage, and if you supplied your email, it's also been sent to you. If you didn't supply your email, you <strong>must save it somewhere safe</strong>, because it won't be shown again!</p>    <p>To share your event, use the link you can see just above this message - that way your attendees won't be able to edit or delete your event!</p>  </div>  {{/if}} @@ -136,15 +136,15 @@        {{#unless noMoreSpots}}          <button type="button" id="attendEvent" class="btn btn-success" data-event-id="{{eventData.id}}"><i class="fas fa-user-plus"></i> Add me</button>        {{/unless}} -      <button type="button" id="unattendEvent" class="btn btn-secondary" data-toggle="modal" data-target="#unattendModal"><i class="fas fa-user-times"></i> Remove me</button> +      <button type="button" id="unattendEvent" class="btn btn-seco.split("?")[0];dary" data-toggle="modal" data-target="#unattendModal"><i class="fas fa-user-times"></i> Remove me</button>      </div>    </h5>    <div class="card-body">      {{#if eventData.maxAttendees}}        {{#if noMoreSpots}} -        <div class="alert alert-warning text-center">This event is at capacity.</div> +        <div class="alert alert-warning text-center" id="attendees-alert">This event is at capacity.</div>        {{else}} -        <div class="alert alert-warning text-center">{{spotsRemaining}} {{plural spotsRemaining "spot(s)"}} remaining - add yourself now!</div> +        <div class="alert alert-warning text-center" id="attendees-alert">{{spotsRemaining}} {{plural spotsRemaining "spot(s)"}} remaining - add yourself now!</div>        {{/if}}      {{/if}}      {{#if eventAttendees}} diff --git a/views/partials/neweventform.handlebars b/views/partials/neweventform.handlebars index f2175ff..d456d2e 100755 --- a/views/partials/neweventform.handlebars +++ b/views/partials/neweventform.handlebars @@ -136,7 +136,7 @@    </div>    <div class="form-group row">      <div class="col-sm-12 pt-3 pb-3 text-center"> -      <button type="submit" class="btn btn-primary w-50">Create</button> +      <button id="newEventFormSubmit" type="submit" class="btn btn-primary w-50">Create</button>      </div>    </div>  </form>  | 
