From f2804985b69eea234f791fe9fd422eb283d2cab3 Mon Sep 17 00:00:00 2001 From: Emma Chen Date: Mon, 3 Oct 2022 12:08:28 -0600 Subject: [PATCH 1/6] add userAgentDetail field to oauth sample apps and fix various README formatting issues --- connect-examples/oauth/java/README.md | 34 +- connect-examples/oauth/java/pom.xml | 20 +- .../squareup/oauthexample/OAuthHandler.java | 55 +- connect-examples/oauth/node/README.md | 26 +- connect-examples/oauth/node/index.js | 3 +- connect-examples/oauth/node/package-lock.json | 1387 ++++++++++------- connect-examples/oauth/node/package.json | 2 +- connect-examples/oauth/php/README.md | 20 +- connect-examples/oauth/php/callback.php | 3 +- connect-examples/oauth/php/composer.json | 2 +- .../oauth/python-aws-chalice/README.md | 92 +- .../chalicelib/oauthClient.py | 1 + .../oauth/python-aws-chalice/requirements.txt | 2 +- connect-examples/oauth/python/oauth-flow.py | 3 +- .../oauth/python/requirements.txt | 2 +- connect-examples/oauth/ruby/Gemfile | 4 +- connect-examples/oauth/ruby/Gemfile.lock | 144 +- connect-examples/oauth/ruby/README.md | 13 +- .../v2/node_subscription/README.md | 362 ++--- connect-examples/v2/php_checkout/README.md | 3 +- connect-examples/v2/python_payment/README.md | 35 +- 21 files changed, 1198 insertions(+), 1015 deletions(-) diff --git a/connect-examples/oauth/java/README.md b/connect-examples/oauth/java/README.md index d4178fb0e..7570791fa 100644 --- a/connect-examples/oauth/java/README.md +++ b/connect-examples/oauth/java/README.md @@ -1,7 +1,6 @@ # Connect OAuth Flow Example (Java) -This example demonstrates a bare-bones Java implementation of the Square Connect -OAuth flow. The application links merchants to the OAuth Permissions form and +This example demonstrates a bare-bones Java implementation of the Square ConnectOAuth flow. The application links merchants to the OAuth Permissions form and handles the result of the authorization, which is sent to the application's Redirect URL. For more information, see [OAuth Overview](https://developer.squareup.com/docs/oauth-api/overview), @@ -10,45 +9,43 @@ along with the comments included in `OAuthHandler.java`. ## Setup ### Square Sandbox testing + If you want to run this sample against the Square Sandbox environment: 1. Set your application dashboard to **Sandbox Settings** mode before completing -the following steps. + the following steps. 1. Add a new **Sandbox Test Account**: a. Click **New Account** on the dashboard home page.
b. Give the account a name and pick a country.
c. Uncheck **Automatically create authorizations for all my current apps**.
-1. Click **Launch** on the new test account to open the sandbox seller dashboard -for the account. The OAuth flow will create an authorization for this account. +1. Click **Launch** on the new test account to open the sandbox seller dashboard for the account. The OAuth flow will create an authorization for this account. ### Set your application's Redirect URL On your application dashboard, set your application's Redirect URL to `http://localhost:8000/callback`. -Note that applications that don't use a `localhost` URL must use HTTPS. HTTP is -allowed for `localhost` URLs to simplify the development process. +Note that applications that don't use a `localhost` URL must use HTTPS. HTTP is allowed for `localhost` URLs to simplify the development process. ### Specify your application credentials In order for the sample to work, you must specify the following fields in `OAuthHandler.java`: -* Set the value of `ENVIRONMENT` to one of `Environment.SANDBOX`, `Environment.PRODUCTION` or `Environment.CUSTOM` - -* For sandbox testing, set the value of `CONNECT_HOST` to `https://connect.squareupsandbox.com`. -Otherwise, use `https://connect.squareup.com` +- Set the value of `ENVIRONMENT` to one of `Environment.SANDBOX`, `Environment.PRODUCTION` or `Environment.CUSTOM` -* Replace the value of `APPLICATION_ID` with your application's ID, available on your -[application dashboard](https://connect.squareup.com/apps). +- For sandbox testing, set the value of `CONNECT_HOST` to `https://connect.squareupsandbox.com`. + Otherwise, use `https://connect.squareup.com` -* Replace the value of `APPLICATION_SECRET` with the application secret, available from the OAuth tab in the Developer Dashboard +- Replace the value of `APPLICATION_ID` with your application's ID, available on your + [application dashboard](https://connect.squareup.com/apps). -* (OPTIONAL) Change the values in the list `SCOPES` to the [permission set](../OAuthPermissions.md) you -want to authorize the account to get authorization for. If you do not set this value, -`MERCHANT_PROFILE_READ PAYMENTS_READ SETTLEMENTS_READ BANK_ACCOUNTS_READ` are applied. +- Replace the value of `APPLICATION_SECRET` with the application secret, available from the OAuth tab in the Developer Dashboard +- (OPTIONAL) Change the values in the list `SCOPES` to the [permission set](../OAuthPermissions.md) you + want to authorize the account to get authorization for. If you do not set this value, + `MERCHANT_PROFILE_READ PAYMENTS_READ SETTLEMENTS_READ BANK_ACCOUNTS_READ` are applied. ### Compile with Maven @@ -67,4 +64,5 @@ You can then proceed through the OAuth flow by going to `http://localhost:8000` in your web browser. ## Feedback -Rate this sample app [here](https://delighted.com/t/Z1xmKSqy)! \ No newline at end of file + +Rate this sample app [here](https://delighted.com/t/Z1xmKSqy)! diff --git a/connect-examples/oauth/java/pom.xml b/connect-examples/oauth/java/pom.xml index 39ed9ea3e..9df412f33 100644 --- a/connect-examples/oauth/java/pom.xml +++ b/connect-examples/oauth/java/pom.xml @@ -1,24 +1,22 @@ - + 4.0.0 com.squareup oauthexample 1.5-SNAPSHOT - - - com.konghq - unirest-java - 3.11.09 - + + + com.konghq + unirest-java + 3.11.09 + com.squareup square - 10.0.0.20210421 + 22.0.0.20220720 compile @@ -48,4 +46,4 @@ - + \ No newline at end of file diff --git a/connect-examples/oauth/java/src/main/java/com/squareup/oauthexample/OAuthHandler.java b/connect-examples/oauth/java/src/main/java/com/squareup/oauthexample/OAuthHandler.java index 98fd47f2c..efce39ccf 100644 --- a/connect-examples/oauth/java/src/main/java/com/squareup/oauthexample/OAuthHandler.java +++ b/connect-examples/oauth/java/src/main/java/com/squareup/oauthexample/OAuthHandler.java @@ -45,13 +45,17 @@ public class OAuthHandler { // Options are Environment.SANDBOX, Environment.PRODUCTION private static final Environment ENVIRONMENT = Environment.SANDBOX; - // Your application's ID and secret, available from the OAuth tab in the Developer Dashboard - // If you are testing the OAuth flow in the sandbox, use your sandbox application - // ID and secret. If you are testing in production, use the production application ID and secret. - private static final String APPLICATION_ID = "REPLACE ME"; - private static final String APPLICATION_SECRET = "REPLACE ME"; + // Your application's ID and secret, available from the OAuth tab in the + // Developer Dashboard + // If you are testing the OAuth flow in the sandbox, use your sandbox + // application + // ID and secret. If you are testing in production, use the production + // application ID and secret. + private static final String APPLICATION_ID = "REPLACE ME"; + private static final String APPLICATION_SECRET = "REPLACE ME"; // Modify this list as needed - private static final String[] SCOPES = { "MERCHANT_PROFILE_READ", "PAYMENTS_WRITE_ADDITIONAL_RECIPIENTS", "PAYMENTS_WRITE", "PAYMENTS_READ" }; + private static final String[] SCOPES = { "MERCHANT_PROFILE_READ", "PAYMENTS_WRITE_ADDITIONAL_RECIPIENTS", + "PAYMENTS_WRITE", "PAYMENTS_READ" }; // Serves the authorize link static class AuthorizeHandler implements HttpHandler { @@ -59,7 +63,8 @@ static class AuthorizeHandler implements HttpHandler { public void handle(HttpExchange t) throws IOException { String connect_host; - // For testing in sandbox, the base url is "https://connect.squareupsandbox.com", + // For testing in sandbox, the base url is + // "https://connect.squareupsandbox.com", // and https://connect.squareup.com for production mode if (ENVIRONMENT == Environment.SANDBOX) { connect_host = "https://connect.squareupsandbox.com"; @@ -73,13 +78,12 @@ public void handle(HttpExchange t) throws IOException { t.getResponseBody().close(); } - String authorizeURL = String.format( - "Click here ", - connect_host, - APPLICATION_ID, - String.join("+", SCOPES)) - + "to authorize the application."; + "Click here ", + connect_host, + APPLICATION_ID, + String.join("+", SCOPES)) + + "to authorize the application."; System.out.println(authorizeURL); @@ -111,7 +115,7 @@ public void handle(HttpExchange t) throws IOException { for (NameValuePair param : queryParameters) { System.out.println(param.getName()); System.out.println(param.getValue()); - if(param.getName().equals("code")) { + if (param.getName().equals("code")) { authorizationCode = param.getValue(); break; } @@ -128,8 +132,9 @@ public void handle(HttpExchange t) throws IOException { } SquareClient client = new SquareClient.Builder() - .environment(ENVIRONMENT) - .build(); + .environment(ENVIRONMENT) + .userAgentDetail("sample_app_oauth_java") + .build(); List bodyScopes = new LinkedList<>(); for (String scope : SCOPES) { @@ -138,19 +143,19 @@ public void handle(HttpExchange t) throws IOException { // Create obtain token request body ObtainTokenRequest body = new ObtainTokenRequest.Builder( - APPLICATION_ID, - APPLICATION_SECRET, - "authorization_code") - .code(authorizationCode) - .scopes(bodyScopes) - .build(); + APPLICATION_ID, + APPLICATION_SECRET, + "authorization_code") + .code(authorizationCode) + .scopes(bodyScopes) + .build(); OAuthApi oAuthApi = client.getOAuthApi(); // Call obtain token API and print the results on success - // In production, you should never write tokens to the page. - // You should encrypt the tokens and handle them securely. - oAuthApi.obtainTokenAsync(body).thenAccept(result -> { + // In production, you should never write tokens to the page. + // You should encrypt the tokens and handle them securely. + oAuthApi.obtainTokenAsync(body).thenAccept(result -> { if (result != null) { System.out.println("Access token: " + result.getAccessToken()); System.out.println("Refresh token: " + result.getRefreshToken()); diff --git a/connect-examples/oauth/node/README.md b/connect-examples/oauth/node/README.md index 695a1af9e..862063186 100644 --- a/connect-examples/oauth/node/README.md +++ b/connect-examples/oauth/node/README.md @@ -1,16 +1,12 @@ # Square OAuth Flow Example (Node.js) -This example demonstrates a bare-bones Node.js implementation of the OAuth flow for -Square APIs. It serves a link that directs merchants to the OAuth Permissions form -and handles the result of the authorization, which is sent to your application's -Redirect URL (specified on the application dashboard). +This example demonstrates a bare-bones Node.js implementation of the OAuth flow for Square APIs. It serves a link that directs merchants to the OAuth Permissions form and handles the result of the authorization, which is sent to your application's Redirect URL (specified on the application dashboard). ## Getting started ### Step 1: Download dependencies -This application requires the Node.js Square SDK and Express, which you install via -npm. Open your terminal in this directory and type: +This application requires the Node.js Square SDK and Express, which you install via npm. Open your terminal in this directory and type: ``` npm install @@ -23,9 +19,10 @@ npm install 1. At the top of the page, set the dashboard mode to the environment that you want to work with by choosing **Sandbox** or **Production**. 1. Choose **OAuth** in the left navigation pane. The OAuth page is shown. 1. In the **Redirect URL** box, enter the URL for the callback you will implement to complete the OAuth flow: - `http://localhost:8000/callback` + `http://localhost:8000/callback` + + You can use HTTP for localhost but an actual web server implementation must use HTTPS. - You can use HTTP for localhost but an actual web server implementation must use HTTPS. 1. In the **Application ID** box, copy the application ID. 1. In the **Application Secret** box, choose **Show**, and then copy the application secret. 1. Click **Save**. @@ -33,7 +30,7 @@ npm install 1. In the newly created .env file, replace the `your-environment` with either `sandbox` or `production` 1. Replace the `your-application-id` and `your-application-secret` placeholders with the Sandbox or Production application ID and application secret, respectively. - Note that OAuth Sandbox credentials begin with a sandbox prefix and that the base URL for calling Sandbox endpoints is https://connect.squareupsandbox.com. When you implement for production, you need production credentials and use https://connect.squareup.com as the base URL. + Note that OAuth Sandbox credentials begin with a sandbox prefix and that the base URL for calling Sandbox endpoints is https://connect.squareupsandbox.com. When you implement for production, you need production credentials and use https://connect.squareup.com as the base URL. **WARNING**: Never check your credentials/access_token into your version control system. We've added `.env` to the `.gitignore` file to help prevent uploading confidential information. @@ -45,15 +42,17 @@ npm install 1. Start the Node server, if it is not running: - ``` - npm start - ``` + ``` + npm start + ``` 1. Open http://localhost:8000/request_token to start. # License + Copyright 2020 Square, Inc. ​ + ``` Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -69,4 +68,5 @@ limitations under the License. ``` ## Feedback -Rate this sample app [here](https://delighted.com/t/Z1xmKSqy)! \ No newline at end of file + +Rate this sample app [here](https://delighted.com/t/Z1xmKSqy)! diff --git a/connect-examples/oauth/node/index.js b/connect-examples/oauth/node/index.js index 8ee31d9fd..c3e35ad82 100644 --- a/connect-examples/oauth/node/index.js +++ b/connect-examples/oauth/node/index.js @@ -65,7 +65,8 @@ const messages = require('./messages'); // Configure Square defcault client const squareClient = new Client({ - environment: environment + environment: environment, + userAgentDetail: "sample_app_oauth_node" }); // Configure Square OAuth API instance diff --git a/connect-examples/oauth/node/package-lock.json b/connect-examples/oauth/node/package-lock.json index a4727c61a..8e15d6718 100644 --- a/connect-examples/oauth/node/package-lock.json +++ b/connect-examples/oauth/node/package-lock.json @@ -14,162 +14,207 @@ "ejs": "*", "express": "*", "md5": "*", - "square": "^8.0.0" + "square": "^22.0.0" } }, + "node_modules/@apimatic/convert-to-stream": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@apimatic/convert-to-stream/-/convert-to-stream-0.0.2.tgz", + "integrity": "sha512-1DRg17ItExfMYsXwjt6WIjJSCgV5RGg3fHPLgYD44/YmiU+7suWj7YfPKKUqmNcnJ/AvMh4lG1+tHrfOT01zXw==", + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/@apimatic/core": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/@apimatic/core/-/core-0.7.9.tgz", + "integrity": "sha512-zoOXyaZxaZdu9OwwArD70a+1WQQzPenocBjr1tkhOeFv73lXjihxHOOt6dBplQUU/FL279FnKCE/QP4vBipRGw==", + "dependencies": { + "@apimatic/convert-to-stream": "0.0.2", + "@apimatic/json-bigint": "^1.2.0", + "@apimatic/schema": "^0.6.0", + "axios": "^0.21.1", + "detect-browser": "^5.3.0", + "detect-node": "^2.0.4", + "form-data": "^3.0.0", + "lodash.flatmap": "^4.5.0", + "tiny-warning": "^1.0.3", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/@apimatic/json-bigint": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@apimatic/json-bigint/-/json-bigint-1.2.0.tgz", + "integrity": "sha512-+bmVzYMdZu0Ya5L+my4FXFUih54OvQA/qlZsFOYdOoostyUuB27UDrVWQs/WVCmS0ADdo5vTU0eeTrrBkHoySw==" + }, "node_modules/@apimatic/schema": { - "version": "0.4.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/@apimatic/schema/-/schema-0.4.1.tgz", - "integrity": "sha1-y3oSKJWEZjiwH0AsxMoaMvZWqhE=", - "license": "SEE LICENSE IN LICENSE.md", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@apimatic/schema/-/schema-0.6.0.tgz", + "integrity": "sha512-JgG32LQRLphHRWsn64vIt7wD2m+JH46swM6ZrY7g1rdiGiKV5m+A+TBrJKoUUQRmS14azMgePNZY30NauWqzLg==", "dependencies": { - "lodash.flatten": "^4.4.0" + "tslib": "^2.1.0" }, "engines": { - "node": ">=10" + "node": ">=10.4.0" } }, + "node_modules/@types/node": { + "version": "14.18.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.31.tgz", + "integrity": "sha512-vQAnaReSQkEDa8uwAyQby8bYGKu84R/deEc6mg5T8fX6gzCn8QW6rziSgsti1fNvsrswKUKPnVTi7uoB+u62Mw==" + }, "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=", - "license": "MIT", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { "node": ">= 0.6" } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", - "license": "MIT", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/array-flatten": { "version": "1.1.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "license": "MIT" + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, "node_modules/async": { - "version": "0.9.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "license": "MIT" + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, "node_modules/asynckit": { "version": "0.4.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "license": "MIT" + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { "version": "0.21.4", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/axios/-/axios-0.21.4.tgz", - "integrity": "sha1-xnuQ3AVo5cHPKwuFjEO6KOLtpXU=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "dependencies": { "follow-redirects": "^1.14.0" } }, "node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4=", - "license": "MIT" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/body-parser": { - "version": "1.19.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha1-FJmruqknSvPsyfbxA5bJlZQ+MdQ=", - "license": "MIT", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", "dependencies": { - "bytes": "3.1.1", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.6", - "raw-body": "2.4.2", - "type-is": "~1.6.18" + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, "node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/bytes": { - "version": "3.1.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha1-PwGCkctMutmsy25pcLypyIieh5o=", - "license": "MIT", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "engines": { "node": ">= 0.8" } }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", - "license": "MIT", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/charenc": { "version": "0.0.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", "engines": { "node": "*" } }, "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=", - "license": "MIT", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "color-name": "1.1.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "license": "MIT" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/combined-stream": { "version": "1.0.8", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -179,15 +224,13 @@ }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "license": "MIT" + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/content-disposition": { "version": "0.5.4", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha1-i4K076yCUSoCuwsdzsnSxejrW/4=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dependencies": { "safe-buffer": "5.2.1" }, @@ -197,27 +240,24 @@ }, "node_modules/content-type": { "version": "1.0.4", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "engines": { "node": ">= 0.6" } }, "node_modules/cookie": { "version": "0.4.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha1-r9cT/ibr0hupXOth+agRblClN9E=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-parser": { "version": "1.4.6", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/cookie-parser/-/cookie-parser-1.4.6.tgz", - "integrity": "sha1-OsOn01p6A7vH42UHOiYHSCQhRZQ=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", "dependencies": { "cookie": "0.4.1", "cookie-signature": "1.0.6" @@ -228,80 +268,79 @@ }, "node_modules/cookie-signature": { "version": "1.0.6", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "license": "MIT" + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "node_modules/crypt": { "version": "0.0.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", "engines": { "node": "*" } }, "node_modules/debug": { "version": "2.6.9", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { "ms": "2.0.0" } }, "node_modules/delayed-stream": { "version": "1.0.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "engines": { "node": ">=0.4.0" } }, "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "license": "MIT", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "license": "MIT" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-browser": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", + "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" }, "node_modules/detect-node": { "version": "2.1.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha1-yccHdaScPQO8LAbZpzvlUPl4+LE=", - "license": "MIT" + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" }, "node_modules/dotenv": { "version": "8.6.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha1-Bhr2ZNGff02PxuT/m1hM4jety4s=", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", "engines": { "node": ">=10" } }, "node_modules/ee-first": { "version": "1.1.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/ejs": { - "version": "3.1.6", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/ejs/-/ejs-3.1.6.tgz", - "integrity": "sha1-W/0KBol0O7UmizVQzO7rvBcCgio=", - "license": "Apache-2.0", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", "dependencies": { - "jake": "^10.6.1" + "jake": "^10.8.5" }, "bin": { "ejs": "bin/cli.js" @@ -312,70 +351,58 @@ }, "node_modules/encodeurl": { "version": "1.0.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "engines": { "node": ">= 0.8" } }, "node_modules/escape-html": { "version": "1.0.3", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "node_modules/etag": { "version": "1.8.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "engines": { "node": ">= 0.6" } }, "node_modules/express": { - "version": "4.17.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/express/-/express-4.17.2.tgz", - "integrity": "sha1-wYNp8mUpcxm+7U5VWHU8yME2TLM=", - "license": "MIT", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", "dependencies": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.1", + "body-parser": "1.20.0", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.1", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.9.6", + "qs": "6.10.3", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", + "send": "0.18.0", + "serve-static": "1.15.0", "setprototypeof": "1.2.0", - "statuses": "~1.5.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -384,27 +411,52 @@ "node": ">= 0.10.0" } }, + "node_modules/express/node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/filelist": { - "version": "1.0.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/filelist/-/filelist-1.0.2.tgz", - "integrity": "sha1-gCAvIUYtTRwuIUEZsYB8G8A4Dls=", - "license": "Apache-2.0", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dependencies": { - "minimatch": "^3.0.4" + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" } }, "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=", - "license": "MIT", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "engines": { @@ -412,16 +464,15 @@ } }, "node_modules/follow-redirects": { - "version": "1.14.7", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/follow-redirects/-/follow-redirects-1.14.7.tgz", - "integrity": "sha1-IATALrlDbu6aIURqZHfevxfoFoU=", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], - "license": "MIT", "engines": { "node": ">=4.0" }, @@ -433,9 +484,8 @@ }, "node_modules/form-data": { "version": "3.0.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha1-69U3kbeDVqma+aMA1CgsTV65dV8=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -447,52 +497,87 @@ }, "node_modules/forwarded": { "version": "0.2.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha1-ImmTZCiq1MFcfr6XeahL8LKoGBE=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "engines": { "node": ">= 0.6" } }, "node_modules/fresh": { "version": "0.5.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "engines": { "node": ">= 0.6" } }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "license": "MIT", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { - "node": ">=4" + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha1-fD8oV3y8iiBziEVdvWIpXtB71ow=", - "license": "MIT", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dependencies": { - "depd": "~1.1.2", + "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", + "statuses": "2.0.1", "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/iconv-lite": { "version": "0.4.24", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -502,33 +587,29 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=", - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ipaddr.js": { "version": "1.9.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "engines": { "node": ">= 0.10" } }, "node_modules/is-buffer": { "version": "1.1.6", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "node_modules/jake": { - "version": "10.8.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/jake/-/jake-10.8.2.tgz", - "integrity": "sha1-68nehVgWCmbYLQ6txqLlj7xQCns=", - "license": "Apache-2.0", + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", "dependencies": { - "async": "0.9.x", - "chalk": "^2.4.2", + "async": "^3.2.3", + "chalk": "^4.0.2", "filelist": "^1.0.1", "minimatch": "^3.0.4" }, @@ -536,26 +617,18 @@ "jake": "bin/cli.js" }, "engines": { - "node": "*" + "node": ">=10" } }, "node_modules/lodash.flatmap": { "version": "4.5.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz", - "integrity": "sha1-74y/QI9uSCaGYzRTBcaswLd4cC4=", - "license": "MIT" - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz", + "integrity": "sha512-/OcpcAGWlrZyoHGeHh3cAoa6nGdX6QYtmzNP84Jqol6UEQQ2gIaU3H+0eICcjcKGl0/XF8LWOujNn9lffsnaOg==" }, "node_modules/md5": { "version": "2.3.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/md5/-/md5-2.3.0.tgz", - "integrity": "sha1-w9qaaq46MLRreww0m4exENw72k8=", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", "dependencies": { "charenc": "0.0.2", "crypt": "0.0.2", @@ -564,33 +637,29 @@ }, "node_modules/media-typer": { "version": "0.3.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "engines": { "node": ">= 0.6" } }, "node_modules/merge-descriptors": { "version": "1.0.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "license": "MIT" + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, "node_modules/methods": { "version": "1.1.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "engines": { "node": ">= 0.6" } }, "node_modules/mime": { "version": "1.6.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/mime/-/mime-1.6.0.tgz", - "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "bin": { "mime": "cli.js" }, @@ -599,31 +668,28 @@ } }, "node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha1-2f9iRRhZsYNC2WCFDcPPt35j+ww=", - "license": "MIT", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha1-WnEvnsFQNRGpRYA2QPr+CdN5PCQ=", - "license": "MIT", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { - "mime-db": "1.51.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" } }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", - "license": "ISC", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -633,24 +699,29 @@ }, "node_modules/ms": { "version": "2.0.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=", - "license": "MIT", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "engines": { "node": ">= 0.6" } }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "license": "MIT", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dependencies": { "ee-first": "1.1.1" }, @@ -660,24 +731,21 @@ }, "node_modules/parseurl": { "version": "1.3.3", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "engines": { "node": ">= 0.8" } }, "node_modules/path-to-regexp": { "version": "0.1.7", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, "node_modules/proxy-addr": { "version": "2.0.7", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha1-8Z/mnOqzEe65S0LnDowgcPm6ECU=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -687,10 +755,12 @@ } }, "node_modules/qs": { - "version": "6.9.6", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/qs/-/qs-6.9.6.tgz", - "integrity": "sha1-Ju08gkOkMbKSSsqEzJBHHzXVoO4=", - "license": "BSD-3-Clause", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { "node": ">=0.6" }, @@ -700,21 +770,19 @@ }, "node_modules/range-parser": { "version": "1.2.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "engines": { "node": ">= 0.6" } }, "node_modules/raw-body": { - "version": "2.4.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha1-uvPpwh7rztWd1lM6yHK3H3thyzI=", - "license": "MIT", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dependencies": { - "bytes": "3.1.1", - "http-errors": "1.8.1", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, @@ -724,8 +792,8 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -739,34 +807,31 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/send": { - "version": "0.17.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/send/-/send-0.17.2.tgz", - "integrity": "sha1-kmYi92YBxBgIASyL8WiP45BveCA=", - "license": "MIT", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dependencies": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.8.1", + "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" @@ -774,20 +839,18 @@ }, "node_modules/send/node_modules/ms": { "version": "2.1.3", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/ms/-/ms-2.1.3.tgz", - "integrity": "sha1-V0yBOM4dK1hh8LRFedut1gxmFbI=", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/serve-static": { - "version": "1.14.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha1-ci1ilLHWJibUG0OgE+zkWY0pK/o=", - "license": "MIT", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.2" + "send": "0.18.0" }, "engines": { "node": ">= 0.8.0" @@ -795,68 +858,77 @@ }, "node_modules/setprototypeof": { "version": "1.2.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha1-ZsmiSnP5/CjL5msJ/tPTPcrxtCQ=", - "license": "ISC" + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/square": { - "version": "8.1.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/square/-/square-8.1.1.tgz", - "integrity": "sha1-tGApNRkpKlap97Eg+DZkk8PzhVY=", - "license": "MIT", + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/square/-/square-22.0.0.tgz", + "integrity": "sha512-3KZkwml3vIM/fL06bPOTeAyFj1Pn1e1Ps2P/nGFI9tcMMfu+0mxqx4kOLYVkYE2NaCHs/V4pPD/JkO4s9ravqA==", "dependencies": { - "@apimatic/schema": "^0.4.1", - "axios": "^0.21.1", - "detect-node": "^2.0.4", - "form-data": "^3.0.0", - "lodash.flatmap": "^4.5.0", - "tiny-warning": "^1.0.3" + "@apimatic/core": "^0.7.7", + "@apimatic/json-bigint": "^1.2.0", + "@apimatic/schema": "^0.6.0", + "@types/node": "^14.14.30" }, "engines": { - "node": ">=10" + "node": ">=10.4.0" } }, "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "license": "MIT", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", - "license": "MIT", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/tiny-warning": { "version": "1.0.3", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha1-lKMNtFPfTGQ9D9VmBg1gqHXYR1Q=", - "license": "MIT" + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, "node_modules/toidentifier": { "version": "1.0.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha1-O+NDIaiKgg7RvYDfqjPkefu43TU=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "engines": { "node": ">=0.6" } }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, "node_modules/type-is": { "version": "1.6.18", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -867,180 +939,219 @@ }, "node_modules/unpipe": { "version": "1.0.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "engines": { "node": ">= 0.8" } }, "node_modules/utils-merge": { "version": "1.0.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "engines": { "node": ">= 0.4.0" } }, "node_modules/vary": { "version": "1.1.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "license": "MIT", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "engines": { "node": ">= 0.8" } } }, "dependencies": { + "@apimatic/convert-to-stream": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@apimatic/convert-to-stream/-/convert-to-stream-0.0.2.tgz", + "integrity": "sha512-1DRg17ItExfMYsXwjt6WIjJSCgV5RGg3fHPLgYD44/YmiU+7suWj7YfPKKUqmNcnJ/AvMh4lG1+tHrfOT01zXw==" + }, + "@apimatic/core": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/@apimatic/core/-/core-0.7.9.tgz", + "integrity": "sha512-zoOXyaZxaZdu9OwwArD70a+1WQQzPenocBjr1tkhOeFv73lXjihxHOOt6dBplQUU/FL279FnKCE/QP4vBipRGw==", + "requires": { + "@apimatic/convert-to-stream": "0.0.2", + "@apimatic/json-bigint": "^1.2.0", + "@apimatic/schema": "^0.6.0", + "axios": "^0.21.1", + "detect-browser": "^5.3.0", + "detect-node": "^2.0.4", + "form-data": "^3.0.0", + "lodash.flatmap": "^4.5.0", + "tiny-warning": "^1.0.3", + "tslib": "^2.1.0" + } + }, + "@apimatic/json-bigint": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@apimatic/json-bigint/-/json-bigint-1.2.0.tgz", + "integrity": "sha512-+bmVzYMdZu0Ya5L+my4FXFUih54OvQA/qlZsFOYdOoostyUuB27UDrVWQs/WVCmS0ADdo5vTU0eeTrrBkHoySw==" + }, "@apimatic/schema": { - "version": "0.4.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/@apimatic/schema/-/schema-0.4.1.tgz", - "integrity": "sha1-y3oSKJWEZjiwH0AsxMoaMvZWqhE=", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@apimatic/schema/-/schema-0.6.0.tgz", + "integrity": "sha512-JgG32LQRLphHRWsn64vIt7wD2m+JH46swM6ZrY7g1rdiGiKV5m+A+TBrJKoUUQRmS14azMgePNZY30NauWqzLg==", "requires": { - "lodash.flatten": "^4.4.0" + "tslib": "^2.1.0" } }, + "@types/node": { + "version": "14.18.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.31.tgz", + "integrity": "sha512-vQAnaReSQkEDa8uwAyQby8bYGKu84R/deEc6mg5T8fX6gzCn8QW6rziSgsti1fNvsrswKUKPnVTi7uoB+u62Mw==" + }, "accepts": { - "version": "1.3.7", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" } }, "ansi-styles": { - "version": "3.2.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" } }, "array-flatten": { "version": "1.1.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, "async": { - "version": "0.9.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, "asynckit": { "version": "0.4.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "axios": { "version": "0.21.4", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/axios/-/axios-0.21.4.tgz", - "integrity": "sha1-xnuQ3AVo5cHPKwuFjEO6KOLtpXU=", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "requires": { "follow-redirects": "^1.14.0" } }, "balanced-match": { "version": "1.0.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4=" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "body-parser": { - "version": "1.19.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha1-FJmruqknSvPsyfbxA5bJlZQ+MdQ=", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", "requires": { - "bytes": "3.1.1", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.6", - "raw-body": "2.4.2", - "type-is": "~1.6.18" + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" } }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "bytes": { - "version": "3.1.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha1-PwGCkctMutmsy25pcLypyIieh5o=" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } }, "chalk": { - "version": "2.4.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, "charenc": { "version": "0.0.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==" }, "color-convert": { - "version": "1.9.3", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { - "color-name": "1.1.3" + "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "combined-stream": { "version": "1.0.8", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "requires": { "delayed-stream": "~1.0.0" } }, "concat-map": { "version": "0.0.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "content-disposition": { "version": "0.5.4", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha1-i4K076yCUSoCuwsdzsnSxejrW/4=", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "requires": { "safe-buffer": "5.2.1" } }, "content-type": { "version": "1.0.4", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, "cookie": { "version": "0.4.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha1-r9cT/ibr0hupXOth+agRblClN9E=" + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" }, "cookie-parser": { "version": "1.4.6", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/cookie-parser/-/cookie-parser-1.4.6.tgz", - "integrity": "sha1-OsOn01p6A7vH42UHOiYHSCQhRZQ=", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", "requires": { "cookie": "0.4.1", "cookie-signature": "1.0.6" @@ -1048,148 +1159,174 @@ }, "cookie-signature": { "version": "1.0.6", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "crypt": { "version": "0.0.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==" }, "debug": { "version": "2.6.9", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } }, "delayed-stream": { "version": "1.0.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, "depd": { - "version": "1.1.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, "destroy": { - "version": "1.0.4", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "detect-browser": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", + "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" }, "detect-node": { "version": "2.1.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha1-yccHdaScPQO8LAbZpzvlUPl4+LE=" + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" }, "dotenv": { "version": "8.6.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha1-Bhr2ZNGff02PxuT/m1hM4jety4s=" + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" }, "ee-first": { "version": "1.1.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "ejs": { - "version": "3.1.6", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/ejs/-/ejs-3.1.6.tgz", - "integrity": "sha1-W/0KBol0O7UmizVQzO7rvBcCgio=", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", "requires": { - "jake": "^10.6.1" + "jake": "^10.8.5" } }, "encodeurl": { "version": "1.0.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" }, "escape-html": { "version": "1.0.3", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "etag": { "version": "1.8.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" }, "express": { - "version": "4.17.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/express/-/express-4.17.2.tgz", - "integrity": "sha1-wYNp8mUpcxm+7U5VWHU8yME2TLM=", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", "requires": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.1", + "body-parser": "1.20.0", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.1", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.9.6", + "qs": "6.10.3", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", + "send": "0.18.0", + "serve-static": "1.15.0", "setprototypeof": "1.2.0", - "statuses": "~1.5.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" + }, + "dependencies": { + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + } } }, "filelist": { - "version": "1.0.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/filelist/-/filelist-1.0.2.tgz", - "integrity": "sha1-gCAvIUYtTRwuIUEZsYB8G8A4Dls=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "requires": { - "minimatch": "^3.0.4" + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "finalhandler": { - "version": "1.1.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" } }, "follow-redirects": { - "version": "1.14.7", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/follow-redirects/-/follow-redirects-1.14.7.tgz", - "integrity": "sha1-IATALrlDbu6aIURqZHfevxfoFoU=" + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" }, "form-data": { "version": "3.0.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha1-69U3kbeDVqma+aMA1CgsTV65dV8=", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -1198,79 +1335,102 @@ }, "forwarded": { "version": "0.2.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha1-ImmTZCiq1MFcfr6XeahL8LKoGBE=" + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" }, "fresh": { "version": "0.5.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } }, "has-flag": { - "version": "3.0.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "http-errors": { - "version": "1.8.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha1-fD8oV3y8iiBziEVdvWIpXtB71ow=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "requires": { - "depd": "~1.1.2", + "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", + "statuses": "2.0.1", "toidentifier": "1.0.1" } }, "iconv-lite": { "version": "0.4.24", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "requires": { "safer-buffer": ">= 2.1.2 < 3" } }, "inherits": { "version": "2.0.4", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ipaddr.js": { "version": "1.9.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=" + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, "is-buffer": { "version": "1.1.6", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=" + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "jake": { - "version": "10.8.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/jake/-/jake-10.8.2.tgz", - "integrity": "sha1-68nehVgWCmbYLQ6txqLlj7xQCns=", + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", "requires": { - "async": "0.9.x", - "chalk": "^2.4.2", + "async": "^3.2.3", + "chalk": "^4.0.2", "filelist": "^1.0.1", "minimatch": "^3.0.4" } }, "lodash.flatmap": { "version": "4.5.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz", - "integrity": "sha1-74y/QI9uSCaGYzRTBcaswLd4cC4=" - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + "resolved": "https://registry.npmjs.org/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz", + "integrity": "sha512-/OcpcAGWlrZyoHGeHh3cAoa6nGdX6QYtmzNP84Jqol6UEQQ2gIaU3H+0eICcjcKGl0/XF8LWOujNn9lffsnaOg==" }, "md5": { "version": "2.3.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/md5/-/md5-2.3.0.tgz", - "integrity": "sha1-w9qaaq46MLRreww0m4exENw72k8=", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", "requires": { "charenc": "0.0.2", "crypt": "0.0.2", @@ -1279,196 +1439,217 @@ }, "media-typer": { "version": "0.3.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" }, "merge-descriptors": { "version": "1.0.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, "methods": { "version": "1.1.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" }, "mime": { "version": "1.6.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/mime/-/mime-1.6.0.tgz", - "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=" + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { - "version": "1.51.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha1-2f9iRRhZsYNC2WCFDcPPt35j+ww=" + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, "mime-types": { - "version": "2.1.34", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha1-WnEvnsFQNRGpRYA2QPr+CdN5PCQ=", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "requires": { - "mime-db": "1.51.0" + "mime-db": "1.52.0" } }, "minimatch": { - "version": "3.0.4", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "requires": { "brace-expansion": "^1.1.7" } }, "ms": { "version": "2.0.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "negotiator": { - "version": "0.6.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=" + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" }, "on-finished": { - "version": "2.3.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "requires": { "ee-first": "1.1.1" } }, "parseurl": { "version": "1.3.3", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=" + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, "path-to-regexp": { "version": "0.1.7", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, "proxy-addr": { "version": "2.0.7", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha1-8Z/mnOqzEe65S0LnDowgcPm6ECU=", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "requires": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "qs": { - "version": "6.9.6", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/qs/-/qs-6.9.6.tgz", - "integrity": "sha1-Ju08gkOkMbKSSsqEzJBHHzXVoO4=" + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "requires": { + "side-channel": "^1.0.4" + } }, "range-parser": { "version": "1.2.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=" + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { - "version": "2.4.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha1-uvPpwh7rztWd1lM6yHK3H3thyzI=", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "requires": { - "bytes": "3.1.1", - "http-errors": "1.8.1", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" } }, "safe-buffer": { "version": "5.2.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "safer-buffer": { "version": "2.1.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=" + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "send": { - "version": "0.17.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/send/-/send-0.17.2.tgz", - "integrity": "sha1-kmYi92YBxBgIASyL8WiP45BveCA=", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.8.1", + "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "dependencies": { "ms": { "version": "2.1.3", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/ms/-/ms-2.1.3.tgz", - "integrity": "sha1-V0yBOM4dK1hh8LRFedut1gxmFbI=" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" } } }, "serve-static": { - "version": "1.14.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha1-ci1ilLHWJibUG0OgE+zkWY0pK/o=", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.2" + "send": "0.18.0" } }, "setprototypeof": { "version": "1.2.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha1-ZsmiSnP5/CjL5msJ/tPTPcrxtCQ=" + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } }, "square": { - "version": "8.1.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/square/-/square-8.1.1.tgz", - "integrity": "sha1-tGApNRkpKlap97Eg+DZkk8PzhVY=", + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/square/-/square-22.0.0.tgz", + "integrity": "sha512-3KZkwml3vIM/fL06bPOTeAyFj1Pn1e1Ps2P/nGFI9tcMMfu+0mxqx4kOLYVkYE2NaCHs/V4pPD/JkO4s9ravqA==", "requires": { - "@apimatic/schema": "^0.4.1", - "axios": "^0.21.1", - "detect-node": "^2.0.4", - "form-data": "^3.0.0", - "lodash.flatmap": "^4.5.0", - "tiny-warning": "^1.0.3" + "@apimatic/core": "^0.7.7", + "@apimatic/json-bigint": "^1.2.0", + "@apimatic/schema": "^0.6.0", + "@types/node": "^14.14.30" } }, "statuses": { - "version": "1.5.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, "supports-color": { - "version": "5.5.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } }, "tiny-warning": { "version": "1.0.3", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha1-lKMNtFPfTGQ9D9VmBg1gqHXYR1Q=" + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, "toidentifier": { "version": "1.0.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha1-O+NDIaiKgg7RvYDfqjPkefu43TU=" + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "type-is": { "version": "1.6.18", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "requires": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -1476,18 +1657,18 @@ }, "unpipe": { "version": "1.0.0", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" }, "utils-merge": { "version": "1.0.1", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" }, "vary": { "version": "1.1.2", - "resolved": "https://artifactory.global.square/artifactory/api/npm/square-npm/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" } } } diff --git a/connect-examples/oauth/node/package.json b/connect-examples/oauth/node/package.json index c79f78ee6..54869fdc4 100644 --- a/connect-examples/oauth/node/package.json +++ b/connect-examples/oauth/node/package.json @@ -13,7 +13,7 @@ "dotenv": "^8.2.0", "express": "*", "md5": "*", - "square": "^8.0.0", + "square": "^22.0.0", "ejs": "*" } } diff --git a/connect-examples/oauth/php/README.md b/connect-examples/oauth/php/README.md index d1b7d3a86..e5b530f83 100644 --- a/connect-examples/oauth/php/README.md +++ b/connect-examples/oauth/php/README.md @@ -12,7 +12,7 @@ along with the comments included in `sandbox_callback.php`. ### Requirements -* 7.1 <= PHP +- 8.0 <= PHP ### Step 1: Download Composer and dependencies @@ -26,7 +26,7 @@ After you've downloaded Composer, install the dependencies with the following command from this directory: ``` -composer install +php composer.phar install ``` ### Step 2: Get your credentials and set the redirect URL: @@ -36,9 +36,10 @@ composer install 1. At the top of the page, set the dashboard mode to the environment that you want to work with by choosing **Sandbox** or **Production**. 1. Choose **OAuth** in the left navigation pane. The OAuth page is shown. 1. In the **Redirect URL** box, enter the URL for the callback you will implement to complete the OAuth flow: - `http://localhost:8000/callback.php` + `http://localhost:8000/callback.php` + + You can use HTTP for localhost but an actual web server implementation must use HTTPS. - You can use HTTP for localhost but an actual web server implementation must use HTTPS. 1. in the **Application ID** box, copy the application ID. 1. In the **Application Secret** box, choose **Show**, and then copy the application secret. 1. Click **Save**. @@ -46,7 +47,7 @@ composer install 1. In the newly created .env file, replace the `your-environment` with either `sandbox` or `production` 1. Replace the `your-application-id` and `your-application-secret` placeholders with the Sandbox or Production application ID and application secret, respectively. - Note that OAuth Sandbox credentials begin with a sandbox prefix and that the base URL for calling Sandbox endpoints is https://connect.squareupsandbox.com. When you implement for production, you need production credentials and use https://connect.squareup.com as the base URL. + Note that OAuth Sandbox credentials begin with a sandbox prefix and that the base URL for calling Sandbox endpoints is https://connect.squareupsandbox.com. When you implement for production, you need production credentials and use https://connect.squareup.com as the base URL. **WARNING**: Never check your credentials/access_token into your version control system. We've added `.env` to the `.gitignore` file to help prevent uploading confidential information. @@ -58,11 +59,12 @@ composer install 1. Start the PHP server, if it is not running: - ``` - php -S localhost:8000 - ``` + ``` + php -S localhost:8000 + ``` 1. Open http://localhost:8000/request_token.php to start. ## Feedback -Rate this sample app [here](https://delighted.com/t/Z1xmKSqy)! \ No newline at end of file + +Rate this sample app [here](https://delighted.com/t/Z1xmKSqy)! diff --git a/connect-examples/oauth/php/callback.php b/connect-examples/oauth/php/callback.php index c0e1f7bef..5e2928cba 100644 --- a/connect-examples/oauth/php/callback.php +++ b/connect-examples/oauth/php/callback.php @@ -21,7 +21,8 @@ function obtainOAuthToken($authorizationCode) { // Initialize Square PHP SDK OAuth API client. $environment = getenv('SQ_ENVIRONMENT') == "sandbox" ? Environment::SANDBOX : Environment::PRODUCTION; $apiClient = new SquareClient([ - 'environment' => $environment + 'environment' => $environment, + 'useqrAgentDetail' => "sample_app_oauth_php" ]); $oauthApi = $apiClient->getOAuthApi(); diff --git a/connect-examples/oauth/php/composer.json b/connect-examples/oauth/php/composer.json index a5806a8d9..90174dc0b 100644 --- a/connect-examples/oauth/php/composer.json +++ b/connect-examples/oauth/php/composer.json @@ -1,6 +1,6 @@ { "require": { - "square/square": "18.0.0.20220420", + "square/square": "22.0.0.20220921", "vlucas/phpdotenv": "^3.3" } } diff --git a/connect-examples/oauth/python-aws-chalice/README.md b/connect-examples/oauth/python-aws-chalice/README.md index 205c790f8..f5e6fb5e9 100644 --- a/connect-examples/oauth/python-aws-chalice/README.md +++ b/connect-examples/oauth/python-aws-chalice/README.md @@ -1,6 +1,7 @@ # Square OAuth Serverless Example ## Overview + This example demonstrates a Python implementation of the Square OAuth flow with all the good practices. The example is writen with [**Chalice**](https://github.com/aws/chalice) serverless microframework, and use [Dynamodb](https://aws.amazon.com/dynamodb/) to store Square OAuth tokens. @@ -10,81 +11,77 @@ comments included in this project. ## Getting started -### Add OAuth Credentials and encryption key +### Add OAuth Credentials and encryption key - Open `.chalice/config.json`: +Open `.chalice/config.json`: - * Add a new environment variable `application_id`, and fill value with your sandbox application's ID, which is available on your - [Square Developer Dashboard](https://developer.squareup.com/apps). +- Add a new environment variable `application_id`, and fill value with your sandbox application's ID, which is available on your + [Square Developer Dashboard](https://developer.squareup.com/apps). - * Add a new environment variable `application_secret`, and fill value with your sandbox application's secret, also available on your - [Square Developer Dashboard](https://developer.squareup.com/apps). +- Add a new environment variable `application_secret`, and fill value with your sandbox application's secret, also available on your + [Square Developer Dashboard](https://developer.squareup.com/apps). - * Add a new environment variable `token_encrypt_secret` with the key value which is generated by following python script: +- Add a new environment variable `token_encrypt_secret` with the key value which is generated by following python script: - ```Python - >>> from cryptography.fernet import Fernet - >>> key = Fernet.generate_key() - >>> print(key.decode()) - ``` + ```Python + >>> from cryptography.fernet import Fernet + >>> key = Fernet.generate_key() + >>> print(key.decode()) + ``` - > **NOTE**: Changing the encryption key can be a broken change after service is in use, so make sure you've migrated all the OAuth tokens - in the database before replace the key completely, otherwise you'll lose the valid OAuth tokens. +> **NOTE**: Changing the encryption key can be a broken change after service is in use, so make sure you've migrated all the OAuth tokens in the database before replace the key completely, otherwise you'll lose the valid OAuth tokens. - ```json - "environment_variables": { - ... - "application_id": "REPLACE_WITH_SANDBOX_APPLICATION_ID", - "application_secret": "REPLACE_WITH_SANDBOX_APPLICATION_SECRET", - "token_encrypt_secret": "REPLACE_WITH_TOKEN_ENCRYPT_SECRET", - ... - } - ``` +```json +"environment_variables": { + ... + "application_id": "REPLACE_WITH_SANDBOX_APPLICATION_ID", + "application_secret": "REPLACE_WITH_SANDBOX_APPLICATION_SECRET", + "token_encrypt_secret": "REPLACE_WITH_TOKEN_ENCRYPT_SECRET", + ... +} +``` -> **NOTE**: **DO NOT** check in your *application_secret* to git repo. +> **NOTE**: **DO NOT** check in your _application_secret_ to git repo. ### Setup and deploy - 1. install [**Chalice**](https://github.com/aws/chalice) and all the project dependencies, **Chalice** is a - microframework for writing serverless apps in Python. We use this microframework to manage all the elasticsearch management tasks. - ```bash - pip install -r requirements.txt - ``` +1. install [**Chalice**](https://github.com/aws/chalice) and all the project dependencies, **Chalice** is a + microframework for writing serverless apps in Python. We use this microframework to manage all the elasticsearch management tasks. + `bash pip install -r requirements.txt ` - 1. Follow [**this Credentials section**](https://github.com/aws/chalice#credentials) to setup aws credentials. +1. Follow [**this Credentials section**](https://github.com/aws/chalice#credentials) to setup aws credentials. - 1. Deploy to lambda: - ```bash - chalice deploy - ``` +1. Deploy to lambda: + ```bash + chalice deploy + ``` ## Test - 1. After deploy, find the API gateway host domain from the lambda dev console, Add `https://{host_domain}/api/authorize-callback` - to the **Sandbox Redirect URL** on the application dashboard. +1. After deploy, find the API gateway host domain from the lambda dev console, Add `https://{host_domain}/api/authorize-callback` + to the **Sandbox Redirect URL** on the application dashboard. - 1. Open this link to create the OAuthTable in DynamoDB `https://{host_domain}/api/createOAuthTable`, you should see **Table Created** if the table created successfully, then you can find the table `oauth_users` from your Dynamodb console. +1. Open this link to create the OAuthTable in DynamoDB `https://{host_domain}/api/createOAuthTable`, you should see **Table Created** if the table created successfully, then you can find the table `oauth_users` from your Dynamodb console. - 1. Sign in [Square Developer Dashboard](https://developer.squareup.com/apps), launch the sandbox dashboard from the dashboard. +1. Sign in [Square Developer Dashboard](https://developer.squareup.com/apps), launch the sandbox dashboard from the dashboard. - 1. Open authorize endpoint `https://{host_domain}/api/authorize`, click "Click here" to finish the OAuth step. +1. Open authorize endpoint `https://{host_domain}/api/authorize`, click "Click here" to finish the OAuth step. - > Note: make sure you use the same **host_domain** for both `authorize` and `authorize-callback` endpoints. + > Note: make sure you use the same **host_domain** for both `authorize` and `authorize-callback` endpoints. ## All endpoints in the example Once setup the example, you can play with these endpoints. - * `https://{host_domain}/api/authorize` - entry point to start authorization with Square merchant. +- `https://{host_domain}/api/authorize` - entry point to start authorization with Square merchant. - * `https://{host_domain}/api/authorize-callback` - The endpoint that handles Square authorization callback, you don't visit this url directly. +- `https://{host_domain}/api/authorize-callback` - The endpoint that handles Square authorization callback, you don't visit this url directly. - * `https://{host_domain}/api/revokeOAuthToken/{merchant_id}` - The endpoint that revoke all the access token from the specified merchant for this application. You can find the merchant_id from dynamodb table `oauth_users`. +- `https://{host_domain}/api/revokeOAuthToken/{merchant_id}` - The endpoint that revoke all the access token from the specified merchant for this application. You can find the merchant_id from dynamodb table `oauth_users`. - * `https://{host_domain}/api/checkAccessTokenStatus/{merchant_id}` - The endpoint that check access token status of a merchant. You can find the merchant_id from dynamodb table `oauth_users`. - - * `https://{host_domain}/api/createOAuthTable` - The endpoint that create a OAuth table in db if not exists. +- `https://{host_domain}/api/checkAccessTokenStatus/{merchant_id}` - The endpoint that check access token status of a merchant. You can find the merchant_id from dynamodb table `oauth_users`. +- `https://{host_domain}/api/createOAuthTable` - The endpoint that create a OAuth table in db if not exists. ## Token encryption thoughts @@ -95,4 +92,5 @@ You can use [AWS Key Management Service (KMS)](https://docs.aws.amazon.com/kms/l or other similar services to protect your key. ## Feedback -Rate this sample app [here](https://delighted.com/t/Z1xmKSqy)! \ No newline at end of file + +Rate this sample app [here](https://delighted.com/t/Z1xmKSqy)! diff --git a/connect-examples/oauth/python-aws-chalice/chalicelib/oauthClient.py b/connect-examples/oauth/python-aws-chalice/chalicelib/oauthClient.py index 7b914bada..f119fb59f 100644 --- a/connect-examples/oauth/python-aws-chalice/chalicelib/oauthClient.py +++ b/connect-examples/oauth/python-aws-chalice/chalicelib/oauthClient.py @@ -22,6 +22,7 @@ # initialize square oauth client square_client = Client( environment=os.environ['environment'], + user_agent_detail='sample_app_oauth_python-aws-chalice' ) oauth_api = square_client.o_auth diff --git a/connect-examples/oauth/python-aws-chalice/requirements.txt b/connect-examples/oauth/python-aws-chalice/requirements.txt index 5f1c886c7..acdddfc74 100644 --- a/connect-examples/oauth/python-aws-chalice/requirements.txt +++ b/connect-examples/oauth/python-aws-chalice/requirements.txt @@ -1,4 +1,4 @@ chalice==1.12.0 boto3==1.11.11 -squareup===5.1.0.20200325 +squareup == 22.0.0.20220921 cryptography===3.3.2 \ No newline at end of file diff --git a/connect-examples/oauth/python/oauth-flow.py b/connect-examples/oauth/python/oauth-flow.py index 6adeb1444..72691f22e 100644 --- a/connect-examples/oauth/python/oauth-flow.py +++ b/connect-examples/oauth/python/oauth-flow.py @@ -20,7 +20,8 @@ environment = os.getenv('SQ_ENVIRONMENT').lower() client = Client( - environment = environment + environment = environment, + user_agent_detail = "sample_app_oauth_python" ) obtain_token = client.o_auth.obtain_token diff --git a/connect-examples/oauth/python/requirements.txt b/connect-examples/oauth/python/requirements.txt index ec72ccbb3..6580d8d42 100644 --- a/connect-examples/oauth/python/requirements.txt +++ b/connect-examples/oauth/python/requirements.txt @@ -1,3 +1,3 @@ flask -squareup +squareup == 22.0.0.20220921 python-dotenv diff --git a/connect-examples/oauth/ruby/Gemfile b/connect-examples/oauth/ruby/Gemfile index 546994e41..8d542b91b 100644 --- a/connect-examples/oauth/ruby/Gemfile +++ b/connect-examples/oauth/ruby/Gemfile @@ -1,6 +1,6 @@ source "https://rubygems.org" -ruby '2.4.2' -gem 'square.rb' +ruby '2.6.8' +gem 'square.rb', '~> 22.0.0.20220817 ' gem 'sinatra', '~> 2.0' gem 'dotenv-rails', groups: [:development, :test] \ No newline at end of file diff --git a/connect-examples/oauth/ruby/Gemfile.lock b/connect-examples/oauth/ruby/Gemfile.lock index 83a7f4806..ab8bde6ac 100644 --- a/connect-examples/oauth/ruby/Gemfile.lock +++ b/connect-examples/oauth/ruby/Gemfile.lock @@ -1,102 +1,122 @@ GEM remote: https://rubygems.org/ specs: - actionpack (5.2.6) - actionview (= 5.2.6) - activesupport (= 5.2.6) - rack (~> 2.0, >= 2.0.8) + actionpack (6.1.7) + actionview (= 6.1.7) + activesupport (= 6.1.7) + rack (~> 2.0, >= 2.0.9) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (5.2.6) - activesupport (= 5.2.6) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actionview (6.1.7) + activesupport (= 6.1.7) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.0, >= 1.0.3) - activesupport (5.2.6) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activesupport (6.1.7) concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 0.7, < 2) - minitest (~> 5.1) - tzinfo (~> 1.1) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) builder (3.2.4) certifi (2018.01.18) - concurrent-ruby (1.1.8) + concurrent-ruby (1.1.10) + connection_pool (2.3.0) crass (1.0.6) - dotenv (2.7.6) - dotenv-rails (2.7.6) - dotenv (= 2.7.6) + dotenv (2.8.1) + dotenv-rails (2.8.1) + dotenv (= 2.8.1) railties (>= 3.2) - erubi (1.10.0) - faraday (0.17.3) - multipart-post (>= 1.2, < 3) - faraday-http-cache (2.2.0) + erubi (1.11.0) + faraday (2.4.0) + faraday-net_http (~> 2.0) + ruby2_keywords (>= 0.0.4) + faraday-follow_redirects (0.3.0) + faraday (>= 1, < 3) + faraday-gzip (0.1.0) + faraday (>= 1.0) + zlib (~> 2.1) + faraday-http-cache (2.4.1) faraday (>= 0.8) - faraday_middleware (0.14.0) - faraday (>= 0.7.4, < 1.0) - i18n (1.8.10) + faraday-multipart (1.0.4) + multipart-post (~> 2) + faraday-net_http (2.1.0) + faraday-net_http_persistent (2.0.2) + faraday-net_http (< 3) + net-http-persistent (~> 4.0) + faraday-retry (1.0.3) + i18n (1.12.0) concurrent-ruby (~> 1.0) little-plugger (1.1.4) - logging (2.3.0) + logging (2.3.1) little-plugger (~> 1.1) multi_json (~> 1.14) - loofah (2.9.1) + loofah (2.19.0) crass (~> 1.0.2) nokogiri (>= 1.5.9) method_source (1.0.0) - mini_portile2 (2.4.0) - minitest (5.14.4) + minitest (5.16.3) multi_json (1.15.0) - multipart-post (2.1.1) - mustermann (1.1.1) + multipart-post (2.2.3) + mustermann (2.0.2) ruby2_keywords (~> 0.0.1) - nokogiri (1.10.10) - mini_portile2 (~> 2.4.0) - rack (2.2.3) - rack-protection (2.0.8.1) + net-http-persistent (4.0.1) + connection_pool (~> 2.2) + nokogiri (1.13.8-x86_64-darwin) + racc (~> 1.4) + racc (1.6.0) + rack (2.2.4) + rack-protection (2.2.2) rack - rack-test (1.1.0) - rack (>= 1.0, < 3) + rack-test (2.0.2) + rack (>= 1.3) rails-dom-testing (2.0.3) activesupport (>= 4.2.0) nokogiri (>= 1.6) - rails-html-sanitizer (1.3.0) + rails-html-sanitizer (1.4.3) loofah (~> 2.3) - railties (5.2.6) - actionpack (= 5.2.6) - activesupport (= 5.2.6) + railties (6.1.7) + actionpack (= 6.1.7) + activesupport (= 6.1.7) method_source - rake (>= 0.8.7) - thor (>= 0.19.0, < 2.0) - rake (13.0.3) - ruby2_keywords (0.0.2) - sinatra (2.0.8.1) - mustermann (~> 1.0) - rack (~> 2.0) - rack-protection (= 2.0.8.1) + rake (>= 12.2) + thor (~> 1.0) + rake (13.0.6) + ruby2_keywords (0.0.5) + sinatra (2.2.2) + mustermann (~> 2.0) + rack (~> 2.2) + rack-protection (= 2.2.2) tilt (~> 2.0) - square.rb (6.0.0.20200625) - certifi (~> 2018.1) - faraday (~> 0.15) - faraday-http-cache (~> 2.0) - faraday_middleware (~> 0.13) - logging (~> 2.2) - thor (1.1.0) - thread_safe (0.3.6) - tilt (2.0.10) - tzinfo (1.2.9) - thread_safe (~> 0.1) + square.rb (22.0.0.20220817) + certifi (~> 2018.1, >= 2018.01.18) + faraday (~> 2.0, < 2.5.0) + faraday-follow_redirects (~> 0.2) + faraday-gzip (~> 0.1) + faraday-http-cache (~> 2.2) + faraday-multipart (~> 1.0) + faraday-net_http_persistent (~> 2.0) + faraday-retry (~> 1.0) + logging (~> 2.3) + thor (1.2.1) + tilt (2.0.11) + tzinfo (2.0.5) + concurrent-ruby (~> 1.0) + zeitwerk (2.6.1) + zlib (2.1.1) PLATFORMS - ruby + x86_64-darwin-20 DEPENDENCIES dotenv-rails sinatra (~> 2.0) - square.rb + square.rb (~> 22.0.0.20220817) RUBY VERSION - ruby 2.4.2p198 + ruby 2.6.8p205 BUNDLED WITH - 1.17.3 + 2.2.16 diff --git a/connect-examples/oauth/ruby/README.md b/connect-examples/oauth/ruby/README.md index 57ddfb7fb..84c6307d3 100644 --- a/connect-examples/oauth/ruby/README.md +++ b/connect-examples/oauth/ruby/README.md @@ -8,8 +8,7 @@ For more information, see [OAuth Overview](https://developer.squareup.com/docs/o ### Install Square SDK and Sinatra -This application requires gems for the Sinatra web framework and Square Connect -Install them with `bundle install` +This application requires gems for the Sinatra web framework and Square Connect. Install them with `bundle install` ### Get your credentials and set the redirect URL: @@ -18,9 +17,10 @@ Install them with `bundle install` 1. At the top of the page, set the dashboard mode to the environment that you want to work with by choosing **Sandbox** or **Production**. 1. Choose **OAuth** in the left navigation pane. The OAuth page is shown. 1. In the **Redirect URL** box, enter the URL for the callback you will implement to complete the OAuth flow: - `http://localhost:4567/callback` + `http://localhost:4567/callback` + + You can use HTTP for localhost but an actual web server implementation must use HTTPS. - You can use HTTP for localhost but an actual web server implementation must use HTTPS. 1. In the **Application ID** box, copy the application ID. 1. In the **Application Secret** box, choose **Show**, and then copy the application secret. 1. Click **Save**. @@ -28,7 +28,7 @@ Install them with `bundle install` 1. In the newly created .env file, replace the `your-environment` with either `sandbox` or `production` 1. Replace the `your-application-id` and `your-application-secret` placeholders with the Sandbox or Production application ID and application secret, respectively. - Note that OAuth Sandbox credentials begin with a sandbox prefix and that the base URL for calling Sandbox endpoints is https://connect.squareupsandbox.com. When you implement for production, you need production credentials and use https://connect.squareup.com as the base URL. + Note that OAuth Sandbox credentials begin with a sandbox prefix and that the base URL for calling Sandbox endpoints is https://connect.squareupsandbox.com. When you implement for production, you need production credentials and use https://connect.squareup.com as the base URL. **WARNING**: Never check your credentials/access_token into your version control system. We've added `.env` to the `.gitignore` file to help prevent uploading confidential information. @@ -41,4 +41,5 @@ To run the example, execute the following from the command line: You can then proceed through the OAuth flow by going to `http://localhost:4567` in your web browser. ## Feedback -Rate this sample app [here](https://delighted.com/t/Z1xmKSqy)! \ No newline at end of file + +Rate this sample app [here](https://delighted.com/t/Z1xmKSqy)! diff --git a/connect-examples/v2/node_subscription/README.md b/connect-examples/v2/node_subscription/README.md index 0a427bc99..16ffb407c 100644 --- a/connect-examples/v2/node_subscription/README.md +++ b/connect-examples/v2/node_subscription/README.md @@ -1,154 +1,142 @@ # Useful Links -* [Node.js SDK Page](https://developer.squareup.com/docs/sdks/nodejs) -* [Subscriptions API Overview](https://developer.squareup.com/docs/subscriptions/overview) -* [Catalog API Overview](https://developer.squareup.com/docs/catalog-api/what-it-does) -* [Customers API Overview](https://developer.squareup.com/docs/customers-groups-segments/what-they-are) +- [Node.js SDK Page](https://developer.squareup.com/docs/sdks/nodejs) +- [Subscriptions API Overview](https://developer.squareup.com/docs/subscriptions/overview) +- [Catalog API Overview](https://developer.squareup.com/docs/catalog-api/what-it-does) +- [Customers API Overview](https://developer.squareup.com/docs/customers-groups-segments/what-they-are) # Subscriptions API Sample App - - [Overview](#overview) - - [Setup](#setup) - - [Project organization](#project-organization) - - [Application flow](#application-flow) +- [Overview](#overview) +- [Setup](#setup) +- [Project organization](#project-organization) +- [Application flow](#application-flow) ## Overview -This sample web application is for a fictitious gym that offers subscription plans, -including a gym membership, spa service, and laundry service. The application +This sample web application is for a fictitious gym that offers subscription plans, including a gym membership, spa service, and laundry service. The application allows the gym to create subscriptions for its customers. The application uses the following Square APIs for an integrated experience: -* The [Catalog API](https://developer.squareup.com/reference/square/catalog-api) to manage subscription plans. Subscription plans are stored as catalog objects. -* The [Subscriptions API](https://developer.squareup.com/reference/square/subscriptions-api) to manage subscriptions. -* The [Customers API](https://developer.squareup.com/reference/square/customers-api) to - manage customer profiles in the seller's Customer Directory. Each gym customer has - a customer profile stored in the Customer Directory. +- The [Catalog API](https://developer.squareup.com/reference/square/catalog-api) to manage subscription plans. Subscription plans are stored as catalog objects. +- The [Subscriptions API](https://developer.squareup.com/reference/square/subscriptions-api) to manage subscriptions. +- The [Customers API](https://developer.squareup.com/reference/square/customers-api) to manage customer profiles in the seller's Customer Directory. Each gym customer has a customer profile stored in the Customer Directory. Before you begin, note the following: -* **Application framework.** This sample uses [Express](https://expressjs.com/) (a web framework for Node.js). -We chose Node.js primarily because it is easy to set up and test. Otherwise, you can use any other Square-provided SDKs. -* **Sandbox testing.** Application configuration allows you to test the application both in the Square Sandbox -and in the production environment. For testing, the Sandbox is great because you do not charge your real credit card. -Instead, you use a fake card that Square provides for the Sandbox environment. +- **Application framework.** This sample uses [Express](https://expressjs.com/) (a web framework for Node.js). We chose Node.js primarily because it is easy to set up and test. Otherwise, you can use any other Square-provided SDKs. +- **Sandbox testing.** Application configuration allows you to test the application both in the Square Sandbox and in the production environment. For testing, the Sandbox is great because you do not charge your real credit card. Instead, you use a fake card that Square provides for the Sandbox environment. ## Setup -1. Ensure you have npm installed (`npm -v` in your terminal) with version v10 or greater. - If not please follow the instructions for your OS: https://www.npmjs.com/get-npm +1. Ensure you have npm installed (`npm -v` in your terminal) with version v10 or greater. If not please follow the instructions for your OS: https://www.npmjs.com/get-npm -1. Set your credentials. +1. Set your credentials. Create a `.env` file in the root of this directory. Populate the file with the following - line `SQUARE_ACCESS_TOKEN=YOUR_ACCESS_TOKEN`. Replace the placeholder for `SQUARE_ACCESS_TOKEN` with your - own production or sandbox credentials. For more help, see our [guide on how to get + line `SQUARE_ACCESS_TOKEN=YOUR_ACCESS_TOKEN`. Replace the placeholder for `SQUARE_ACCESS_TOKEN` with your + own production or sandbox credentials. For more help, see our [guide on how to get your credentials](https://developer.squareup.com/docs/orders-api/quick-start/step-1). **WARNING**: Remember to use your own credentials only for testing the sample app. If you plan to make a version of this sample app available for your own purposes, use the Square [OAuth API](https://developer.squareup.com/docs/oauth-api/overview) - to safely manage access to Square accounts. + to safely manage access to Square accounts. + +1. Open your terminal and install the sample application's dependencies with the command: -1. Open your terminal and install the sample application's dependencies with the command: ``` npm install ``` -1. Test the app. +1. Test the app. Run the server in with your sandbox credentials: + ``` npm test ``` Run the server with your production credentials: + ``` npm start ``` +1. Open `localhost:3000` in your browser. If your account has catalog items with images, the sample app will pull them in and display them. -1. Open `localhost:3000` in your browser. If your account has catalog items with images, the -sample app will pull them in and display them. + If your account does not have images (for example, if you are using a newly created account + for testing), it will appear as a gray screen. - If your account does not have images (for example, if you are using a newly created account - for testing), it will appear as a gray screen. - -1. [Optional] We provide a script you can use to quickly populate your sandbox store's subscription plans and customers - with card on file. Run the script, wait for 30 seconds and refresh the page: +1. [Optional] We provide a script you can use to quickly populate your sandbox store's subscription plans and customers with card on file. Run the script, wait for 30 seconds and refresh the page: ``` npm run seed ``` -## Project organization +## Project organization This Express.js project is organized as follows: -* **config.json.** You provide credentials in this file. -* **/public.** Provides CSS files used to render the home page. -* **/routes.** The following JavaScript files define the routes to handle requests: - * **index.js.** Provides routes to handle all the requests for the initial page, which shows a list of customers. - * **subscription.js.** Provides routes to handle all the requests related to subscription management (create, update, and cancel). - * **management.js.** Provides a route to render a list of subscription plans a member is enrolled in and a list of plans to - which the member can subscribe. -* **/util.** The utility code initializes the Square SDK client. -* **/views.** Provides the view (.pug) files. -* **/models.** Provides a helper function (subscription-details-info.js) that converts subscription plan `CatalogObject` data and - the subscription data into user-friendly information to display on a page. +- **config.json.** You provide credentials in this file. +- **/public.** Provides CSS files used to render the home page. +- **/routes.** The following JavaScript files define the routes to handle requests: + - **index.js.** Provides routes to handle all the requests for the initial page, which shows a list of customers. + - **subscription.js.** Provides routes to handle all the requests related to subscription management (create, update, and cancel). + - **management.js.** Provides a route to render a list of subscription plans a member is enrolled in and a list of plans to which the member can subscribe. +- **/util.** The utility code initializes the Square SDK client. +- **/views.** Provides the view (.pug) files. +- **/models.** Provides a helper function (subscription-details-info.js) that converts subscription plan `CatalogObject` data and the subscription data into user-friendly information to display on a page. ## Sample Data -The `npm run seed` script described in the Setup section provides you -with the following two customer profiles (in the Customer Directory) and three subsciption plans to create subscriptions: +The `npm run seed` script described in the Setup section provides you +with the following two customer profiles (in the Customer Directory) and three subsciption plans to create subscriptions: -* Two customers are added to the seller’s Customer Directory: Amelia Earhart and John Doe. -Joe Doe has a card on file so when John subscribes to a plan, the application includes the card ID -in the `CreateSubscription` request. In this case, Square can charge the card on file. +- Two customers are added to the seller’s Customer Directory: Amelia Earhart and John Doe. Joe Doe has a card on file so when John subscribes to a plan, the application includes the card ID in the `CreateSubscription` request. In this case, Square can charge the card on file. -* The fictitious gym offers three subscription plans. For more information about subscription plans, -see [Set Up and Manage a Subscription Plan](https://developer.squareup.com/docs/subscriptions-api/setup-plan). +- The fictitious gym offers three subscription plans. For more information about subscription plans, see [Set Up and Manage a Subscription Plan](https://developer.squareup.com/docs/subscriptions-api/setup-plan). The application uses the following JSON in a [UpsertCatalogObject](https://developer.squareup.com/reference/square/catalog-api/upsert-catalog-object) (Catalog API) request body to create the subscription plans. - * **Gym Membership plan.** This is a two-phase plan. The first phase is one month at $1 and the second phase identifies - the weekly cadence at $15. Because the second phase does not specify `periods`, it never ends. However, the customer always - has the option to cancel the subscription. - - ```json - { - "type": "SUBSCRIPTION_PLAN", - "id": "#Multiphase Gym Membership", - "subscriptionPlanData": { - "name": "Gym Membership", - "phases": [ - { - "type": "SUBSCRIPTION_PHASE", - "id": "#Gym Membership phase1", - "cadence": "MONTHLY", - "periods": 1, - "recurringPriceMoney": { - "amount": 100, - "currency": "USD" - } - }, - { - "type": "SUBSCRIPTION_PHASE", - "id": "#Gym Membership phase2", - "cadence": "WEEKLY", - "recurringPriceMoney": { - "amount": 1500, - "currency": "USD" - } - } - ] - } +- **Gym Membership plan.** This is a two-phase plan. The first phase is one month at $1 and the second phase identifies the weekly cadence at $15. Because the second phase does not specify `periods`, it never ends. However, the customer always has the option to cancel the subscription. + + ```json + { + "type": "SUBSCRIPTION_PLAN", + "id": "#Multiphase Gym Membership", + "subscriptionPlanData": { + "name": "Gym Membership", + "phases": [ + { + "type": "SUBSCRIPTION_PHASE", + "id": "#Gym Membership phase1", + "cadence": "MONTHLY", + "periods": 1, + "recurringPriceMoney": { + "amount": 100, + "currency": "USD" + } + }, + { + "type": "SUBSCRIPTION_PHASE", + "id": "#Gym Membership phase2", + "cadence": "WEEKLY", + "recurringPriceMoney": { + "amount": 1500, + "currency": "USD" + } + } + ] } - ``` + } + ``` + + ``` + + ``` - * **Spa Service plan.** The plan is a two-phase subscription. The first phase identifies a 2-week free period and the - second phase identifies a monthly cadence at $80. Note that when a customer subscribes to this plan, Square bills the - customer only after the free 2-week phase ends. +- **Spa Service plan.** The plan is a two-phase subscription. The first phase identifies a 2-week free period and the second phase identifies a monthly cadence at $80. Note that when a customer subscribes to this plan, Square bills the customer only after the free 2-week phase ends. ```json { @@ -181,163 +169,154 @@ The application uses the following JSON in a [UpsertCatalogObject](https://devel } ``` - * **Laundry Service plan:** The plan offers a weekly subscription at $10. - - ```json - { - "type": "SUBSCRIPTION_PLAN", - "id": "#Laundry Service Addon", - "subscriptionPlanData": { - "name": "Laundry Service Addon", - "phases": [ - { - "type": "SUBSCRIPTION_PHASE", - "id": "#Laundry Service Addon phase", - "cadence": "WEEKLY", - "recurringPriceMoney": { - "amount": 1000, - "currency": "USD" - } - } - ] - } - } - ``` +- **Laundry Service plan:** The plan offers a weekly subscription at $10. + + ```json + { + "type": "SUBSCRIPTION_PLAN", + "id": "#Laundry Service Addon", + "subscriptionPlanData": { + "name": "Laundry Service Addon", + "phases": [ + { + "type": "SUBSCRIPTION_PHASE", + "id": "#Laundry Service Addon phase", + "cadence": "WEEKLY", + "recurringPriceMoney": { + "amount": 1000, + "currency": "USD" + } + } + ] + } + } + ``` ## Application flow The application flow is explained with the assumption that you are familiar with [Express](https://expressjs.com/) (the web framework for Node.js). +1. Initially, the `router.get("/", …)` controller (in [index.js](routes/index.js#L39)) + executes and renders the home page as shown. It shows a list of fictitious gym members. For each member, + the UI shows some of the customer profile information (name and card on file) in the seller's Customer Directory. -1. Initially, the `router.get("/", …)` controller (in [index.js](routes/index.js#L39)) -executes and renders the home page as shown. It shows a list of fictitious gym members. For each member, -the UI shows some of the customer profile information (name and card on file) in the seller's Customer Directory. + - + When creating a subscription, you have the option to either email subscription invoices or charge the customer's + card on file and email receipts. The sample application is configured as follows: - When creating a subscription, you have the option to either email subscription invoices or charge the customer's - card on file and email receipts. The sample application is configured as follows: + * If you choose a customer without a card on file, the application does not include the cardId field in the `CreateSubscription` request. Square sends the invoice to the customer's email address. + * If you choose a customer with a card on file, the application includes the optional `cardId` in the `CreateSubscription` request. Square charges the card on file and sends a receipt of the invoice to the + customer’s email address. - * If you choose a customer without a card on file, the application does not include the cardId field in the - `CreateSubscription` request. Square sends the invoice to the customer's email address. - * If you choose a customer with a card on file, the application includes the optional `cardId` in the - `CreateSubscription` request. Square charges the card on file and sends a receipt of the invoice to the - customer’s email address. + The controller makes the following Square API calls to collect the information: - The controller makes the following Square API calls to collect the information: + * `listCustomers` (the Customers API). Returns a list of customer profiles from the seller’s Customer Directory. + * `retrieveLocation` (the Locations API). Returns the seller’s main location. This example application associates subscriptions it creates with the main location. The application does not use the location information to present the + preceding UI. However, after you choose a customer, it passes the location information in the subsequent workflow. - * `listCustomers` (the Customers API). Returns a list of customer profiles from the seller’s Customer Directory. - * `retrieveLocation` (the Locations API). Returns the seller’s main location. This example application associates - subscriptions it creates with the main location. The application does not use the location information to present the - preceding UI. However, after you choose a customer, it passes the location information in the subsequent workflow. + The controller then calls `res.render("index") `to compile the template (/views/index.pug), create an HTML output, and send it to the client (as previously shown). - The controller then calls `res.render("index") `to compile the template (/views/index.pug), create an HTML output, - and send it to the client (as previously shown). - -2. The client chooses a gym member and the `router.get("/:locationId/:customerId", …)` controller (in [management.js](routes/management.js#L30)) runs. -The controller renders the member details page showing: - * **Enrolled plans.** Subscription plans the member is already enrolled in. - * **Additional plans.** Subscription plans the member can subscribe to. For example, the member might have subscribed to +2. The client chooses a gym member and the `router.get("/:locationId/:customerId", …)` controller (in [management.js](routes/management.js#L30)) runs. + The controller renders the member details page showing: + _ **Enrolled plans.** Subscription plans the member is already enrolled in. + _ **Additional plans.** Subscription plans the member can subscribe to. For example, the member might have subscribed to the basic gym membership and now can subscribe to laundry services and spa services. - + - To collect this information, the controller first calls `retrieveCustomer` (the Customers API) to get the customer profile. - The profile provides the email address and the ID of the card on file (if present) that appears in the UI. The controller - then does the following to create the two lists of subscriptions plans: + To collect this information, the controller first calls `retrieveCustomer` (the Customers API) to get the customer profile. + The profile provides the email address and the ID of the card on file (if present) that appears in the UI. The controller + then does the following to create the two lists of subscriptions plans: - * Calls` listCatalog `to retrieve the subscription plans from the catalog (a list of `CatalogObject` instances of - the `SUBSCRIPTION_PLAN` type). The controller then filters the list to extract only the plans that are available at - the main location. The code uses these `CatalogObject` fields to filter the objects: `presentAtAllLocations`, - `absentAtLocationIds` and `presentAtLocationIds` (see [management.js](routes/management.js#L50)). + - Calls`listCatalog`to retrieve the subscription plans from the catalog (a list of `CatalogObject` instances of the `SUBSCRIPTION_PLAN` type). The controller then filters the list to extract only the plans that are available at the main location. The code uses these `CatalogObject` fields to filter the objects: `presentAtAllLocations`, `absentAtLocationIds` and `presentAtLocationIds` (see [management.js](routes/management.js#L50)). For more information about these fields, see [CatalogObject](https://developer.squareupstaging.com/reference/square/objects/CatalogObject) type. - * Calls `SearchSubscriptions` to retrieve a list of subscriptions created at the main location for the specific member. The - code then filters the list to get only the ACTIVE or PENDING subscriptions (and not the CANCELED subscriptions). - This subscription list provides the associated plans to which the member has already subscribed. - * The controller then builds the two lists (using the `for` loop): the subscription plans to which the customer has already - subscribed (Enrolled Plans) and the plans to which the customer can subscribe (Additional Plans). - - The controller then calls `res.render("management")` to compile the template (`/views/management.pug`), create an HTML output, and send it to - the client (as previously shown). + - Calls `SearchSubscriptions` to retrieve a list of subscriptions created at the main location for the specific member. The code then filters the list to get only the ACTIVE or PENDING subscriptions (and not the CANCELED subscriptions). This subscription list provides the associated plans to which the member has already subscribed. + - The controller then builds the two lists (using the `for` loop): the subscription plans to which the customer has already subscribed (Enrolled Plans) and the plans to which the customer can subscribe (Additional Plans). + The controller then calls `res.render("management")` to compile the template (`/views/management.pug`), create an HTML output, and send it to + the client (as previously shown). -You can now manage the subscriptions for the member: +You can now manage the subscriptions for the member: -* Choose a plan from the Enrolled Plans list and manage the subscription (for example, cancel the subscription). -* Choose a plan from the Additional Plans list, review the plan, and optionally create a subscription. +- Choose a plan from the Enrolled Plans list and manage the subscription (for example, cancel the subscription). +- Choose a plan from the Additional Plans list, review the plan, and optionally create a subscription. For illustration, the following section describes the process flow to create and cancel a subscription. ### Choose a plan and create a subscription -1. After the client chooses a plan from the Additional Plans list, the `router.get("/view/:locationId/:customerId/:subscriptionPlanId", …)` -controller (in [subscription.js](routes/subscription.js#L31)) runs and renders a page with the subscription plan information as shown: +1. After the client chooses a plan from the Additional Plans list, the `router.get("/view/:locationId/:customerId/:subscriptionPlanId", …)` + controller (in [subscription.js](routes/subscription.js#L31)) runs and renders a page with the subscription plan information as shown: - + - The page shows the subscription plan name in the heading, followed by the customer name. The page then shows two sections: + The page shows the subscription plan name in the heading, followed by the customer name. The page then shows two sections: - * **Subscription Plan Info.** This shows the details of the subscription plan phases, including price. - * **Current Subscription**. You can choose the **Subscribe** button to optionally create a subscription. + * **Subscription Plan Info.** This shows the details of the subscription plan phases, including price. + * **Current Subscription**. You can choose the **Subscribe** button to optionally create a subscription. - The controller makes the following API calls to collect the information shown on the page: + The controller makes the following API calls to collect the information shown on the page: - * `retrieveCustomer` (the Customers API). The customer name in the profile appears in the UI. - * `retrieveCatalogObject` (the Catalog API). Returns the subscription plan. After retrieving the subscription plan, the code uses the helper code - (subscription-details-info.js) to construct a `SubscriptionDetailsInfo` object with user-friendly information (the list of phases and phase prices) - about the subscription plan. This information appears in the UI. - * `searchSubscriptions` (the Subscriptions API). Searches for ACTIVE or PENDING subscriptions associated with the plan. There should be none because - you chose a subscription plan from the Additional Subscription list. Therefore, the UI shows the **Subscribe** button. + * `retrieveCustomer` (the Customers API). The customer name in the profile appears in the UI. + * `retrieveCatalogObject` (the Catalog API). Returns the subscription plan. After retrieving the subscription plan, the code uses the helper code + (subscription-details-info.js) to construct a `SubscriptionDetailsInfo` object with user-friendly information (the list of phases and phase prices) + about the subscription plan. This information appears in the UI. + * `searchSubscriptions` (the Subscriptions API). Searches for ACTIVE or PENDING subscriptions associated with the plan. There should be none because + you chose a subscription plan from the Additional Subscription list. Therefore, the UI shows the **Subscribe** button. - The controller then calls res.render("subscription") to compile the template (/views/subscription.pug), create an HTML output, and send it to the - client (as previously shown). + The controller then calls res.render("subscription") to compile the template (/views/subscription.pug), create an HTML output, and send it to the + client (as previously shown). -2. The client chooses **Subscribe**. The corresponding form action sends a POST request to the `router.post("/subscribe", …)` controller in -[subscription.js](routes/subscription.js#L87) to create a subscription. +2. The client chooses **Subscribe**. The corresponding form action sends a POST request to the `router.post("/subscribe", …)` controller in + [subscription.js](routes/subscription.js#L87) to create a subscription. - The controller does the following: + The controller does the following: - * Calls `createSubscription` to create the subscription. + * Calls `createSubscription` to create the subscription. - If the customer has a card on file, the application includes the card ID in the `CreateSubscription` call. After the subscription is created, - Square charges the card and sends invoice receipt to the customer’s email address. If the customer does not have a card on file, - Square sends an invoice to the customer’s email address. - - NOTE: The Square Sandbox does not send emails, but you can verify the invoice in the Seller Sandbox Dashboard. For instructions, - see [Create Subscriptions](https://developer.squareup.com/docs/subscriptions-api/walkthrough). + If the customer has a card on file, the application includes the card ID in the `CreateSubscription` call. After the subscription is created, + Square charges the card and sends invoice receipt to the customer’s email address. If the customer does not have a card on file, + Square sends an invoice to the customer’s email address. - * Calls `res.redirect(`view/${locationId}/${customerId}/${planId}`);` to redirect the request to the - `router.get("/view/:locationId/:customerId/:invoiceId",...)` controller in the same [subscription.js](routes/subscription.js#L31) file. - This controller retrieves and renders the subscription information again. + NOTE: The Square Sandbox does not send emails, but you can verify the invoice in the Seller Sandbox Dashboard. For instructions, + see [Create Subscriptions](https://developer.squareup.com/docs/subscriptions-api/walkthrough). - + * Calls `res.redirect(`view/${locationId}/${customerId}/${planId}`);` to redirect the request to the + `router.get("/view/:locationId/:customerId/:invoiceId",...)` controller in the same [subscription.js](routes/subscription.js#L31) file. + This controller retrieves and renders the subscription information again. + - The page provides the following updated information: - * **Subscription Plan Info.** It shows a check mark for the phase in progress and the timeline for other phases. - * **Current Subscription.** It now shows the **Unsubscribe** button for you to optionally cancel the subscription. + The page provides the following updated information: + + * **Subscription Plan Info.** It shows a check mark for the phase in progress and the timeline for other phases. + * **Current Subscription.** It now shows the **Unsubscribe** button for you to optionally cancel the subscription. ## About the /models/subscription-details-info.js file -When the application retrieves a subscription plan, the `CatalogObject` provides raw details about the subscription plan including phase information. -The application also retrieves the current active subscription associated with the plan. The application then uses the helper class to do necessary calculations -and present user-friendly information about the plans on the **Subscription Plan Info** page as shown: + +When the application retrieves a subscription plan, the `CatalogObject` provides raw details about the subscription plan including phase information. The application also retrieves the current active subscription associated with the plan. The application then uses the helper class to do necessary calculations and present user-friendly information about the plans on the **Subscription Plan Info** page as shown: The application creates an instance of this helper class in the subscription.js file: ```javascript -const subscriptionPlanInfo = new SubscriptionDetailsInfo(subscriptionPlan, activeSubscription); +const subscriptionPlanInfo = new SubscriptionDetailsInfo( + subscriptionPlan, + activeSubscription +); ``` # License Copyright 2020 Square, Inc. ​ + ``` Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -353,4 +332,5 @@ limitations under the License. ``` ## Feedback -Rate this sample app [here](https://delighted.com/t/Z1xmKSqy)! \ No newline at end of file + +Rate this sample app [here](https://delighted.com/t/Z1xmKSqy)! diff --git a/connect-examples/v2/php_checkout/README.md b/connect-examples/v2/php_checkout/README.md index fabd38da0..8c184c9e4 100644 --- a/connect-examples/v2/php_checkout/README.md +++ b/connect-examples/v2/php_checkout/README.md @@ -18,8 +18,7 @@ It takes a single payment, declared by the user, and creates an order to use in ### Install the PHP client library -This sample already includes the `square/square` dependency in its `composer.json` -file. To install the client library: +This sample already includes the `square/square` dependency in its `composer.json` file. To install the client library: 1. Make sure you've downloaded Composer, following the instructions [here](https://getcomposer.org/download/). diff --git a/connect-examples/v2/python_payment/README.md b/connect-examples/v2/python_payment/README.md index b562a2172..14c0ea17d 100644 --- a/connect-examples/v2/python_payment/README.md +++ b/connect-examples/v2/python_payment/README.md @@ -8,8 +8,7 @@ # Payment processing example: Python -This sample demonstrates processing card payments with Square Connect API, using the -Square Connect Python client library. +This sample demonstrates processing card payments with Square Connect API, using the Square Connect Python client library. ## Requirements @@ -31,8 +30,7 @@ Create a `config.ini` file at the root directory by copying the contents of the Do not use quotes around the strings in the `config.ini` file. (**WARNING**: never upload `config.ini` with your credentials/access_token.) -If you're just testing things out, it's recommended that you use your _sandbox_ -credentials for now. See +If you're just testing things out, it's recommended that you use your _sandbox_ credentials for now. See [this article](https://developer.squareup.com/docs/testing/sandbox) for more information on the API sandbox. @@ -54,8 +52,7 @@ transaction by providing the following card information in the form: You can find more testing values in this [article](https://developer.squareup.com/docs/testing/test-values) -**Note that if you are _not_ using your sandbox credentials and you enter _real_ -credit card information, YOU WILL CHARGE THE CARD.** +**Note that if you are _not_ using your sandbox credentials and you enter _real_ credit card information, YOU WILL CHARGE THE CARD.** ## Application Flow @@ -67,8 +64,7 @@ Square Online payment solution is a 2-step process: NOTE: The Web Payments SDK renders the card inputs and digital wallet buttons that make up the payment form and returns a secure payment token. For more information, see the [Web Payments SDK Overview](https://developer.squareup.com/docs/web-payments/overview). -2. Charge the payment source using the token - Using a server-side component, that uses the Connect V2 - **Payments** API, you charge the payment source using the secure payment token. +2. Charge the payment source using the token - Using a server-side component, that uses the Connect V2 **Payments** API, you charge the payment source using the secure payment token. The following sections describe how the Python sample implements these steps. @@ -98,18 +94,18 @@ which downloads and executes the following scripts: - Provides the global method that fires a `fetch` request to the server after receiving the payment token. ```javascript - window.createPayment = async function(token) { + window.createPayment = async function (token) { const dataJsonString = JSON.stringify({ - token + token, }); try { - const response = await fetch('process-payment', { - method: 'POST', + const response = await fetch("process-payment", { + method: "POST", headers: { - 'Content-Type': 'application/json' + "Content-Type": "application/json", }, - body: dataJsonString + body: dataJsonString, }); const data = await response.json(); @@ -118,15 +114,15 @@ which downloads and executes the following scripts: if (data.errors[0].detail) { window.showError(data.errors[0].detail); } else { - window.showError('Payment Failed.'); + window.showError("Payment Failed."); } } else { - window.showSuccess('Payment Successful!'); + window.showSuccess("Payment Successful!"); } } catch (error) { - console.error('Error:', error); + console.error("Error:", error); } - } + }; ``` ### Step 2: Charge the Payment Source Using the Token @@ -178,4 +174,5 @@ limitations under the License. ``` ## Feedback -Rate this sample app [here](https://delighted.com/t/Z1xmKSqy)! \ No newline at end of file + +Rate this sample app [here](https://delighted.com/t/Z1xmKSqy)! From 18a0a21f04329ab18c3dd6cc0a8997e9cec71abf Mon Sep 17 00:00:00 2001 From: Emma Chen Date: Tue, 4 Oct 2022 11:18:00 -0600 Subject: [PATCH 2/6] fix some documentation formatting --- connect-examples/oauth/java/README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/connect-examples/oauth/java/README.md b/connect-examples/oauth/java/README.md index 7570791fa..a1ca95589 100644 --- a/connect-examples/oauth/java/README.md +++ b/connect-examples/oauth/java/README.md @@ -1,6 +1,7 @@ # Connect OAuth Flow Example (Java) -This example demonstrates a bare-bones Java implementation of the Square ConnectOAuth flow. The application links merchants to the OAuth Permissions form and +This example demonstrates a bare-bones Java implementation of the Square Connect +OAuth flow. The application links merchants to the OAuth Permissions form and handles the result of the authorization, which is sent to the application's Redirect URL. For more information, see [OAuth Overview](https://developer.squareup.com/docs/oauth-api/overview), @@ -20,14 +21,16 @@ If you want to run this sample against the Square Sandbox environment: b. Give the account a name and pick a country.
c. Uncheck **Automatically create authorizations for all my current apps**.
-1. Click **Launch** on the new test account to open the sandbox seller dashboard for the account. The OAuth flow will create an authorization for this account. +1. Click **Launch** on the new test account to open the sandbox seller dashboard for + the account. The OAuth flow will create an authorization for this account. ### Set your application's Redirect URL On your application dashboard, set your application's Redirect URL to `http://localhost:8000/callback`. -Note that applications that don't use a `localhost` URL must use HTTPS. HTTP is allowed for `localhost` URLs to simplify the development process. +Note that applications that don't use a `localhost` URL must use HTTPS. HTTP is +allowed for `localhost` URLs to simplify the development process. ### Specify your application credentials From 89d85f77decafe1a553a9ce76f9c51fc42ed7abd Mon Sep 17 00:00:00 2001 From: Emma Chen Date: Tue, 4 Oct 2022 12:43:11 -0600 Subject: [PATCH 3/6] address comments --- .../src/main/java/com/squareup/oauthexample/OAuthHandler.java | 2 +- connect-examples/oauth/node/index.js | 2 +- connect-examples/oauth/php/callback.php | 2 +- connect-examples/oauth/python-aws-chalice/app.py | 3 ++- .../oauth/python-aws-chalice/chalicelib/oauthClient.py | 2 +- connect-examples/oauth/python-aws-chalice/requirements.txt | 2 +- connect-examples/oauth/python/oauth-flow.py | 2 +- connect-examples/oauth/python/requirements.txt | 2 +- connect-examples/oauth/ruby/oauth-flow.rb | 3 ++- connect-examples/v2/node_subscription/README.md | 4 ---- connect-examples/v2/python_payment/requirements.txt | 2 +- 11 files changed, 12 insertions(+), 14 deletions(-) diff --git a/connect-examples/oauth/java/src/main/java/com/squareup/oauthexample/OAuthHandler.java b/connect-examples/oauth/java/src/main/java/com/squareup/oauthexample/OAuthHandler.java index efce39ccf..0abec3348 100644 --- a/connect-examples/oauth/java/src/main/java/com/squareup/oauthexample/OAuthHandler.java +++ b/connect-examples/oauth/java/src/main/java/com/squareup/oauthexample/OAuthHandler.java @@ -133,7 +133,7 @@ public void handle(HttpExchange t) throws IOException { SquareClient client = new SquareClient.Builder() .environment(ENVIRONMENT) - .userAgentDetail("sample_app_oauth_java") + .userAgentDetail("sample_app_oauth_java") // Remove or replace this detail when building your own app .build(); List bodyScopes = new LinkedList<>(); diff --git a/connect-examples/oauth/node/index.js b/connect-examples/oauth/node/index.js index c3e35ad82..758dbfda4 100644 --- a/connect-examples/oauth/node/index.js +++ b/connect-examples/oauth/node/index.js @@ -66,7 +66,7 @@ const messages = require('./messages'); // Configure Square defcault client const squareClient = new Client({ environment: environment, - userAgentDetail: "sample_app_oauth_node" + userAgentDetail: "sample_app_oauth_node" // Remove or replace this detail when building your own app }); // Configure Square OAuth API instance diff --git a/connect-examples/oauth/php/callback.php b/connect-examples/oauth/php/callback.php index 5e2928cba..ab6e12a07 100644 --- a/connect-examples/oauth/php/callback.php +++ b/connect-examples/oauth/php/callback.php @@ -22,7 +22,7 @@ function obtainOAuthToken($authorizationCode) { $environment = getenv('SQ_ENVIRONMENT') == "sandbox" ? Environment::SANDBOX : Environment::PRODUCTION; $apiClient = new SquareClient([ 'environment' => $environment, - 'useqrAgentDetail' => "sample_app_oauth_php" + 'useqrAgentDetail' => "sample_app_oauth_php" // Remove or replace this detail when building your own app ]); $oauthApi = $apiClient->getOAuthApi(); diff --git a/connect-examples/oauth/python-aws-chalice/app.py b/connect-examples/oauth/python-aws-chalice/app.py index 05c879775..fd053ef8c 100644 --- a/connect-examples/oauth/python-aws-chalice/app.py +++ b/connect-examples/oauth/python-aws-chalice/app.py @@ -209,7 +209,8 @@ def check_access_token_status(merchant_id): # you can use other endpoint to check the access token status within the api permission scope square_client_with_auth = Client( environment=os.environ['environment'], - access_token=access_token + access_token=access_token, + user_agent_detail="sample_app_oauth_python-aws-chalice" # Remove or replace this detail when building your own app ) api_payments = square_client_with_auth.payments response = api_payments.list_payments( diff --git a/connect-examples/oauth/python-aws-chalice/chalicelib/oauthClient.py b/connect-examples/oauth/python-aws-chalice/chalicelib/oauthClient.py index f119fb59f..3d238bfc6 100644 --- a/connect-examples/oauth/python-aws-chalice/chalicelib/oauthClient.py +++ b/connect-examples/oauth/python-aws-chalice/chalicelib/oauthClient.py @@ -22,7 +22,7 @@ # initialize square oauth client square_client = Client( environment=os.environ['environment'], - user_agent_detail='sample_app_oauth_python-aws-chalice' + user_agent_detail='sample_app_oauth_python-aws-chalice' # Remove or replace this detail when building your own app ) oauth_api = square_client.o_auth diff --git a/connect-examples/oauth/python-aws-chalice/requirements.txt b/connect-examples/oauth/python-aws-chalice/requirements.txt index acdddfc74..ab0431f9b 100644 --- a/connect-examples/oauth/python-aws-chalice/requirements.txt +++ b/connect-examples/oauth/python-aws-chalice/requirements.txt @@ -1,4 +1,4 @@ chalice==1.12.0 boto3==1.11.11 -squareup == 22.0.0.20220921 +squareup==22.0.0.20220921 cryptography===3.3.2 \ No newline at end of file diff --git a/connect-examples/oauth/python/oauth-flow.py b/connect-examples/oauth/python/oauth-flow.py index 72691f22e..63d07c3f0 100644 --- a/connect-examples/oauth/python/oauth-flow.py +++ b/connect-examples/oauth/python/oauth-flow.py @@ -21,7 +21,7 @@ environment = os.getenv('SQ_ENVIRONMENT').lower() client = Client( environment = environment, - user_agent_detail = "sample_app_oauth_python" + user_agent_detail = "sample_app_oauth_python" # Remove or replace this detail when building your own app ) obtain_token = client.o_auth.obtain_token diff --git a/connect-examples/oauth/python/requirements.txt b/connect-examples/oauth/python/requirements.txt index 6580d8d42..3e1ed136f 100644 --- a/connect-examples/oauth/python/requirements.txt +++ b/connect-examples/oauth/python/requirements.txt @@ -1,3 +1,3 @@ flask -squareup == 22.0.0.20220921 +squareup==22.0.0.20220921 python-dotenv diff --git a/connect-examples/oauth/ruby/oauth-flow.rb b/connect-examples/oauth/ruby/oauth-flow.rb index e6ee33379..f8e14386e 100644 --- a/connect-examples/oauth/ruby/oauth-flow.rb +++ b/connect-examples/oauth/ruby/oauth-flow.rb @@ -30,7 +30,8 @@ end client = Square::Client.new( - environment: environment + environment: environment, + user_agent_detail: "sample_app_oauth_ruby" # Remove or replace this detail when building your own app ) oauth_api = client.o_auth diff --git a/connect-examples/v2/node_subscription/README.md b/connect-examples/v2/node_subscription/README.md index 16ffb407c..4062470f7 100644 --- a/connect-examples/v2/node_subscription/README.md +++ b/connect-examples/v2/node_subscription/README.md @@ -132,10 +132,6 @@ The application uses the following JSON in a [UpsertCatalogObject](https://devel } ``` - ``` - - ``` - - **Spa Service plan.** The plan is a two-phase subscription. The first phase identifies a 2-week free period and the second phase identifies a monthly cadence at $80. Note that when a customer subscribes to this plan, Square bills the customer only after the free 2-week phase ends. ```json diff --git a/connect-examples/v2/python_payment/requirements.txt b/connect-examples/v2/python_payment/requirements.txt index c49600ecc..ee2494b19 100644 --- a/connect-examples/v2/python_payment/requirements.txt +++ b/connect-examples/v2/python_payment/requirements.txt @@ -1,4 +1,4 @@ -squareup == 22.0.0.20220921 +squareup==22.0.0.20220921 configparser fastapi uvicorn From 5253daba20efbfc4b6e6d6231d009558565e5921 Mon Sep 17 00:00:00 2001 From: Emma Chen Date: Tue, 4 Oct 2022 12:49:19 -0600 Subject: [PATCH 4/6] fix unintentional README change --- connect-examples/oauth/python-aws-chalice/README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/connect-examples/oauth/python-aws-chalice/README.md b/connect-examples/oauth/python-aws-chalice/README.md index f5e6fb5e9..00edad438 100644 --- a/connect-examples/oauth/python-aws-chalice/README.md +++ b/connect-examples/oauth/python-aws-chalice/README.md @@ -47,7 +47,10 @@ Open `.chalice/config.json`: 1. install [**Chalice**](https://github.com/aws/chalice) and all the project dependencies, **Chalice** is a microframework for writing serverless apps in Python. We use this microframework to manage all the elasticsearch management tasks. - `bash pip install -r requirements.txt ` + + ```bash + pip install -r requirements.txt + ``` 1. Follow [**this Credentials section**](https://github.com/aws/chalice#credentials) to setup aws credentials. From 1801ab69370448a6c6a84120daeba37154870e33 Mon Sep 17 00:00:00 2001 From: Emma Chen Date: Tue, 4 Oct 2022 12:51:40 -0600 Subject: [PATCH 5/6] add ruby platform to Gem lockfile --- connect-examples/oauth/ruby/Gemfile.lock | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/connect-examples/oauth/ruby/Gemfile.lock b/connect-examples/oauth/ruby/Gemfile.lock index ab8bde6ac..d79ad6646 100644 --- a/connect-examples/oauth/ruby/Gemfile.lock +++ b/connect-examples/oauth/ruby/Gemfile.lock @@ -57,6 +57,7 @@ GEM crass (~> 1.0.2) nokogiri (>= 1.5.9) method_source (1.0.0) + mini_portile2 (2.8.0) minitest (5.16.3) multi_json (1.15.0) multipart-post (2.2.3) @@ -64,6 +65,9 @@ GEM ruby2_keywords (~> 0.0.1) net-http-persistent (4.0.1) connection_pool (~> 2.2) + nokogiri (1.13.8) + mini_portile2 (~> 2.8.0) + racc (~> 1.4) nokogiri (1.13.8-x86_64-darwin) racc (~> 1.4) racc (1.6.0) @@ -108,6 +112,7 @@ GEM zlib (2.1.1) PLATFORMS + ruby x86_64-darwin-20 DEPENDENCIES From f4a2c3ceec01b1e873c016712ffc8eb963ab882f Mon Sep 17 00:00:00 2001 From: Emma Chen Date: Tue, 4 Oct 2022 15:52:22 -0600 Subject: [PATCH 6/6] fix typo --- connect-examples/oauth/php/callback.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connect-examples/oauth/php/callback.php b/connect-examples/oauth/php/callback.php index ab6e12a07..0cf1d376d 100644 --- a/connect-examples/oauth/php/callback.php +++ b/connect-examples/oauth/php/callback.php @@ -22,7 +22,7 @@ function obtainOAuthToken($authorizationCode) { $environment = getenv('SQ_ENVIRONMENT') == "sandbox" ? Environment::SANDBOX : Environment::PRODUCTION; $apiClient = new SquareClient([ 'environment' => $environment, - 'useqrAgentDetail' => "sample_app_oauth_php" // Remove or replace this detail when building your own app + 'userAgentDetail' => "sample_app_oauth_php" // Remove or replace this detail when building your own app ]); $oauthApi = $apiClient->getOAuthApi();